当前位置: 首页 > 科技观察

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

时间:2023-03-13 00:49:16 科技观察

Facebook开发的工具BOLT现在已经合并到LLVM的mono存储库中,总共有895,000行新代码;LLVM的上游,以促进其未来的发展。作为积极为Linux内核做出贡献的供应商,Facebook工程师近年来(可追溯到2018年)一直在研究BOLT,专注于通过优化GCC和Clang生成的二进制文件的代码布局来提高CPU性能来加速Linux二进制文件。缓存使用和其他注意事项。BOLT使用了几个LLVM库,但在过去几年中已经从树中开发出来。BOLT是“二进制优化和布局工具”的缩写,能够在分析后重新排列可执行文件,从而产生比编译器的LTO和PGO优化所能达到的更快的性能。据了解,自2020年以来,Facebook一直致力于将BOLT作为一个新的子项目纳入LLVM的上游。与此同时,它甚至在围绕BOLT优化Linux内核等领域取得了一些不错的进展。在之前的LinuxPlumbersConference上,来自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