macOS:nice/renice 不工作——对 cputime 没有实际影响?

macOS:nice/renice 不工作——对 cputime 没有实际影响?

虽然我可以通过 看到一个“不错”的值(“ NI”)ps,但它似乎对进程使用的实际 cpu 时间没有影响:

  PID  %CPU PRI NI COMM
57081  77.6  12 10 cpu-chew
57080  77.1  12  0 cpu-chew
57085  76.9  12 15 cpu-chew
57082  76.9  12 13 cpu-chew
57083  76.7  12  0 cpu-chew
57031   0.0  31  0 -tcsh

有人知道如何让一个进程比另一个进程获得更多的 CPU 吗?

== 更多信息,fwiw:

macOS 10.12.6

如果我尝试使用负值进行(重新)nice'ing,或者如果我的进程数量超过 32 个(只是为了确保我最大化“超线程”或其他任何东西),我会得到相同的行为。

cpu-chew是一个简短的 C 程序,只执行平方根和递增(见下文)。

多次运行“ps”会以稍微不同的顺序提供进程,并具有不同的PRI值(从 1-ish 到 14-ish),但所有 cpu-chew 副本都将具有大致相同的PRIority。我认为它PRI结合了某种年龄机制来计算自上次切换以来的时间。)

nice这是我通过和的不同组合开始工作的完整记录renice

tropic: cpu-chew &
tropic: /usr/bin/nice cpu-chew &
tropic: /usr/bin/nice -n 13 cpu-chew &
tropic: cpu-chew &
tropic: cpu-chew &
tropic: ps -rc -o pid,pcpu,pri,nice,comm

  PID  %CPU PRI NI COMM
57085  78.2   1  0 cpu-chew
57083  78.0   2  0 cpu-chew
57081  77.4   3 10 cpu-chew
57080  77.2   2  0 cpu-chew
57082  76.7   2 13 cpu-chew
57031   0.0  31  0 -tcsh

tropic: /usr/bin/renice -n 15 57085
tropic: ps -rc -o pid,pcpu,pri,nice,comm

  PID  %CPU PRI NI COMM
57081  77.6  12 10 cpu-chew
57080  77.1  12  0 cpu-chew
57085  76.9  12 15 cpu-chew
57082  76.9  12 13 cpu-chew
57083  76.7  12  0 cpu-chew
57031   0.0  31  0 -tcsh

还有更切线的东西:

tropic: cat cpu-chew.c

#include <math.h>

int main() {
    double i=2;
    while (i != sqrt(i)) 
        ++i;
    }

跑步limit并没有表现出任何奇怪的东西。

相关内容