当前位置:首页-文章-行业新闻-正文

Linux 修复了持续多年的 CPU 平衡算法问题

Linux 6.3 收到了一个 Linux CPU 调度程序修复补丁,修复了自 2019 年底以来一直存在于主线内核中的“ CFS 调度器计算不平衡导致的整数溢出” 问题。 该问题最先在英特尔至强可扩展 Sapphire Rapids 服务器上发现,自 2019 年 10 月被报告以来,一

Linux 6.3 收到了一个 Linux CPU 调度程序修复补丁,修复了自 2019 年底以来一直存在于主线内核中的“ CFS 调度器计算不平衡导致的整数溢出” 问题。

该问题最先在英特尔至强可扩展 Sapphire Rapids 服务器上发现,自 2019 年 10 月被报告以来,一直存在于主线内核。当时报告该 Bug 的具体表现为:

CFS 的重新平衡算法存在问题,kernel/sched/fair.c 中的 calculate_imbalance 函数可能由于整数溢出错误导致产生的结果不正确。

该算法旨在将一些任务从最繁忙的组拉到本地组。但是当两个组都或将变得过载时,算法不会将本地组推到调度域的平均负载之上。

而且,在某些情况下,该平衡算法的计算可能是错误的,导致无意义的任务迁移,甚至放大不平衡。

Linux 修复了持续多年的 CPU 平衡算法问题 - 第1张

Linaro 的 Vincent Guittot 已发送了一组修复补丁来处理该不平衡溢出问题。 他解释说,“当本地组完全繁忙但其平均负载高于系统负载时,计算不平衡将溢出,本地组不是拉动此负载的最佳目标。”

Linux 修复了持续多年的 CPU 平衡算法问题 - 第2张

该修复补丁已紧急进入 Linux 6.3-rc7 内核版本,具体解决方式是:如果本地组的负载超过平均系统负载,则不要尝试从本地组中拉出任何任务。

一旦被主线采用,该补丁应该会被反向移植到最近的稳定 Linux 内核版本。

本文原创,作者:admin,其版权均为一念悟道所有。
如需转载,请注明出处:https://www.jiayezz.com/6044.html