AICon议程上新60%,阿里国际、360智脑、科大讯飞、蔚来汽车分享大模型探索与实践 了解详情
写点什么

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

评论

发布
暂无评论

全新 OceanBase 社区版开发者中心 ODC 核心功能解读

OceanBase 数据库

oceanbase OceanBase 开源 OceanBase 社区版

【工具- selenium】selenium 入门级demo练习,包教包会

测试猿温大大

面试 测试工程师 selenium

【面试-八股文】mysql 万字总结,助你吊打面试官

测试猿温大大

MySQL 面试

【面试-性能测试工程师】如何在项目中练手性能测试,莫慌

测试猿温大大

面试 性能测试 测试工程师

【模拟面试-2年测试工程师】「脱产1年」如何能拿下offer

测试猿温大大

资产管理系统开发解决方案

低代码小观

企业管理 资产管理 CRM系统 企业管理软件

抓到Netty一个隐藏很深的内存泄露Bug | 详解Recycler对象池的精妙设计与实现

bin的技术小屋

中间件 池化技术 java netty 内存池

恒源云(Gpushare)_【存储优化】/hy-tmp可以扩/缩容啦

恒源云

云计算 存储 tmp

【面试-项目篇】外包点工跳到甲方,薪资涨了30%

测试猿温大大

面试 涨薪 测试工程师 项目经验

Meetup预告| AIOps指标相关算法体系分享

云智慧AIOps社区

机器学习 大数据 算法 AIOPS 智能运维

详解4种微服务框架接入Istio方案

华为云开发者联盟

微服务 k8s istio 服务治理 微服务框架

来了来了!MatrixOne技术架构详解来了!

MatrixOrigin

数据库 数据平台 MatrixOrigin MatrixOne 矩阵起源

Apifox才是最强Postman替代品,看看国产软件到底有对牛!

Liam

后端 Postman API swagger java开发工具

【面试-八股文】网络协议万字总结,助你吊打面试官系列

测试猿温大大

面试 TCP 网络协议 HTTP

企业帮助中心的搭建步骤

小炮

帮助中心

零基础学编程?从这本豆瓣评分9.2的入门级神作开始

图灵社区

Python 零基础

抖音获客,抖音SEO询盘系统源码开发,思路分享,开发者掏心窝的说......

yunluohd168

短视频获客 抖音获客系统源码 大数据获客 抖音SEO获客源码

Linux性能优化—内存实战篇

Linux服务器开发

性能优化 内存管理 Linux服务器开发 Linux内核 内核源码

【面试-八股文】万字app测试 面试题,助你吊打面试官系列

测试猿温大大

面试 App 测试工程师 app测试

国内首届DataOps+MLOps meetup回顾

星策开源社区

人工智能 机器学习 DevOps Meetup MLOps

【模拟面试-4年实习】工作4年业务做的不深入,如何突破

测试猿温大大

面试 测试工程师

HSC推出「万物生长计划」 赋能虎符交易所HOO新应用场景

区块链前沿News

Hoo 虎符交易所 虎符智能链

鸿蒙开发必备书籍【收藏】

坚果

鸿蒙 3月月更

OceanBase 在线体验环境,现已上线!

OceanBase 数据库

【工具-jmeter】jmeter 入门级demo练习,包教包会

测试猿温大大

面试 Jmeter 测试工程师

【面试-八股文】Linux高频面试题,助你吊打面试官系列

测试猿温大大

Linux 面试 测试工程师

【直播回顾】OpenHarmony知识赋能第四期第二课——GPIO驱动开发

OpenHarmony开发者

OpenHarmony GPIO 驱动开发

测试开发【Mock平台】01开篇:平台设计和整体规划

MegaQi

测试开发 测试平台开发教程 测试干货

【模拟面试-半年实习】项目经验不突出,如何让面试官「眼前一亮」

测试猿温大大

面试 电商 测试工程师

ZEGO 自研客户端配置管理系统 —— 云控

ZEGO即构

后台开发 客户端配置 音视频架构

一个 测试岗 面了 30 多人,不能再真实了...

六十七点五

软件测试 面试题 自动化测试 经验总结 测试工程师

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