修复Torvalds发现的严重的Linux性能退化

2024年 1月 15日 86.8k 0


在Linus Torvalds的互联网和电力被被暴风雪刮倒了并因此影响了Linux6.8的合并窗口,他的周末已经很糟糕了,因为在新的Linux 6.8代码中遇到性能回归 这导致他的Linux内核构建是以前内核的两倍。AMD Linux工程师能够重现回归,并且上游开发人员现在相信在最新的调度程序代码中解决了这个问题。

在关于Linus Torvalds报告的由于Linux6.8中的调度器更改而导致的巨大性能回归的讨论中,对于一分为二的提交,开发人员并不能立即清楚是什么导致了回归。在接下来的讨论中,AMD的怀斯·卡尼已报告他也可以重现这种倒退。怀斯使用的不是像Torvalds那样的高端AMD Ryzen开线机,而是一台普通的AMD Ryzen 5600G台式机。他提出的一个重要注意事项是,只有在从BIOS禁用ACPI CPPC并将ACPI CPUFreq与Schedutil调控器一起使用时,才会重现这种情况。

大多数AMD Zen 2和更新的系统支持ACPI CPPC,因此Ryzen侧的现代内核通常使用新的AMD P-State驱动程序。但对于选择Zen 2 / Zen 3系统和更老的系统(或那些从BIOS禁用CPPC的系统),仍然使用CPUFreq驱动程序,通常默认的CPU频率调控器是“Schedutil”,用于利用调度程序利用率数据。

从该邮件列表线程提出了一个补丁,并讨论了围绕该回归的特定问题。最后,文森特·吉托特相信他已经修复了回归,怀斯成功地测试了补丁。

吉托现在已经发出了sched/fair:修复非不变情况下的频率选择作为在使用ACPI CPUFreq+Schedutil时修复新的Linux6.8代码上这种讨厌的回归的补丁。他用贴片解释道:

如果未启用频率不变性,则Get_Capacity_ref_freq(策略)将返回当前频率和map_util_perf()应用的性能裕度,从而使利用率超过最大计算容量并选择高于当前频率的频率。

现在在路径中较早地应用了性能裕度,以考虑一些利用率限制,并且我们无法获得高于最大计算容量的利用率。

我们必须使用高于当前频率的频率,以便在当前频率完全使用时有机会选择更高的OPP。应用相同的裕度并返回比当前频率高25%的频率,以便在我们完全使用当前的CPU之前切换到下一个OPP。

最后,是一行代码修复了这种性能回归,导致Linus Torvalds的空内核构建从22秒缩短到44秒。

Assuming all continues to test well with the new patch, the fix should be working its way to the Linux 6.8 Git code once Linus Torvalds' Internet and electricity is restored.

相关文章

塑造我成为 CTO 之路的“秘诀”
“人工智能教母”的公司估值达 10 亿美金
教授吐槽:985 高校成高级蓝翔!研究生基本废了,只为房子、票子……
Windows 蓝屏中断提醒开发者:Rust 比 C/C++ 更好
Claude 3.5 Sonnet 在伽利略幻觉指数中名列前茅
上海新增 11 款已完成登记生成式 AI 服务

发布评论