HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

Linus 大佬展现恐怖业务实力:只改动 21 行代码,Linux 性能狂升 2.6%

  • 2024-11-12
    北京
  • 本文字数:1759 字

    阅读完需:约 6 分钟

大小:819.11K时长:04:39
Linus大佬展现恐怖业务实力:只改动21行代码,Linux性能狂升2.6%

短短 21 行代码,再次证明这位开源大佬恐怖的业务实力。

 

开源大师 Linus Torvalds 提交的一段简短代码变更,显著提高了 Linux 系统的多线程性能。

 

此番提交的代码拥有一个朗朗上口的名号 x86/uaccess:避免在 64 位 copy_from_user()中使用 barrier_nospec()。此补丁是一项安全调整,旨在应对 2018 年曝出的 Meltdown 和 Spectre 等安全漏洞。遗憾的是,这些问题不仅没有消失,而且根据外媒上个月的相关报道,此类攻击活动仍然存在。

 

Meltdown 和 Spectre 是近年来在 Intel、AMD、Apple 和 ARM 处理器中发现的严重安全漏洞。这些漏洞源于芯片的设计缺陷,几乎所有 PC 和智能手机用户都受其影响。特别是由于 Intel 和 IBM POWER 处理器在市场中的广泛应用,因此这一硬件缺陷对信息安全的影响范围极大。

 

另外该缺陷的危险程度之高(无需特权即可访问敏感资料所在的存储器空间),曾一度令信息安全人员及机构怀疑缺陷的真实性。

 

除更换 PC 处理器以外,消除漏洞的唯一方法是修补操作系统,包括 Linux 系、Android、OS X/macOS、Windows 等等都有相应的修复程序(像是 Linux 的内核页表隔离技术),但是软件规避将导致处理器性能的显著下降。

 

Netflix 工程师 Brendan Gregg 曾表示,Linux 针对 Meltdown 的缓解措施 KPTI 导致了“我见过的最大的内核性能倒退”,尤其是在高系统调用率、上下文切换率、页面错误率和工作集大小的情况下。缓解 Meltdown 的 KPTI 补丁可能会带来巨大的开销,从 1% 到 800% 不等。多年来,社区也一直在探索减少 Meltdown 带来的开销的办法。

 

此次 Linus 的补丁是对红帽开发人员 Josh Poimboeuf 此前提交补丁的重写,大佬对其进行了修改以提升性能表现。他在提交中写道,“内核测试机器人报告称,per_thread_ops 基准测试性能提高了 2.6%。”

 

从本质上讲,Torvalds 找到了一种在不影响性能的情况下实现相同安全结果的方法。这可能会对需要高性能和强大安全性的 Linux 系统(例如 Web 服务器)产生影响。很少有人对 Linux 和 x86 CPU 架构有如此深入的了解,以至于他们可以在这个层面上获得性能提升。

 

小改动大幅提升 Linux 性能

 

总之,这个优化就是一个典型的“小优化,大收益”的例子。

 


- 即使在实际环境中只有 2.6% 的性能提升,也能节省数亿美元的电力和 HVAC 成本。

- 这位朋友一个人就把气候变化延缓了几天。

 


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

 

Linus 的版本不再使用 barrier_nospec() API,新补丁可防止某些机器码发生推测执行。所谓推测执行是现代 CPU 中的一项功能,其使用分支预测来尝试预判未来可能需要运行哪些程序代码,以便提前运行并缓存其结果。如果预测正确则可以节约时间;如果预测不正确,则结果将被丢弃。问题是,这会带来一种特殊形式的安全问题,科学家们则一直在为此寻求解决办法。

 

相反,如果因地址无效而不允许调用 copy_from_user(),则该补丁会使用指针掩码返回内容为全 1 的地址。

 

防御此类攻击显然是种不得已而为之的手段。作为 Web 服务器等应用场景下的主要操作系统,Linux 必须锁定此类机器以抵御任何可能出现的攻击,甚至不惜以牺牲性能增强功能为代价。这虽然能让服务器更安全,但也使其运行速度更慢。Linus 则向来反对这种用性能换安全的“拙劣”方案。

 

(在不接受入站连接的本地独立台式机或者笔记本电脑上,大家可以关闭这些功能,在相对安全的环境下获得更好的性能——但前提是各位要清楚自己在做什么,并接受这种发生概率不大、但却客观存在的风险。)

 

虽然这次解决的不算什么大问题,但仍然解释了为什么这位 Linux 内核掌门人有资格每年从 Linux 基金会手中赚取过百万美元。确实很少有人拥有他这样的技术和知识水平,特别是在 x86 架构领域。而且拥有同等水平的顶尖精英也多数在为各大芯片开发巨头服务。他们签署了保密协议,所以无权介入此事。也正因为如此,在加入 Linux 基金会之前,Linus 还曾经收到过芯片供应商 Transmeta 抛出的橄榄枝。他为该公司提供了构建 Crusoe VLIW 芯片所必需的底层专业知识,使得该款芯片成功获得了对 x86-32 代码的模拟能力。

 

参考链接:

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

https://www.zdnet.com/article/linux-meltdown-patch-up-to-800-percent-cpu-overhead-netflix-tests-show/

2024-11-12 10:462581

评论

发布
暂无评论

爱币(LOVE COIN)全球同步耀世上线,掀起币圈追捧热潮

Geek_116789

go defer 的使用和陷阱

曲镇

Go 语言

性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?

极客李

架构师第七周 作业

冯凯

k8s 上运行我们的 springboot 服务之——flume 读取kafka数据批量同步到clickhouse

柠檬

kafka Clickhouse

第七周作业

晨光

Summary

Kiroro

一文吃透时间复杂度和空间复杂度

书旅

数据结构 算法 时间复杂度 数据结构与算法

web 性能压测工具

莫莫大人

第七周·周总结

刘璐

Week 07 命题作业

Jeremy

脑洞:基于DDD进行组织架构治理

冯文辉

组织转型 领域驱动设计 DDD

SQL查找还在用count吗?

Bruce Duan

SQL查询是否存在

lambda基本使用

Bruce Duan

Lambda

第七周·命题作业·写 web 性能压测工具

刘璐

一文入门DNS?从访问GitHub开始

Kerwin

后端 DNS DNS服务器

你在寻找本地部署的后台测试工具吗?

测试那些事儿

SpringBoot教程:MyBatis多数据源配置

Bruce Duan

mybatis SpringBoot 2 多数据源配置

charles断点使用方法

rainbow

Week 07 学习总结

Jeremy

ChaosBlade:从零开始的混沌工程(四)

郭旭东

云原生 混沌工程 ChaosBlade

架构师训练营第 7 周学习总结

Season

架构师 第七周总结

冯凯

Java 基础

Bruce Duan

java基础

系统性能优化总结

极客李

第七周总结

Acker飏

JVM系列之:Contend注解和false-sharing

程序那些事

Java JVM 性能调优 GC

新站上线通知

Damon

第七周总结

晨光

作业一

Kiroro

压测工具

Acker飏

Linus大佬展现恐怖业务实力:只改动21行代码,Linux性能狂升2.6%_开源_核子可乐_InfoQ精选文章