在 Linus Torvalds 由于暴风雪而失去互联网和电力从而影响 Linux 6.8 集成窗口之前,他的周末已经很糟糕了,因为新的 Linux 6.8 代码导致他的 Linux 内核构建面临性能下降。 它是以前核心的两倍。 AMD Linux 工程师能够重现该回归,并且与主要开发人员一起,现在在最新的调度代码中找到了针对此问题的确认解决方案。
在讨论 Linus Torvalds 报告的因 Linux 6.8 中的调度程序更改而导致的重大性能回归时,对于拆分提交,开发人员并不清楚导致回归的原因。 在随后的讨论中,AMD 的 Wise Carney 发表了讲话 提及 它还可以重现回归。 Wyes 使用的是普通的 AMD Ryzen 5600G 台式机,而不是 Torvalds 使用的高端 AMD Ryzen Threadripper。 他提出的一个重要说明是,只有当您从 BIOS 禁用 ACPI CPPC 并将 ACPI CPUFreq 与 Schedutil 调控器一起使用时,才会重现这一情况。
大多数 AMD Zen 2 及更高版本的系统都支持 ACPI CPPC,因此对于 Ryzen 端的现代核心,它们通常使用新的 AMD P-State 驱动程序。 但对于 Zen 2 / Zen 3 和更早的系统(或从 BIOS 禁用 CPPC 的系统),仍然使用 CPUFreq 驱动程序,默认的 CPU 频率调节器通常是“Schedutil”以利用调度程序使用数据。
通过邮件列表上的这个帖子,提出了更正建议,并讨论了此回归的具体问题。 最终,Vincent Guiteau 相信他找到了回归问题的解决方案,并且 Wise 能够成功测试该补丁。
吉托现已发送 预定/公平:修复不稳定情况下的频率选择 作为修复使用 ACPI CPUFreq + Schedutil 时在新 Linux 6.8 代码上出现的不良回归的补丁。 解释并修正:
“当未启用频率持久性时,get_capacity_ref_freq(policy)返回当前频率和map_util_perf()应用的性能裕度,使使用量能够超过最大计算容量并选择高于当前频率的频率。
现在,性能裕度已在管道的早期应用,以解决某些使用限制,并且我们无法使使用量超过最大计算容量。
我们必须使用比当前频率更高的频率,以便在当前频率完全使用时有机会设置更高的 OPP。 应用相同的余量并返回比当前频率高 25% 的频率,以便在我们用完当前处理器中的整个 CPU 之前切换到下一个 OPP。”
最终,一行代码修复解决了这一性能下降问题,导致 Linus Torvalds 的空内核构建时间从 22 秒增加到 44 秒。
假设新补丁的测试一切顺利,一旦 Linus Torvalds 的互联网和电力恢复,该修复应该会进入 Linux 6.8 Git 代码中。
“极端问题解决者。旅行忍者。典型的网络迷。浏览器。作家。读者。无法治愈的组织者。”
More Stories
我是美国陆军的狙击手,电影并没有展现我工作中最艰难的部分
Bungie 想听听你想看到《命运 2》有哪些巨大的改变,这是我的
《Manor Lords》在抢先体验发布仅几个小时后就开始在 Steam 上发售