4 月底,我报告了影响较新 AMD CPU 的显著性能回归,并被分为两分为二,因为使用 Linux 6.15 内核的 Zen 4/5 处理器的 AMD SRSO 缓解处理发生了变化。针对该显著性能回归的修复程序今天在即将发布的 Linux 6.15-rc6 版本之前合并。
在 4 月初发现相当大的性能回归后,这种影响较新 AMD 处理器的 AMD 性能回归最终变得相当显著。简单地说,如果用于虚拟化支持的 KVM 内核模块已加载,但未用于运行任何虚拟机 (VM),则最终会应用一些不需要的代价高昂的缓解措施。所涉及的性能成本最终比 AMD 和 Google 的上游内核开发人员当时意识到的要高得多。
5 月初发布了一个补丁来解决这种回归问题,而现在对于 Linux 6.15-rc6,有一个足够好的解决方案已被合并。

今天通过 Linux 6.15 的 KVM 修复程序合并的是 KVM:SVM:在 0 <=> 1 个虚拟机计数转换时设置/清除 SRSO 的BP_SPEC_REDUCE。
当且仅当 KVM 至少有一个活动 VM 时,设置幻BP_SPEC_REDUCE位以在运行 VM 时缓解 SRSO。不幸的是,始终设置位会降低性能,比预期的要低一点。
使用专用的旋转锁和计数器,而不是挂接虚拟化启用,因为根据SRSO_BP_SPEC_REDUCE更改kvm.enable_virt_at_load的行为是痛苦的,并且有其自身的缺点,例如,可能会导致对 VM 创建延迟敏感的流出现性能问题。
将设置BP_SPEC_REDUCE推迟到 VMRUN 即将到来,以避免影响未运行 VM 的 CPU 的性能,例如,如果设置正在使用内务处理 CPU。在任务上下文中设置 BP_SPEC_REDUCE,即不将 IPI 发送到所有 CPU,也有助于避免序列化 1<=>N 转换,而不会产生大量的复杂性(有关通过 IPI 进行协调有多丑陋的详细信息,请参阅链接)。
链接:https://lore.kernel.org/all/aBOnzNCngyS_pQIW@google.com
修复:8442df2b49ed (“x86/bugs: KVM: 添加对 SRSO_MSR_FIX 的支持”)
报告人: Michael Larabel<michael@michaellarabel.com _istranslated=”1″>
关闭: https://www.phoronix.com/review/linux-615-amd-regression
因此,现在 Linux 6.15 开箱即用,无需运行任何 KVM 虚拟机,将不再影响系统性能……如果与系统上的虚拟机一起运行,由于安全强制,性能会受到影响,但至少简单地启动 Linux 内核而不关心任何 VM 将不再导致早期在 Linux 6.15 Git 上观察到的巨大性能损失。
转自 Linux 6.15 Fix Merged For Sizable Performance Regression On Newer AMD CPUs – Phoronix
Linuxeden开源社区