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%。"

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Multicore OCaml 被合并进上游
Multicore OCaml 已正式被合并进 OCaml 主线。 根据之前的报道,此 PR 通过 domain 增加了对并行共享内存的支持,并通过 effect handler(无语法支持)增加了对并发 (direct-style concurrency) 的支持。Multicore OCaml 还打算向后兼容——包括语言特性、C API 以及单线程代码的性能方面。 有关 Multicore OCaml 的详细信息可查看其 Wiki中的论文、演讲、教程和博客文章。 如果对使用Multicore OCaml感兴趣,可查看以下正在开发中的库: domainlib—— 嵌套任务并行库 eio——异步 io (direct-style) 下图是 sandmark 的多核可扩展性测试结果,该测试在一台 64 核的 AMD EPYC 7551 服务器上进行。 基准名称旁边括号内的数字是相应基准的连续基线所用时间(以秒为单位) 据介绍,Multicore OCaml 不会预设任何一种并发模型,但会为用户和库作者提供自由实现的能力,这也是为 OCaml 引入的并发与并行支持。
- 下一篇
Apache PLC4X 作者将停止免费的社区支持,要求企业用户为其劳动付费
自 Faker.js 作者清空项目仓库代码后,又一位软件作者因企业白嫖项目而没有任何回馈而感到失望。1 月 11 日, Apache PLC4X 的创建者 Christofer Dutz 在 GitHub 发文,称由于得不到任何形式的回报,他将停止对 PLC4X 的企业用户提供免费的社区支持。若后续仍无企业愿意站出来资助项目,他将停止对 PLC4X 的维护和任何形式的支持。 Apache PLC4X 是一个用于集成 PLC(可编程逻辑控制器)的库。工业的可编程逻辑控制器(PLC)大多采用大量不兼容的协议进行通信,因此和外界(IT/互联网)的交互变得很困难。PLC4X 项目致力于提供一组统一的 API,通过这些 API 实现能与大多数 PLC 进行通信的驱动程序(通过各种 PLC 的原生通信协议)。 和纯软件项目还不太一样,由于 PLC4X涉及物联网和精密的自动化硬件,Christofer不得不购买一些昂贵的软硬件来对 PLC4X 项目进行测试和维护,这让他的财政状况每况愈下。为此 Christofer 注册了一家名为 c-ware 的独立 IT 咨询公司,帮助其他公司设计和实现 PLC...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 设置Eclipse缩进为4个空格,增强代码规范
- MySQL8.0.19开启GTID主从同步CentOS8