虽然我可以通过 看到一个“不错”的值(“ 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 副本都将具有大致相同的PRI
ority。我认为它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
并没有表现出任何奇怪的东西。