就在一年多以前,Intel 的 Linux 工程师们开始着手开发面向 Linux 的“缓存感知型负载均衡”(cache-aware load balancing),更常见的名称是“缓存感知调度”(Cache Aware Scheduling)。这项功能旨在提升现代 Intel Xeon 和 AMD EPYC 处理器的性能,但至今尚未被合并进主线 Linux 内核。然而,昨天,该功能的第四版补丁(v4)已被提交,供社区审查。
缓存感知调度旨在提升 Linux 在具有多个缓存域(cache domains)的现代 CPU 上的性能表现。调度器会尽量确保共享数据的任务被安排在同一个“末级缓存”(Last Level Cache, LLC)域内运行,从而提高缓存局部性(cache locality),减少缓存未命中(cache misses)和缓存震荡(cache bouncing)现象。
新的“v4”版本补丁在启用 NUMA 负载均衡时,引入了新代码,用于限制在首选 NUMA 节点上进行 CPU 扫描的深度。此外,还针对低负载情况下的负载不平衡问题进行了优化,改进了 LLC 编号(ID)的管理机制,并包含其他多项调整。不过,从根本上说,这一新版补丁系列中的缓存感知调度负载均衡逻辑与之前版本基本保持一致。

根据 Intel 在补丁附信中展示的性能测试结果,该补丁在 Intel Xeon 和 AMD EPYC 平台上均表现出显著的性能提升。我本人对早期版本补丁的测试结果也非常积极:此前的基准测试显示,缓存感知调度在 AMD EPYC “Turin” 架构上展现出巨大潜力,同时也能显著提升 Intel Xeon 6 “Granite Rapids” 处理器的性能。
感兴趣的读者可以在 Linux 内核邮件列表中找到最新的缓存感知调度 v4 补丁。希望这项缓存感知调度功能今年能够成功合入主线 Linux 内核。
转自 Intel Posts Fourth Version Of Cache Aware Scheduling For Linux – Phoronix
Linuxeden开源社区