资深 Linux 内核维护者 Ingo Molnar 近日在邮件列表介绍了一个包含 2297 个补丁的巨大补丁集,旨在提升 Linux 构建速度和解决依赖地狱问题。
Ingo Molnar 将此补丁集命名为「Fast Kernel Headers」,并表示自己从 2020 年底就启动了这个项目,这是对 Linux 内核的头文件层次结构和头文件依赖项的全面改造,具有双重目标:
- 加速 Linux 内核构建(包括完全构建和增量构建)
- 将子系统类型 (subsystem type) 和 API 定义相互解耦
在 Linux 内核邮件列表中,Ingo Molnar 介绍了「Fast Kernel Headers」的诞生背景:“大多数内核开发者应该都知道,Linux 内核有大约 1 万个 main.h 头文件,它们位于 include/ 和 arch/*/include/ 这样的层次结构中。过去的 30 多年里,这些头文件已经发展成为复杂而痛苦的交叉依赖,社区称之为“依赖地狱”。”
根据 Ingo 提供的数据,与当前内核相比,启用"Fast Kernel Headers"补丁的内核构建每小时可有 78% 的改进。在所支持的架构上,完全的内核构建性能可提升 50~80%。
这个巨大的补丁集将许多高级头文件与其他文件解耦、取消了不必要的函数、将类型和 API 头文件解耦、自动处理头文件依赖,以及其他各种变化。到目前为止,它已经在 x86/x86_64、SPARC、MIPS 和 ARM64 架构上进行了测试。
「Fast Kernel Headers」可能是有史以来代码规模最大的一个 Linux 内核功能,并且能显著改进内核构建时间,所以不少开发者希望这个补丁集能够在不远的将来以某种方式进行审查后,顺利进入主线内核。