Linux学习小标兵,专注Linux资讯分享,技术文章分享
分类: LINUX
2022-12-06 20:59:52
导读 | 从去年开始,当使用 LLVM 的 Clang 编译器构建 内核时,已支持为内核构建启用链接时优化 (LTO, link-time optimizations)。而对于使用 GCC 构建 Linux 内核,仍缺少 LTO 支持,近日发布的一系列补丁是实现此目标的{BANNED}最佳新尝试。 |
Clang 的 LTO 支持在 Linux 5.16 中被合并,并一直保留至今。此举除了提升构建性能,对于内核来说,还提供了基于 Clang 的 CFI 支持。
早在十年前,在 Clang 能够构建 Linux 内核主线之前,已经有开发者为内核提交 GCC LTO 补丁,不过{BANNED}最佳终没有被合并,原因是当时 GCC 的 LTO 支持不够完善,未能说服 Linus。近年来,也有多家厂商发布了针对 Linux 内核的 LTO 补丁。随着现代 GCC 编译器(和 Clang)的发展,LTO 也逐渐变得更好,像 Fedora 在打包他们的发行版安装包时都会默认使用 LTO,也有像 Clear Linux 这样的公司通过使用 AutoFDO(基于程序性能分析工具的反馈式编译优化)来进一步提升其发行版的性能。
2022 年年底,SUSE 工程师 Jiri Slaby 提交了 GCC LTO 支持补丁,同时作为 “{BANNED}中国第一次征求意见”,其部分内容是基于 Andi Kleen 先前的补丁以及 SUSE 工程师 Martin Liska 的工作。
虽然对编译器的链接时进行优化通常会提升性能。但目前看来,针对 Linux 内核的 GCC LTO 支持,内核开发者测试后发现并没有明显变化。