当前位置:首页 > 人工智能

BOLT 合并到 LLVM,优化二进制文件以提高性能

Facebook 开发的合并化进工具 BOLT 现已被合并到 LLVM 的 mono 仓库,共包含 89.5 万行新代码;作为 LLVM 的制文上游,以促进其未来发展。高性

作为积极贡献 Linux 内核的合并化进厂商,Facebook 的制文工程师近年来一直在研究 BOLT(可以追溯到 2018 年),致力于通过优化 GCC 和 Clang 生成的高性二进制文件的代码布局来加快 Linux 二进制文件的速度,以提高 CPU 缓存使用率和其他考虑因素。合并化进BOLT 使用了几个 LLVM 库,制文但在过去的高性几年里一直在树外开发。

BOLT 即"Binary Optimization and 合并化进Layout Tool"(二进制优化和布局工具)的缩写,能够在配置文件后重新排列可执行文件,制文产生比编译器的高性 LTO 和 PGO 优化所能达到的更快性能。

而据了解,合并化进自 2020 年以来,制文Facebook 方面就开始致力于将 BOLT 作为一个新的网站模板高性子项目纳入 LLVM 的上游。与此同时,其甚至围绕 BOLT 优化 Linux 内核等领域,取得了一些不错的进展。在此前的 Linux Plumbers Conference 大会上,有来自 Facebook 的工程师讨论了对内核的 BOLT 处理,带来的性能提升如下图所示:

从数据可以看出,这是一项值得持续投入研究的工作,因为 Facebook 在 PGO+LTO 编译器优化之上通过 BOLT 优化获得了"两位数的速度提升"。此处的速度提升是通过优化可执行文件的代码布局来实现的,可更有效地使用硬件页面和指令缓存。在进入 LLVM 的上游之后,站群服务器BOLT 的前景也变得更令人期待。

关于其设计的更多背景信息和技术细节,可参见 Facebook 的这份研究论文。Facebook 在其数据中心使用 BOLT 的报告中说:"对于数据中心的应用,BOLT 在配置文件引导的函数重新排序和 LTO 的基础上实现了高达 7.0% 的性能加速。对于 GCC 和 Clang 编译器,我们的评估显示 BOLT 在 FDO 和 LTO 的基础上将其二进制文件的速度提高了 20.4%,如果二进制文件是在没有 FDO 和 LTO 的情况下构建的,则提高了 52.1%。"

本文转自OSCHINA

本文标题:BOLT 合并到 LLVM,优化二进制文件以提高性能

本文地址:https://www.oschina.net/news/178443/bolt-llvm

分享到:

滇ICP备2023006006号-16