20 年前的芯片组解决方案一直在伤害现代 AMD Linux 系统

来源: OSCHINA
2022-09-28 08:43:07

AMD 工程师 K Prateek Nayak 最近发现,Linux 内核中一个已有 20 年历史的芯片组变通方法仍应用于现代 AMD 系统中,而其在某些情况下会损害现代 Zen 硬件的性能。并提出了一个相关的补丁,旨在将这种变通方法限制在旧系统上,从而帮助提高现代系统的性能。

根据介绍,自从 2002 年将 ACPI 支持添加到 Linux 内核以来,就一直有一个“dummy wait op”来处理一些芯片组的 STPCLK# 没有被及时处理的问题。这个 dummy I/O read 会延迟进一步的指令处理,直到 CPU 完全停止。“至少在一些带有 VIA 芯片组的 AMD Athlon era systems 中,这是一个问题……但对于大约过去二十年的新芯片组来说,这不是问题”。

K Prateek Nayak 指出:

在 AMD Zen3 系统上使用 IBS 对某些工作负载进行采样表明,大量时间花费在 dummy op 中,这被错误地视为 C-State residency。较大的 C-State  residency 值可以使 cpuidle governor 在随后的空闲实例期间推荐一个 deeper C-State,从而开始恶性循环,导致在繁忙和空闲阶段之间快速切换的工作负载的性能下降。

其中一个工作负载是 tbench,在某些运行期间可以观察到大量的性能下降。

因此至少对于 Tbench 而言,Linux 内核中这种长期、无条件的变通方法一直在损害 AMD Ryzen / Threadripper / EPYC 在特定工作负载中的性能:

不过其并未影响现代 Intel 系统,因为较新的 Intel 平台使用了基于 MWAIT 的 intel_idle 驱动程序代码路径来进行替代。

值得一提的是,Intel Linux 工程师 Dave Hansen 在 K Prateek Nayak 的补丁上进行进一步的简化该补丁将不会应用这种“dummy wait”的解决方法,因此 AMD 系统将放弃这个会降低现代系统性能的操作。目前,这一补丁已作为 x86/urgent 修复的一部分被合并到 Linux 6.0 中。

展开阅读全文
精彩评论
各大操作系统对AMD都不是很友好,wintel联盟就不用说了,就连windows11都是intel大小核优化,amd一边去,macOS从未支持amd,只支持intel,现在linux也有amd的支持问题,看来amd真的不yes
2022-09-28 13:22
2
举报
linux祖师爷不是换AMD了吗
2022-09-28 19:40
1
举报
dummy wait ? 哪个dummy写的邪恶代码
2022-09-28 09:44
1
举报
3 收藏
分享
6 评论
3 收藏
分享
返回顶部
顶部