sysBoost 是在 openEuler 社区发起的创新项目,它是一个针对 CPU 微架构的程序优化工具,帮助用户无感提升业务性能。 推荐人 : gitee id: liu-yuntao-10 email: liuyuntao10@huawei.com gitee id: softkiller email: zhoukang7@huawei.com gitee id: pan-y182 email: yangpan51@huawei.com
社区地址 : https://gitee.com/openeuler/sysboost
推荐奖项 : openEuler 年度新建项目 / 年度技术创新项目
开源开放 本项目采用木兰开源协议,代码托管在 openEuler 行业影响 本项目部分功能已经在 openEuler 23.09 版本交付,支持 bash 等应用的性能优化,后续会继续完善功能,新增更多场景的支持。 技术创新 本项目使用了多项前沿技术以提升用户业务进程性能,已交付的有二进制合并、代码段 / 数据段大页、内存预加载等;规划中的有指令动态优化、系统级统一动态库等。开发工具上,也尽可能地采用较为前沿的 rust 语言开发 。 社区活跃 有 8 位社区开发者参与过 sysBoost 项目。 高质量开发和运营 代码符合社区规范,且满足安全等质量要求,代码检视流程完整,文档详尽,均托管在 openEuler 。
sysBoost 介绍 : 目前 linux 操作系统的用户很难对自己的程序针对 CPU 微架构进行优化,存在以下痛点:
大型 APP 应用,使用大量的第 3 方或自研动态库,函数调用产生大量 PLT 跳转导致 IPC 指令执行效率下降。 汇编代码体积大内存占用大,导致 iTLB miss 概率高。热点代码段布局离散,导致 iCache miss 高,影响 CPU 流水线执行效率。 应用开发者对操作系统与 CPU 微架构不熟悉, IPC 性能调优成本过大。 sysBoost 通过整合一系列微架构优化手段,帮助用户无感提升业务性能。
当前 sysBoost 已经实现的技术如下,通过这些技术能够达到 UNIX BENCH 提升 5%+ , mysql 基线性能提升 15%+ 的效果:
二进制合并:应用代码调用动态库函数的流程,需要先跳转 PLT 表,然后跳转真实函数。通过实时合并应用和动态库的方式,可以消除 PLT 跳转,提升性能。 内存预加载:进程启动时会触发大量的缺页中断,在某些进程启动频繁的场景,缺页中断的耗时可能超过 50% 。通过预加载一些内存页面,可以提升应用的启动速度。 exec 原生大页:用户态大页机制需要应用修改配置和重编译, exec 原生大页机制直接在内核加载 ELF 文件阶段使用大页内存,对 APP 透明。
后续 sysBoost 还规划了更多的性能优化特性,帮助用户进一步提升业务性能:
指令动态优化:进程运行时,动态将热点指令重排到临近区域,提升缓存利用率。 系统级统一动态库:将系统中所有的动态库动态合并成一个统一动态库,消除 PLT 跳转的同时,提供了进一步使用大页、动态优化等机制优化的空间。该优化对系统中所有进程都能够生效,无须单独配置。