Embora eu possa ver um valor "legal" (" NI
") via ps
, parece não ter efeito no tempo real da cpu usado por um processo:
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
Alguém tem alguma ideia de como eu posso realmente obter um processo para receber mais CPU do que outro?
== Mais informações, fwiw:
MacOS 10.12.6
Eu obtenho o mesmo comportamento se eu tentar (re) ficar bom com um valor negativo, e também se eu for até mais de 32 processos (só para ter certeza de que estou maximizando "hyperthreads" ou qualquer coisa ).
cpu-chew
é um programa C curto que apenas faz o enraizamento e o incremento de quadrados (veja abaixo).
Executar 'ps' várias vezes fornece os processos em uma ordem um pouco diferente e com um valor PRI
variável (de 1-ish a 14-ish), mas todas as cópias de cpu-mastigar terão aproximadamente o mesmo PRI
ority. Eu entendo que PRI
incorpora algum tipo de mecanismo de idade para explicar o tempo desde a última troca.)
Aqui está a transcrição completa de mim iniciando os trabalhos por meio de diferentes combinações de nice
e 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
E mais coisas tangenciais:
tropic: cat cpu-chew.c
#include <math.h>
int main() {
double i=2;
while (i != sqrt(i))
++i;
}
A execução de limit
não mostra nada de estranho.