大家好,我是民工哥!
不愧是 Linux 之父!仅修改 21 行代码,Linux 性能暴涨 2.6%!
Linux 操作系统的性能优化一直是一个复杂而精细的过程,需要深入理解系统的内部机制。
作为 Linux 内核的缔造者,Linus Torvalds 的技术水平一直备受赞誉。近期,他再次用实际行动证明了自己的能力:仅通过 21 行代码的优化,就让 Linux 内核的多线程性能提升了 2.6%。
近日,Linus Torvalds 向 Linux 内核合并了自己编写的一个补丁,该补丁号称通过修改几行代码,就在英特尔的性能基准测试中实现了 2.6% 的性能提升。
根据介绍,这个补丁的目的是避免在 64 位 copy_from_user ()
函数中使用 barrier_nospec ()
。copy_from_user ()
用于将数据块从用户空间复制到内核空间。
此补丁是一项安全调整,旨在应对 2018 年曝出的 Meltdown 和 Spectre 等安全漏洞。遗憾的是,这些问题不仅没有消失,而且根据外媒上个月的相关报道,此类攻击活动仍然存在。
Meltdown 和 Spectre 是近年来在 Intel、AMD、Apple 和 ARM 处理器中发现的严重安全漏洞。这些漏洞源于芯片的设计缺陷,几乎所有 PC 和智能手机用户都受其影响。
特别是由于 Intel 和 IBM POWER 处理器在市场中的广泛应用,因此这一硬件缺陷对信息安全的影响范围极大。
除更换 PC 处理器以外,消除漏洞的唯一方法是修补操作系统。
为了缓解这些漏洞,自 2018 年以来,Linux 内核就引入了barrier_nospec()
等方法,可用于阻止特定情况下的预测执行,从而保障系统的安全性。然而,这类补丁的引入也导致了显著的性能下降,特别是在频繁使用系统调用或多线程切换的场景下。
Torvalds 一直是性能优先的坚定支持者。他认为,安全性补丁固然非常重要,但不应以牺牲过多性能为代价。
为了解决这一问题,Torvalds 提出了一个巧妙的解决方案:在地址无效的情况下,利用 pointer masking 技术来强制用户指针全为 1,从而规避了 barrier_nospec 的使用,提升了运行效率。
目前,这项备受瞩目的补丁已经成功合并至 Linux Git 仓库。即将在11月17日发布的Linux 6.12稳定版,将正式包含此次性能优化的改动。
此外,在6.12的开发过程中,Torvalds还陆续推出了多项改进和稳定性增强措施,包括对Bcachefs文件系统的优化以及多个bug的修复。