【问题标题】:Understanding renice了解 renice
【发布时间】: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?

【问题讨论】:

    标签: linux scheduler


    【解决方案1】:

    您可能启用了自动组。

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

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

    cat /proc/$$/autogroup
    

    您可以使用以下方式设置友好度:

    echo 19 > /proc/$$/autogroup
    

    【讨论】:

      猜你喜欢
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 2020-09-18
      • 2011-01-07
      • 2016-07-15
      • 2012-02-28
      • 2012-09-22
      相关资源
      最近更新 更多