sysBoost是在openEuler社区发起的创新项目,它是一个针对CPU微架构的程序优化工具,帮助用户无感提升业务性能。 推荐人: gitee id: liu-yuntao-10 email: liuyuntao10@huawei.commailto:liuyuntao10@huawei.com gitee id: softkiller email: zhoukang7@huawei.commailto:zhoukang7@huawei.com gitee id: pan-y182 email: yangpan51@huawei.commailto: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跳转的同时,提供了进一步使用大页、动态优化等机制优化的空间。该优化对系统中所有进程都能够生效,无须单独配置。