虽然 AMD EPYC 处理器已经在 Linux 下提供了出色的性能,但今年春天的Linux 5.18内核是一个调度程序改进,可以为每个节点有多个最后一级缓存 (LLC) 的处理器上的各种工作负载提供可测量的加速,例如EPYC 的案例。
一个名为“ sched/fair:在 SD_NUMA 跨越多个 LLC 时调整允许的 NUMA 不平衡”的补丁听起来可能并不令人兴奋,事实上,我几乎通过我对邮件列表和 Git 存储库的常规补丁监控忽略了它。但是对于 Linux 上的 AMD EPYC 性能,这种内核调度程序的更改实际上是相当重要的。这是我去年写的当时暂定的代码(然后忘记了我在 Phoronix 上执行的广泛的补丁和覆盖范围)但现在已经修改并准备好用于主线 Linux 内核。
Linux 继续从 AMD EPYC/Zen 平台中榨取更多性能。
撰写此更改的长期内核开发人员 Mel Gorman 解释说:“ [从 2020 年开始更改内核调度程序] 允许 NUMA 节点之间出现不平衡,因此负载均衡器不会将通信任务分开。当存在 1:1 时,这可以正常工作LLC 和节点之间的关系,但如果独立任务过早地使用 CPU 共享缓存,则对于多个 LLC 可能不是最优的。Zen* 每个节点有多个 LLC 和本地内存通道,并且由于允许的不平衡,调整一些工作负载以优化运行比它在每个节点有 1 个 LLC 的硬件上。这个补丁允许存在不平衡,直到 LLC 应该在节点之间平衡。
针对每个节点具有多个 LLC 的 CPU 的情况,正在改进用于在 NUMA 节点之间平衡的 Linux 调度程序更改。
令人兴奋的是最终结果,即在他一直在测试的 AMD Zen 3 平台上,OpenMP 并行化 Stream 内存基准测试速度提高了 173~272%,具体取决于所测试的内存操作。对于上游 Stream 内存基准测试以及其他取决于行为的工作负载来说,这是一个巨大的胜利。
根据特定的工作负载,性能可能会得到巨大的改进,并且运行之间的差异会更小……
对于常见的 Coremark CPU 基准测试,使用此补丁的调和平均性能提高了 10%,或者最大结果提高了 17%。对于 SPECjbb Java 基准测试,性能提高了 18%。NPB EP 基准测试的性能也提高了约 17%,并且运行之间的偏差更小。即使对于整体基准测试结果没有太大变化的工作负载,使用此调度程序补丁程序运行之间的偏差也较小。
sched/fair 补丁已被拉入 sched/core,这意味着除非在接下来的几周内出现任何问题,否则应该将其发送到下个月的 Linux 5.18 合并窗口。Linux 5.18 的春季内核版本看起来越来越令人兴奋,并进行了大量的改进。当然,我会在适当的时候对这个补丁和其他更改进行我自己的基准测试。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun131276.html