cpumask如何影响linux内核中其他进程的调度



我使用的是linux 2.6。在我的机器上安装了ubuntu的x内核(ubuntu只是提到,以防这改变了什么)。内核运行在有8个内核的机器上。机器也运行openvz,但我不认为这改变了问题的背景。

我安装了一个软件,它只允许使用两个CPU,并在前两个CPU (cpumask 3)上设置了一个硬CPU亲和性。我问自己其他进程的调度如何受此影响。我想我读过一些关于它的东西,但是我现在假设进程很可能被附加到第一个cpu上。内核总是尝试将进程保持在同一个CPU上,以避免缓存失效。

在机器上有相当多的进程正在运行。内核如何处理这种情况?是硬CPU关联进程运行较慢,因为它们在绑定到拥挤区域时受到影响吗?内核是如何关心硬关联的

长此以往,调度程序的负载平衡代码将把更多未绑定的任务移到cpu的其余部分,以解释该任务被绑定到前两个cpu的原因。

它的工作方式是每个任务在创建它的CPU上启动,在微观层面上,Linux任务调度器在每个CPU上进行调度决策,而不考虑其他CPU。但是还有更宏观的进程迁移负载平衡代码,它会说:"这个cpu上的运行队列(等待调度的进程列表)比那个cpu长,让我们移动一些来平衡负载"。

当然,由于您的特定任务绑定到前两个cpu,负载平衡将选择其他任务移动-因此您的绑定任务将在长期运行中"推出"足够的其他非绑定任务到其他cpu,并且将保持平衡。

相关内容

最新更新