BOLT 合并到 LLVM,优化二进制文件以提高性能
开发 开发工具
Facebook 开发的工具 BOLT 现已被合并到 LLVM 的 mono 仓库,共包含 89.5 万行新代码;作为 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

责任编辑:未丽燕 来源: 开源中国

同话题下的热门内容

为什么中国没做出自己的操作系统?盘点 Ssh 客户端工具,你知道几个?阿里云EMR Remote Shuffle Service在小米的实践更快的 Maven 构建工具 Mvnd和 Gradle,哪个性能更好?新来个技术总监:谁在用isXxx形式定义布尔类型年后不用来了因无人愿意开发,Hadoop 管理工具 Apache Ambari 顶级项目即将退役软件工程师应该如何吵架?Java依赖冲突高效解决之道

编辑推荐

终于有人把Elasticsearch原理讲透了!花了一个星期,我终于把RPC框架整明白了!拜托!面试不要再问我Spring Cloud底层原理论如何下载一个在线的m3u8文件到本地成为一个mp4!中台是个什么鬼?你想知道的都在这里!
我收藏的内容
点赞
收藏

51CTO技术栈视频号