在 Linux x86_64 内核中,针对特定微体系结构的优化非常普遍,英特尔和 AMD CPU 系列都采用了各种性能技巧,而 ARM64 Linux 内核维护者却反对引入新的特定微体系结构优化,因为这会影响到新的 ARM 处理器。
Ampere Computing 发送了一组 4 个补丁,为其新的 AmpereOne 服务器处理器提供优化。Ampere Computing 发现,当使用 4K 页面大小时,这些新的高内核数 ARM 服务器处理器可以从积极的预取中获益。据报告,在连续读取性能测试中,使用 HugeTLB 或 Tmpfs 的收益"高达 1.3 ~ 1.4 倍"。
测试结果显示,在 hugetlb 或 tmpfs 中,我们可以将连续读取性能大幅提升至 1.3x ~ 1.4x。虽然这些提升对于增强 AmpereOne Linux 性能来说令人兴奋,但目前看来,这项工作不会被上传到主线 Linux 内核中。
著名的 ARM Linux 内核开发人员 Will Deacon 就 AmpereOne CPU 的性能增强补丁发表了自己的看法:
"我们倾向于回避 arm64 内核中针对微体系结构的优化,因为这些优化非常难以维护,难以正确测试,通常会导致臃肿,并为更新我们的库例程增加额外的障碍。
诚然,我们在 copy_page()(伪装成 ARM64_HAS_NO_HW_PREFETCH)中为 Thunder-X1 提供了一些帮助,但坦率地说,那台机器需要一切可以得到的帮助。
因此,我真的不希望合并;现代 CPU 在复制数据方面应该做得更好。这是 copy_to_user(),不是火箭科学。"
ARM 的马克-拉特兰(Mark Rutland)也同意Deacon的说法,并赞同取消 Thunder-X1 的针对性优化。内核开发人员 Marc Zyngier 也表示同意,并已在开发一个补丁,以删除 Thunder-X1 的特定代码。
为了保持代码的可维护性,避免 ARM64 Linux 内核代码过于复杂,他们不再追求 CPU/微体系结构的特定优化。未来是否会有任何专注于 ARM Linux 的发行版自身携带此类补丁,或者任何经过 AmpereOne 优化的 Linux 发行版继续向前发展值得关注。特别是考虑到 Ampere 专注于高性能和高能效的 ARM Linux 服务器很可能不希望留下任何优化的痕迹,尤其是考虑到他们的目标是与 AMD EPYC 和 Intel Xeon 服务器竞争。