6行代码的补丁优化Linux 5.20,Stream性能提升40%!
出品 | OSC开源社区(ID:oschina2013)
据外媒 Phoronix 报道 ,AMD 近日提交的一个补丁可以进一步调整 Linux 内核的调度程序围绕 NUMA 的不平衡状态,对于某些工作负载,该调度程序的调整补丁可显著改善基于 AMD Zen 的系统性能,甚至在 Intel Xeon 服务器上也可提供帮助。
补丁的内容主要为:当 find_idlest_group () 函数中允许 NUMA 不平衡时,公平调度程序的更改正在考虑 CPU 亲和性。AMD 工程师 K Prateek Nayak 解释说:
对于每个插槽包含多个 LLC 的系统,例如 AMD Zen 系统,用户希望将需要带宽的应用程序分布在多个 LLC 上。Stream 就是这样一种具有代表性的工作负载,其中通过限制每个 LLC 一个流线程来获得最佳性能。
为了确保这一点,已知用户将任务固定到指定的 CPU 子集,每个 LLC 由一个 CPU 组成,同时运行此类需要带宽的任务。
我们可以通过检查本地组中允许的 CPU 数量是否少于本地组中运行的任务数来检测并避免这种堆积,并使用此信息将任务分散到下一个套接字中(毕竟,此慢速路径的目标是在初始放置期间找到最空闲的组和最空闲的 CPU。)
Stream 内存基准测试用例结果显示:对当前的 Linux 内核来说,此补丁可使 Stream 受益 36~44%,性能提高约 40% :
有趣的是,AMD 主导的优化不仅能让基于 AMD Zen 的处理器受益,也可以使多插槽服务器的 Intel CPU 受益。测试显示,对英特尔至强可扩展 “Ice Lake” 服务器上的 Stream,其性能提高了 54~82%。
而且这个内核补丁只有几行代码:
目前该补丁已排入 sched/core 队列,如果没有其他突发情况,应该会在 Linux 5.20 中引入。
sched/core 队列:https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/log/?h=sched/core
更多技术细节可在补丁邮件中阅读:https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?h=sched/core&id=f5b2eeb49991047f8f64785e7a7857d6f219d574
相关链接:https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.20-AMD-NUMA-Imbalance
推荐阅读