Você pode renegar um processo em execução
para dar mais ou menos prioridade (o chamado "bom valor"). Nota
que a escala de prioridades do UNIX é um pouco contra-intuitiva: negativa
valores significam que um processo é favorecido em processos concorrentes, isto é,
tem "mais" prioridade.
Assim, você pode tentar "desacelerar" seu processo, dado seu PID por meio de:
# lower priority of a process
renice +1 "PID"
Toda vez que você executa isto, o processo "nice value" é gerado por 1; você
pode usar valores inteiros diferentes de +1
, claro.
O comando bom permite que você
iniciar um processo com um ajuste de valor agradável de +10 (altere isto com
opção -n
). Por exemplo:
# start a CPU-intensive task with low priority
nice ./cpu-hog
No entanto, o "valor legal" afeta apenas o quanto o planejador favorece
executando um processo em particular sobre os outros no sistema: se o seu
computador é basicamente ocioso, elevando o "bom valor" de um único
processo irá não impedir que o processo tome 100% da CPU. Eu cito
do getpriority (2) manpage :
(Ênfase adicionada por mim.)
The degree to which their relative nice value affects the scheduling
of processes varies across Unix systems, and, on Linux, across
kernel versions. Starting with kernel 2.6.23, Linux adopted an
algorithm that causes relative differences in nice values to have a
much stronger effect. This causes very low nice values (+19) to
truly provide little CPU to a process whenever there is any other
_higher priority load on the system._
A razão para isso reside na forma como os processos são executados em um
Kernel do tipo UNIX: toda vez que o kernel decide executar um processo,
processo tem controle total de um núcleo de CPU para um certo (fixo e curto)
período de tempo. O "bom valor" pode influenciar a frequência com que o kernel
agendador está disposto a dar um horário para um processo, mas você não pode
alterar o fato de que, uma vez agendado, um processo é executado sem interrupções
quantidade fixa de tempo.
Portanto, além de desacelerar sua CPU, não há como fazer uma
o processo é executado mais lentamente se não houver outros processos no sistema que
pode disputar o acesso da CPU.