macOS: nice / renice não funciona - nenhum efeito real no cputime?

1

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.

    
por not-just-yeti 06.08.2017 / 22:41

0 respostas