Facebook 作为积极贡献 Linux 内核的厂商,近年来,其工程师一直在持续研究 BOLT,将此作为加速 Linux/ELF 二进制文件的方法。
BOLT 即"Binary Optimization and Layout Tool"(二进制优化和布局工具)的缩写,能够在配置文件后重新排列可执行文件,产生比编译器的 LTO 和 PGO 优化所能达到的更快性能。
BOLT 的最新目标之一是对 Linux 内核镜像进行优化。
与对 Linux 内核进行配置文件引导优化 (PGO) 时产生的挑战类似,对 Linux 内核进行 BOLT 处理也面临着类似的复杂障碍,包括:正确地分析/采样具有相关工作负载的内核并进行优化、内核的大量代码库、模块与核心内核代码等对比。现有的 BOLT 只专注于优化 ELF 应用程序可执行文件。
在本周的 Linux Plumbers Conference 大会上,有来自 Facebook 的工程师讨论了对内核的 BOLT 处理,带来的性能提升如下图所示:
从数据可以看出,这是一项值得持续投入研究的工作,因为 Facebook 在 PGO+LTO 编译器优化之上通过 BOLT 优化获得了"两位数的速度提升"。此处的速度提升是通过优化可执行文件的代码布局来实现的,可更有效地使用硬件页面和指令缓存。
如果你对 Facebook 的 BOLT 优化工具感兴趣,或者对未来能够完全使用 BOLT 优化内核的前景感兴趣,可查阅 Facebook 工程师制作的幻灯片(地址)。BOLT 代码也已开源 https://github.com/facebookincubator/BOLT。
本文地址:https://www.oschina.net/news/161743/facebook-bolting-the-kernel