Estou tentando testar o renice
comando no meu Mac, parece não ter efeito. Estou testando assim:
Eu tenho uma CPU dual core com hyper threading, então eu executo 6 instâncias das node -e 'while(1){}'
quais, combinadas, maximizam minha CPU. (Como alternativa, execute while true; do echo running > /dev/null ; done
se você não tiver o nó.)
Em seguida, obtenho um PID de um dos processos do nó, seja pelo aplicativo do monitor de atividade ou pgrep
, e então executo sudo renice -n 19 -p $PID
.
Observando o aplicativo do monitor de atividades ou htop
, o uso da CPU de todos os processos do nó ainda é equivalente:
Meu entendimento era que o processo que eu renice
teria uma prioridade baixa e, portanto, não usaria uma quantidade significativa de tempo de CPU quando houvesse outros processos usando-o.
Estou entendendo mal algo sobre renice
? Ou isso é um bug no macOS?
Executando alguns testes rudimentares, também estou vendo isso em 10.13.4.
Escrevi um pequeno programa em C chamado looper que fazia alguns cálculos básicos em um loop infinito:
Eu executei várias cópias disso na minha caixa FreeBSD e as examinei usando
htop(1)
. Usandorenice(8)
, pude ver o valor de Nice sendo incrementado, o valor de Prioridade sendo incrementado e a porcentagem de CPU diminuindo - comportamento esperado.Executei o mesmo programa no macOS 10.13.4 e repeti o processo. Embora eu pudesse ver o valor de Nice aumentando, o valor de Prioridade e a porcentagem de CPU permaneceram consistentes.
Eu me pergunto se é um bug, não tive motivos para examinar isso de perto nos valores de Nice no macOS antes - o comportamento foi próximo o suficiente do que eu esperava que não estava inclinado a investigar.
Se você tiver uma conta de desenvolvedor, vale a pena relatar isso à Apple.