了解renice

时间:2014-02-28 08:41:36

标签: linux scheduler

我正在尝试使用renice 19(Linux 3.11)为CPU绑定的应用程序提供最低的调度优先级。但是,它似乎没有按预期工作或我有一个理解问题。

让我描述一下我尝试过的两种方式。我预计在两种方式中我都会得到相同的结果,但我没有。将应用程序loop视为繁忙的循环:int main() { for(;;) ; return 0; }

实验1

  • 开了一个终端
  • 与CPU一样多次运行./loop &(例如,我有4个CPU)。
  • 运行了loop的另一个实例并将其重命名为19

结果如预期。非reniced loop实例的每个CPU几乎都是100%,并且reniced实例的大小约为1%。

实验2

  • 打开了两个终端
  • 终端1:与CPU一样多次运行./loop &
  • 终端2:运行loop的另一个实例并将其重命名为19

结果与预期不符。在终端2中启动的loop实例具有100%(尽管具有良好性19),而终端1中的loop实例共享其余资源。

问题

为什么实验2不像实验1那样?

1 个答案:

答案 0 :(得分:2)

您可能已启用自动组。

在这种情况下,在顶层的实验2中,您有2个控制组(每个会话一个)竞争CPU,并且在每个控制组内部进程争夺CPU。

您可以通过以下方式查看当前控制组及其优点:

cat /proc/$$/autogroup

你可以用以下方式设置好处:

echo 19 > /proc/$$/autogroup