在将于下周在爱尔兰都柏林举行的 Linux Plumbers Conference (LPC) 会议之前,AMD 将举办一场关于改进拆分末级缓存 (LLC) 架构的调度程序的研讨会。K. Prateek Nayak 是 AMD Linux 服务器团队的工程师,他发布了一个补丁系列,专注于计算用户空间提示任务放置的次数。这一新的发展表明 AMD 打算改进 Linux 内核的调度程序,用于拆分 LLC CPU 计划,以帮助他们的 EPYC 服务器处理器。
AMD 使用工作负载的用户空间提示在 Linux 中寻求更高性能的 EPYC(霄龙)CPU
新补丁被标记为“实验性”和“征求意见”,并根据用户空间提供的提示来控制调度程序对用户空间任务的安排。
当前的 API 设计是实验性的,只能设置低级提示。此 API 不用于公共使用,仅用作测试和演示提示在帮助调度程序根据应用程序提供的要求做出最佳放置决策方面的功效的手段。如果调度程序认为遵循提示将使系统处于次优状态,则可以自由地忽略用户设置的提示。
- 动机
今天调度程序使用的启发式方法,例如 WF_SYNC 标志、wake_wide() 逻辑等,在准确推断工作负载的性质方面存在不足,即是否最好将一组线程合并在一起,应该分开。无法推断工作负载的性质可能会导致一系列不正确的放置决策,这可能对工作负载性能造成不利影响。对于具有拆分 LLC 的系统(例如 AMD EPYC),惩罚似乎很严重。
AMD的新补丁序列包括在本地组中存在非活动核心时选择父级附近的任务放置的功能。从那里,该过程决定继续使用包含最少利用率的组来扩展工作负载,并且还在检查其他可能的提示。英特尔 Linux 内核团队的工程师 Peter Zijlstra 去年提出了一个高级提示框架,该框架将帮助内核调度程序的任务序列处理日益复杂的 CPU 和工作负载。当前状态下的用户空间提示是通过 prctl() 接口完成的。