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