我正在尝试使用renice 19
(Linux 3.11)为CPU绑定的应用程序提供最低的调度优先级。但是,它似乎没有按预期工作或我有一个理解问题。
让我描述一下我尝试过的两种方式。我预计在两种方式中我都会得到相同的结果,但我没有。将应用程序loop
视为繁忙的循环:int main() { for(;;) ; return 0; }
。
./loop &
(例如,我有4个CPU)。loop
的另一个实例并将其重命名为19 结果如预期。非reniced loop
实例的每个CPU几乎都是100%,并且reniced实例的大小约为1%。
./loop &
。loop
的另一个实例并将其重命名为19 结果与预期不符。在终端2中启动的loop
实例具有100%(尽管具有良好性19),而终端1中的loop
实例共享其余资源。
为什么实验2不像实验1那样?
答案 0 :(得分:2)
您可能已启用自动组。
在这种情况下,在顶层的实验2中,您有2个控制组(每个会话一个)竞争CPU,并且在每个控制组内部进程争夺CPU。
您可以通过以下方式查看当前控制组及其优点:
cat /proc/$$/autogroup
你可以用以下方式设置好处:
echo 19 > /proc/$$/autogroup