Linus Torvalds 仅用 21 行代码优化 Linux 内核多线程性能,提升 2.6%

   日期:2024-11-15     来源:网络整理    作者:二手钢材网    浏览:216    评论:0    
核心提示:意料之中,这在开源社区中引发了广泛关注,许多开发者感慨:“大佬不愧是大佬,轻易不出手,一出手就惊艳全场。预测错误,那么其存储在缓存中的数据就有可能被攻击者获取。一直是性能优先的坚定支持者。行代码:运行在全球数百万台服务器、云服务和本地设备上,这一性能增幅将在全球范围内带来巨大效益。

出品| CSDN(ID:)

作为Linux内核的创建者,Linus的技术水平一直受到高度评价。近日,他再次用实际行动证明了自己的能力:仅通过优化21行代码,就将Linux内核的多线程性能提升了2.6%。

不出所料,这引起了开源社区的广泛关注。不少开发者感叹:“老板果然是老板,不轻易出手,但一旦出手,却让所有人惊叹不已。”

和漏洞及其影响

据了解,此次更改的核心代码提交称为x86/:避免在64位中使用()。顾名思义,本次优化调整主要是去掉()函数中的()。

在进一步讨论优化之前,我们可能需要了解一下()的由来——它涉及到2018年披露的两个重大CPU漏洞:和。

2018年,漏洞和漏洞给全球硬件和操作系统厂商带来了巨大的安全威胁。这些漏洞主要利用现代CPU中的“预测执行”机制,即通过预测要执行的代码来提前加载指令和数据。这节省了实际执行过程中的等待时间。本质上,这个功能可以极大地提高系统的运行效率,但它的缺陷是,如果CPU预测错误,缓存中存储的数据可能会被攻击者获取。由此看来,该漏洞主要影响Intel CPU,同时影响Intel、AMD、ARM等多种架构。

为了缓解这些漏洞,从2018年开始,Linux内核引入了()等方法,可以用来防止特定情况下的预测执行,从而保证系统的安全。但此类补丁的引入也会导致性能明显下降,尤其是在频繁使用系统调用或多线程切换的场景下。

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

优化变化及其影响

并且一直是性能优先的坚定支持者。他认为安全补丁很重要,但不应以牺牲太多性能为代价。

基于此,()函数中的()在本次优化调整中被去掉,替代方案是使用指针掩码技术来处理地址:Linus解释道:“64位()中的()函数运行非常慢。如果地址无效,可用于强制用户指针全部为 1。

简而言之,当在用户模式下检测到无效地址时,该优化会将所有地址设置为“1”,从而避免无效地址带来的不必要的操作。下面是代码的具体修改。可以看到只涉及21行代码:

根据Linux内核测试机器人的反馈,在多线程环境下,这一改变在基准测试中实现了2.6%的性能提升——尽管表面上看起来只有微小的2.6%,考虑到Linux正在数百万台计算机上运行跨服务器、云服务和本地设备,这种性能的提升将为全球带来巨大的好处。

对x86架构的深入理解也是此次优化的关键原因之一。正是因为他在处理器架构方面的技术专长,才能够在保证安全的同时,最大化性能。这也让不少人想起,在Linux基金会成立之前,他就收到了一家芯片厂商的邀请:要求他为VLIW芯片的构建提供底层专业知识。最终,该芯片可以通过模拟运行x86-32代码。

据悉,这一变化将在即将发布的 Linux 6.12 稳定版中发布,作为性能优化的一部分。纵观Linux 6.12的开发过程,各种改进和稳定性增强已经通过多个rc版本逐步测试和发布,其中包括许多其他修复和改进,例如对文件系统和各种Bug的修复。

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

参考链接:

 
打赏
 
更多>同类资讯

0相关评论
推荐热播视讯

推荐视频

    Copyright © 2017-2020  二手钢材网  版权所有  
    Powered By DESTOON 皖ICP备20008326号-2