Nesta etapa, você aprenderá como influenciar a prioridade de agendamento de processos usando os comandos nice e renice. O valor nice (também conhecido como niceness) de um processo indica sua prioridade para o agendador Linux. Um valor nice mais baixo (mais negativo) significa maior prioridade, enquanto um valor nice mais alto (mais positivo) significa menor prioridade. A faixa para valores nice é tipicamente de -20 (maior prioridade) a 19 (menor prioridade), com 0 sendo o padrão.
-
Inicie várias instâncias de sha1sum /dev/zero & e, em seguida, inicie uma instância adicional com um nível nice de 10.
Iniciaremos vários processos sha1sum para simular um sistema ocupado. Em seguida, iniciaremos um com uma prioridade deliberadamente mais baixa (valor nice mais alto) para observar o efeito.
Primeiro, inicie três instâncias regulares (ajuste com base na contagem de núcleos da sua CPU, se desejar, mas pelo menos tantas quanto processadores virtuais para criar contenção):
for i in {1..3}; do sha1sum /dev/zero & done
Em seguida, inicie a quarta instância com um nível nice de 10. Este processo terá uma prioridade mais baixa em comparação com os outros.
nice -n 10 sha1sum /dev/zero &
Você verá uma saída semelhante a esta, indicando os PIDs dos processos em segundo plano:
[1] 5443
[2] 5444
[3] 5445
[4] 5446
(Observação: Os valores de PID na sua saída variarão.)
-
Use os comandos ps e pgrep para exibir o PID, a porcentagem de uso da CPU, o valor nice e o nome do executável para cada processo.
Observe as colunas %CPU e NI. A instância com o valor nice de 10 deve exibir uma porcentagem de uso da CPU menor do que as outras instâncias, pois o agendador lhe dá menos tempo de CPU.
ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
Procure o processo com o valor NI de 10. Seu %CPU deve ser visivelmente menor do que os outros.
PID %CPU NI COMMAND
5443 56.8 0 sha1sum
5444 58.0 0 sha1sum
5445 56.5 0 sha1sum
5446 6.7 10 sha1sum
(Observação: Os valores exatos de %CPU variarão com base na carga do sistema e na contagem de núcleos, mas o processo com nice 10 deve ter uma participação menor.)
-
Use o comando sudo renice para alterar o nível nice de um dos processos regulares para 5.
O comando renice permite que você altere o valor nice de um processo já em execução. Demonstraremos isso alterando um dos processos regulares (valor nice 0) para um valor nice de 5.
Primeiro, identifique o PID de um dos processos sha1sum que tem um valor nice de 0 na saída do comando ps anterior. Vamos usar o primeiro do exemplo acima (PID 5443).
sudo renice -n 5 <PID_of_regular_process>
Substitua <PID_of_regular_process> pelo PID real que você identificou. Por exemplo:
sudo renice -n 5 5443
Você deve ver a saída confirmando a alteração da prioridade:
5443 (process ID) old priority 0, new priority 5
-
Repita os comandos ps e pgrep para exibir a porcentagem da CPU e o nível nice.
Observe a mudança no uso da CPU para o processo cujo valor nice você modificou. O processo com valor nice 5 agora deve ter um uso de CPU ligeiramente menor em comparação com os processos com valor nice 0, mas maior do que o processo com valor nice 10.
ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
Você deve ver que o valor NI para o processo modificado agora é 5, e seu uso da CPU reflete seu novo nível de prioridade.
PID %CPU NI COMMAND
5443 55.4 5 sha1sum
5444 67.2 0 sha1sum
5445 67.1 0 sha1sum
5446 7.5 10 sha1sum
(Observação: Os valores exatos de %CPU variarão, mas você deve observar que os processos com valores nice mais baixos (maior prioridade) recebem mais tempo de CPU.)