赶在下周于爱尔兰都柏林举办的 Linux Plumbers Conference 会议之前,AMD 还计划研讨如何改进“拆分末级缓存”(LLC)架构的调度程序。作为 AMD Linux 服务器团队的一名工程师,K. Prateek Nayak 刚刚发布了一系列补丁,并且专注于用户空间提示(User-Space Hinting)的任务放置计数。
Phoronix 指出:最新工作进展表明 AMD 打算改进 Linux 内核调度程序,并将之用于 LLC CPU 项目、以期改进该公司的 EPYC(霄龙)服务器处理器。
由 Linux 内核公告邮件列表(LKML)上的标记可知,新补丁仍处于“实验性”和“意见征求”阶段。
当前的 API 设计,只能设置较为低级的提示,且并未面向公众提供 —— 仅用于测试和演示 User-Space Hinting 在应用程序调度方案 / 最佳放置决策方面的功效。
若调度程序认为遵循提示将使系统处于次优状态,则可自由地忽略用户空间提示。
作为对比,当今调度程序使用的启发式方法 —— 例如 WF-SYNC 标记、wake_wide()逻辑等 —— 仍存在无法准确推断工作负载的性质的短板。
换言之,调度程序不明白是否最好将一组线程合并、还是拆分开来。由于无法推断工作负载的性质,或导致一系列不准确的放置决策,进而对工作负载的性能造成不利影响。
对于具有拆分 LLC 的系统(例如 AMD EPYC 霄龙服务器平台),其负面影响会被严重放大。
好消息是,该系列新补丁包括了在本地组中存在非活动核心时、选择父级附近的任务放置的功能。该过程负责决定继续使用包含最少利用率的组来扩展工作负载,并检查其它可能的提示。
其实早在去年,英特尔 Linux 内核团队的工程师 Peter Zijlstra,也曾介绍过一个高级提示框架。
其旨在帮助内核调度程序的任务序列能够应对日益复杂的 CPU 和工作负载,而当前状态下的 User-Space Hinting 则是通过 prctl() 接口完成的。
最后,英特尔 Xeon Ice Lake 平台上的初步测试结果表明,EPYC 服务器有望在 Hackbench、Schbench、Tbench 等各类工作负载上迎来性能的有效改进。
不过由于该系列补丁仍处于实验阶段,推测最终用户需要等待数月,才会看到它已做好被添加至 Linux 内核中的准备。