LinusTorvalds的新补丁将Linux性能提升了2.6%

程序员咋不秃头 2024-11-11 03:48:11

导读:Linux大总管 Linus Torvalds 近日对代码进行了相对较小的更改,但显著提高了 Linux 的多线程性能。

各位看官,话说Linux的代码提交有一个朗朗上口的名字:x86/uaccess:其在 64 位 copy_from_user() 中避免使用 barrier_nospec(),这是一项安全调整,其目标是应对2018 年公开的Meltdown 漏洞和Spectre 攻击等安全漏洞。

然而,这些问题并没有消失,此种类型的攻击仍然存在。

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

此补丁也是 Red Hat 开发人员Josh Poimboeuf最初提交补丁的重写版本。Torvalds 对其进行了修改以提高速度。“内核测试机器人报告 per_thread_ops 基准测试提高了 2.6%”,他在提交信息时这样写道。

Torvalds 的新代码版本将避免使用barrier_nospec() API,该 API 可处理某些机器代码的推测执行。

推测执行是现代级多核 CPU 的一项功能,它使用分支预测来尝试预测在需要之前将运行哪些程序代码,以便可以提前运行并缓存结果。

如果预测是正确的,则可以节省时间;如果预测不正确,则结果将被丢弃。但是,这会带来一种特殊形式的安全问题,技术人员和科学家们一直在研究这个问题。

相反,由于地址无效而不再允许copy_from_user()方法调用,它使用指针掩码来返回所有的地址。

当前,防御此类攻击是非常必要的。被做为运营型 Web 服务器等是 Linux 的主要用途,需要锁定此类机器以抵御所有可能的攻击,甚至以禁用性能增强功能为代价。它使服务器更安全,但速度更慢。众所周知,Torvalds反对这种性能降低措施。

在独立的Linux本地机器(比如你的台式机或笔记本电脑)上,默认不允许入站连接,你可以关闭此功能,并在相对安全的情况下享受更好的性能,当然如果你知道自己在做什么,并可以接受虽小但潜在的风险,也没有问题。

这虽然不是特别什么大的事件,但它说明了为什么这位内核指挥官每年仍能从 Linux 基金会获得超过 100 万美元。

确实很少有人拥有他这样的技术知识水平,尤其是 x86 架构方面的知识。那些拥有这种知识的人,大多数都在为大型芯片供应商工作。他们签署了保密协议,不能够讨论这类事情。

而Linus在 Linux 基金会之前,芯片供应商 Transmeta 就聘请过他,Linus让该公司获得了构建 Crusoe VLIW 芯片所需的底层专业知识,该芯片通过模拟 x86-32 代码来运行。

0 阅读:107
评论列表