【发布时间】:2014-02-28 08:41:36
【问题描述】:
我正在尝试使用renice 19 (Linux 3.11) 为受 CPU 限制的应用程序提供最低的调度优先级。但是,它似乎没有按预期工作,或者我有理解问题。
让我描述一下我尝试过的两种方法。我希望在这两种方式中我都会得到相同的结果,但我没有。将应用程序 loop 视为一个繁忙的循环:int main() { for(;;) ; return 0; }。
实验一
- 打开了一个终端
-
./loop &运行的次数与 CPU 一样多(例如,我有 4 个 CPU)。 - 运行
loop的另一个实例并将其调整为19
结果符合预期。非 reniced 的loop 实例每个都有几乎 100% 的 CPU,而 reniced 的实例大约有 1%。
实验二
- 打开了两个终端
- 终端 1:运行
./loop &的次数与 CPU 一样多。 - Terminal 2:运行
loop的另一个实例并将其修改为 19
结果不如预期。在 Terminal 2 中启动的 loop 实例拥有 100%(尽管 niceness 为 19),而 Terminal 1 中的 loop 实例共享其余资源。
问题
为什么实验 2 的行为不像实验 1?
【问题讨论】: