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

责任编辑:未丽燕 来源: 开源中国
相关推荐

2023-09-18 23:50:25

二进制文件裁剪Layout

2009-12-16 10:49:42

Ruby操作二进制文件

2009-08-12 18:06:53

C#读取二进制文件

2020-09-14 08:59:11

SAN存储存储区域网络

2024-02-01 09:04:12

2013-04-28 15:37:35

JBoss

2009-12-10 09:24:50

PHP函数fwrite

2020-05-22 18:00:26

Go二进制文件编程语言

2023-12-26 15:10:00

处理二进制文件

2009-11-02 11:27:42

VB.NET二进制文件

2009-02-27 09:37:33

Google二进制代码

2018-10-22 14:37:16

二进制数据存储

2022-10-31 08:02:42

二进制计算乘法

2017-04-11 10:48:53

JS二进制

2022-07-26 13:00:01

安全符号源代码

2010-06-09 13:02:29

MySQL启用二进制日

2010-10-13 15:45:23

MySQL二进制日志

2011-08-29 11:51:12

DBOperate将图片以二进制存入数据

2019-03-14 15:38:19

ReactJavascript前端

2017-12-21 10:52:52

nginx日志还原
点赞
收藏

51CTO技术栈公众号