2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:463384

评论

发布
暂无评论
发现更多内容

MySQL主从架构原理

无心

MySQL

金三试水Java社招,历经“阿里+字节+bigo”等5家面经

Java架构师迁哥

力扣(LeetCode)刷题,简单+中等题(第26期)

不脱发的程序猿

面试 LeetCode 28天写作 算法面经 3月日更

一个视频带你编译自己的Android系统!

刘望舒

android Android进阶

操作系统的内存管理(中)

鲁米

操作系统 内存管理

位运算符在 JS 中的妙用

浩浩子

音视频开发经验之路【三】吐血干货,直播首屏耗时400ms以下的优化实践

鱼哥

音视频

第八章作业—张红珊

zzz

框架是教科书,但是思考架构更有价值

吴脑的键客

架构师 知识图谱

区块链列入数字经济重点产业 机构预测其大规模应用将加速

CECBC

数字经济

Java 并发基础(一):synchronized 锁同步

看山

Java Java并发 并发编程

使用 Typescript 的一些注意事项

浩浩子

加密解密之 crypto-js 知识

浩浩子

我对PageRank 算法的理解

跳蚤

用栈、回溯算法设计迷宫程序

不脱发的程序猿

回溯算法 28天写作 3月日更 迷宫程序

『BATcoder』都2021年了,是时候安装Ubuntu了!

刘望舒

android Android进阶

刘华:看板那么好,为什么都成了摆设?

刘华Kenneth

架构 敏捷 精益 看板

SpringBoot + Mybatis + Druid + PageHelper在多数据源下如何配置并实现分页

北游学Java

Java mybatis spring Boot Starter

是时候下载Android11系统源码和内核源码了~

刘望舒

android Android进阶

在公司九年被裁是谁的问题?

石云升

离职 28天写作 职场经验 3月日更

你真的知道基于区块链的「云计算」是什么吗?

CECBC

云计算

推荐引擎概述

跳蚤

Img、net & page新展望:连接感知

云小梦

JavaScript html 网络 用户体验 连接感知

ARTS-week 4

steve_lee

深圳应用区块链提升政务服务效能调查

CECBC

电子发票

智能时代的TCL之舞

脑极体

如何学习数据结构与算法

C语言与CPP编程

数据结构 算法

shell学习

我是程序员小贱

3月日更

2021拼多多(Java岗)面经最新分享

比伯

Java 编程 架构 面试 计算机

MySQL 锁

无心

MySQL

Redis 作为缓存是如何工作的

escray

redis 学习 极客时间 3月日更 Redis 核心技术与实战

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