上周发布了一个ACPI处理器空闲代码的补丁,以避免当代AMD Zen系统上的旧芯片组事情方法。自从ACPI支持在2002年被添加到Linux内核以来,一贯有一个\公众假等待操作\"大众来处理一些芯片组的STPCLK#没有被及时处理的问题。这个假的I/O读数会延迟进一步的指令处理,直到CPU完备停滞。这是一些利用威盛芯片组的AMD Athlon时期系统的问题。但在过去20年里,新的芯片组没有这个问题。
在过去20年里,一个针对现在的古老芯片组的Linux内核办理方法仍旧被不必要地运用于当代AMD系统,这反过来又会危害特定事情负载的性能。K Prateek Nayak创造,纵然是当代的AMD系统,也仍旧在运用这种变通方法。
在AMD Zen3系统上用IBS对某些事情负载进行采样显示,大量的韶光花在假操作上,这被缺点地算作C-State驻留。一个大的C-State驻留值可以匆匆使处理器在随后的空闲实例中推举一个更深的C-State,开始一个恶性循环,导致在繁忙和空闲阶段之间快速切换的事情负载性能低落。

一个这样的事情负载是Tbench,在某些运行中可以不雅观察到大规模的性能低落。至少对付Tbench来说,Linux内核中的这种长期的、无条件的事情方法一贯在危害AMD Ryzen / Threadripper / EPYC在特定事情负载中的性能。这个变通方法并没有影响到当代英特尔系统,由于那些较新的英特尔平台利用替代的基于MWAIT的intel_idle驱动代码路径。
AMD的补丁演化成了英特尔Linux工程师Dave Hansen的这个补丁。那个将\"大众假等待\"大众的事情方法限定在旧系统上的补丁已经排到了TIP的x86/紧急分支。由于它走的是\"大众x86/紧急\"大众的路线,而且修复了一个在当代硬件上不须要的事情方法,这个补丁很可能会在本周作为Linux 6.0内核提交,而不是须要等到下一个(v6.1)合并窗口再提交。