传奇 Linus!用 21 行代码让 Linux 性能创造飙升 2.6%

a7a71e47774601056a6e57471ddbbfef.gif

整理 | 郑丽媛

出品 | 优快云(ID:优快云news)

作为 Linux 内核的缔造者,Linus Torvalds 的技术水平一直备受赞誉。近期,他再次用实际行动证明了自己的能力:仅通过 21 行代码的优化,就让 Linux 内核的多线程性能提升了 2.6%。

意料之中,这在开源社区中引发了广泛关注,许多开发者感慨:“大佬不愧是大佬,轻易不出手,一出手就惊艳全场。”

44216c0d4c2c18f3431201cc980fa25c.png

9c3f221f844e59d7fd5c5492297b0dc9.png

Meltdown 和 Spectre 漏洞及其影响

据了解,本次改动的核心代码提交名为 x86/uaccess:避免在 64 位 copy_from_user() 中使用 barrier_nospec()。顾名思义,Torvalds 这次的优化调整主要就是移除 copy_from_user() 函数中的 barrier_nospec()。

在进一步讨论 Torvalds 的优化之前,我们可能需要先了解一下 barrier_nospec() 的由来——它涉及到 2018 年公开的两大 CPU 漏洞 :Meltdown 和 Spectre。

2018 年,Meltdown 和 Spectre 漏洞给全球硬件和操作系统厂商带来了巨大的安全威胁,这些漏洞主要利用了现代 CPU 中的“预测执行”机制,即通过预判即将执行的代码提前载入指令和数据,从而节省实际执行时的等待时间。本质上来说,这一特性可极大提高系统的运行效率,但其缺陷在于:如果 CPU 预测错误,那么其存储在缓存中的数据就有可能被攻击者获取。基于此,Meltdown 漏洞主要影响 Intel 的 CPU,而 Spectre 漏洞则对包括 Intel、AMD、ARM 在内的多种架构均有影响。

为了缓解这些漏洞,自 2018 年以来,Linux 内核就引入了 barrier_nospec() 等方法,可用于阻止特定情况下的预测执行,从而保障系统的安全性。然而,这类补丁的引入也导致了显著的性能下降,特别是在频繁使用系统调用或多线程切换的场景下。

例如,Netflix 高级性能架构师 Brendan Gregg 就曾对 Meltdown 漏洞的 Linux 补丁 KPTI 进行测试,并明确指出该补丁确实会导致 CPU 性能显著下降:在某些极端情况下,KPTI 补丁的性能开销甚至超过 800%,而高调用频率的代理服务器和数据库等应用尤为受到影响。

8df7c933faa983533cc476d69d721e57.png

Torvalds 的优化改动及其影响

而 Torvalds 一直是性能优先的坚定支持者。他认为,安全性补丁固然非常重要,但不应以牺牲过多性能为代价。

基于此,在本次的优化调整中 Torvalds 移除了 copy_from_user() 函数中的 barrier_nospec(),而替代方法是使用指针掩码技术对地址进行处理:Linus 解释道:“64 位 copy_from_user () 中的 barrier_nospec () 函数运行速度很慢。如果地址无效,可以使用 pointer masking 来强制用户指针全为 1。”

简而言之,当检测到用户态传入无效地址时,该优化会将地址全部设置为“1”,这样就避免了无效地址引发的不必要操作。以下为 Torvalds 对代码的具体改动,可以看到整体只涉及 21 行代码:

f74a8c416f433f10ede8ccd928cc1eb7.png

据 Linux 内核的测试机器人反馈,在多线程环境下,Torvalds 这一改动在 per_thread_ops 基准测试中实现了 2.6% 的性能提升——虽然表面上看只是微小的 2.6%,但考虑到 Linux 运行在全球数百万台服务器、云服务和本地设备上,这一性能增幅将在全球范围内带来巨大效益。

Torvalds 对 x86 架构的深厚理解也是促成此次优化的关键原因之一。正因为他在处理器架构方面的技术专长,才得以在保障安全的前提下,最大限度地优化性能。这也令许多人联想到了在 Linux 基金会成立之前,Torvalds 曾收到过芯片厂商 Transmeta 的聘请:要求他为 Crusoe VLIW 芯片的构建提供底层专业知识,最终这款芯片可通过仿真来运行 x86-32 代码。

据悉,本次 Torvalds 的改动将作为性能优化的一部分发布在即将到来的 Linux 6.12 稳定版中。在 Linux 6.12 的整个开发过程中,Torvalds 已逐步通过多个 rc 版本测试和发布了各类改进功能和稳定性增强,包括其他多项修复和改进,例如对 Bcachefs 文件系统和各种 bug 的修复。

从目前来看,如果一切顺利的话, Linux 6.12 稳定版将于 11 月 17 日发布。

参考链接:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0fc810ae3ae110f9e2fcccce80fc8c8d62f97907

https://www.theregister.com/2024/11/06/torvalds_patch_linux_performance/

推荐阅读:

▶运维一觉睡醒“天塌了”!微软Windows Server更新出乱:2022就地自动升级为2025

▶2024全球机器学习技术大会最新最全的日程来了,一键Get参会指南!

▶开发者用Raspberry Pi自制「超平价」AR眼镜:成本不到100 元,连镜片都是自己做的!

生成式 AI 带来前所未有的机遇与挑战,在9月的2024全球产品经理大会上,BAT 等顶尖企业的产品大咖们分享了他们在 AIGC 领域的实战经验和深度思考!✨

没去现场的朋友们也别担心~现在加入「产品经理云会员」即可回看大会全程,随时随地学习大咖干货!云会员不仅有这次大会的完整演讲回放,还提供丰富的课程资源,帮你掌握 AIGC 最前沿趋势,提升专业技能,在智能时代中脱颖而出💪

双十一特惠来啦!现在入会立减50元!限时优惠,手慢无~

a264e06cc3dca06393cf1d464b2eaa8e.png

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值