Google 工程师 Rong Xu 建议在基于 Clang 的构建的主线 Linux 内核中添加 AutoFDO 和 Propeller 支持,因为它可以帮助系统性能提高高达 5~10% 的范围。
AutoFDO 是 Google 的一个项目,用于使用 LLVM/Clang 进行自动反馈导向优化。Google 的 Propeller 与应用程序软件的配置文件引导重新链接优化器具有类似的重点……或者使用这些补丁,Linux 内核。这些是基于编译器的优化技术,用于生成更快的二进制文件,Google 发现将 AutoFDO 和 Propeller 结合使用 Linux 内核镜像是值得的。
蓉旭在本周发出的补丁系列中解释道:
“这个补丁系列是将 AutoFDO 和 Propeller 支持集成到 Linux 内核中。AutoFDO 是一种基于配置文件的优化技术,它利用硬件采样来增强二进制性能。与基于仪器的 FDO (iFDO) 不同,AutoFDO 提供了一个用户友好且简单的申请流程。虽然 iFDO 通常具有卓越的配置文件质量和性能,但我们的研究结果表明,AutoFDO 取得了显着的有效性,使性能接近基准应用程序的 iFDO。与 AutoFDO 类似,Propeller 也利用硬件采样来收集配置文件并应用链接后优化,以提高基准测试的性能,高于 AutoFDO。
我们的经验数据显示,AutoFDO 和 Propeller 的性能显著提高,在微基准测试中提高了 10%,在大型仓库规模基准测试中提高了 5%。这为将它们作为受支持的功能包含在上游内核中提供了强有力的理由。
。
进行了实验,以比较 AutoFDO 优化的内核映像(版本 6.9.x)与默认构建的性能。该评估既包括开源微基准测试,也包括来自 Google 和 Meta 的真实世界生产服务。选定的微基准测试包括 Neper(一个网络子系统基准测试)和 UnixBench(一个用于评估各种内核操作的综合套件)。对于 Neper 来说,AutoFDO 优化使吞吐量提高了 6.1%,延迟减少了 10.6%。Unixbench 在低系统负载下的指数得分提高了 2.2%,在高系统负载下提高了 2.6%。
AutoFDO 依赖于 CPU 性能监控单元 (PMU) 的反馈来收集分析数据。与其他 FDO 技术不同,AutoFDO 不依赖于具有单个优化内核服务的插桩内核,用于执行和配置文件收集。
鉴于这些收益以及 AutoFDO / Propeller 比其他一些编译器优化技术更直接,希望这些补丁有机会在未来被主流化。
很高兴看到 Google 继续努力提高上游 Linux 内核的性能。
有关此提案的补丁和更多详细信息,请参阅此补丁系列。
徐蓉?