Fedora 开发人员正在考虑为 Fedora 37 的默认编译标志添加一个选项,该选项可以增强生成包的性能分析和调试能力,但可能会产生性能开销影响——根据之前的数据可能会降低几个百分点。
正在评估的更改提案是关于将“-fno-omit-frame-pointer”添加到默认编译标志作为系统范围的更改。此编译器选项将确保 C/C++ 程序的帧指针始终可用,以便调试/分析工具可以使用它来提供准确的性能数据。
他们希望这将导致核心库和可执行文件的性能改进,但不省略帧指针可能会对性能产生影响。不的默认行为使用帧指针可以为每个函数节省三个指令,并且可以将 RBP 帧/基指针寄存器视为通用寄存器,用于其他用途。
Meta/Facebook 内部基准测试发现,使用“-fno-omit-frame-pointer”进行构建并没有影响到两个性能最密集的应用程序。但 2017 年来自具有 Linux 4.18 内核的 SUSE 的数据显示,在某些基准测试中存在 5~10% 的回归。
Fedora 开发人员确实承认此更改会使某些工作负载退化的风险,更改提案建议个别软件包如果发现其性能显着受损,可以选择退出此编译器标志更改。Facebook/Meta 工程师正在建议 Fedora 37 的更改提案。
中已经有很多关于默认情况下提议的“-fno-omit-frame-pointer”行为及其可能对性能产生的负面影响的讨论。有多个人呼吁进行更多的性能测试,以更好地量化潜在影响,包括 Phoronix 基准测试。
我自己没有查看“-fno-omit-frame-pointer”成本,但会将其放在我的 TODO 列表中以进行一些初始基准测试,至少对于在独立工作负载上使用“-fno-omit-frame-pointer”的影响/benchmarks 虽然这可能无法捕捉到使用此更改重建整个操作系统的全部影响,但至少它会有一个起点。考虑到以更好的性能分析和调试体验的名义可能对最终用户造成的性能影响,看看这个提议的 Fedora 37 更改将决定什么将会很有趣。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun174512.html