Prioridades de Processos: Como nice e renice Funcionam

Prioridades de Processos: Como nice e renice Funcionam

O Que Voce Vai Conquistar

  • Explicar a relacao entre o valor nice e a prioridade do kernel (PRI)
  • Iniciar um comando com prioridade baixa usando nice
  • Alterar a prioridade de um processo em execucao com renice
  • Verificar a prioridade com precisao usando top / ps
  • Responder com raciocinio a pergunta frequente no exame "usuarios comuns nao podem elevar a prioridade"

Este e o nucleo do objetivo 103.6 do LPIC-1 "Modificar prioridades de execucao de processos". E a tecnica para executar trabalho pesado em segundo plano sem perturbar o trabalho interativo.

Decidindo o Valor nice

O valor nice e um inteiro de -20 (prioridade mais alta) a 19 (prioridade mais baixa). Quanto menor o valor, mais CPU o processo recebe.

Valor nice Prioridade Uso tipico
-20 a -1 Alta (somente root) Trabalho que precisa de resposta em tempo real
0 Padrao (default) Comandos normais
1 a 19 Baixa Trabalho pesado como backup, batch, build

Se "o backup torna o trabalho interativo lento", inicie-o com prioridade baixa usando nice -n 19. Um usuario comum so pode alterar o valor nice na direcao de aumenta-lo (numero maior = prioridade menor). Este e um ponto frequente no exame.

Passo a Passo

Passo 1: Verificar o valor nice atual

ps -o pid,ni,comm -p $$
nice
  PID  NI COMMAND
 2451   0 bash
0

A coluna NI e o valor nice. nice sem argumento mostra o valor nice do shell atual. O padrao e 0.

Passo 2: Iniciar um comando com prioridade baixa usando nice

nice -n 19 tar czf backup.tar.gz /var/www &
ps -o pid,ni,comm -C tar
  PID  NI COMMAND
 3120  19 tar

nice -n 19 cmd inicia um comando com valor nice 19 (prioridade mais baixa). O trabalho prossegue apenas quando a CPU esta ociosa, minimizando o impacto no trabalho interativo.

Passo 3: Alterar um processo em execucao com renice

renice -n 10 -p 3120
ps -o pid,ni,comm -p 3120
3120 (process ID) old priority 19, new priority 10
  PID  NI COMMAND
 3120  10 tar

renice -n 10 -p PID altera o valor nice de um processo em execucao. -u user altera todos os processos de um usuario e -g group altera por grupo.

Passo 4: Monitorar prioridade com top

top -o NI
  PID USER      PR  NI    VIRT    RES  %CPU COMMAND
 3120 user       30  10  118000   4200   2.3 tar
 2451 user       20   0   12000   3800   0.1 bash

No top, a coluna NI e o valor nice e PR e a prioridade interna do kernel, relacionados por PR = 20 + NI (para processos normais). Pressionar r dentro do top permite renice interativo.

Passo 5: Confirmar a restricao para usuarios comuns

renice -n -5 -p 3120
sudo renice -n -5 -p 3120
renice: failed to set priority for 3120 (process ID): Permission denied
3120 (process ID) old priority 10, new priority -5

Um usuario comum nao pode definir um valor nice negativo (prioridade alta) e recebe Permission denied. Elevar a prioridade requer privilegios de root (sudo).

Por Que Usuarios Comuns Nao Podem Elevar a Prioridade

Tornar o valor nice negativo permite que aquele processo tome CPU preferencialmente sobre os processos de outros usuarios. Se qualquer um pudesse elevar a prioridade livremente, um usuario malicioso ou um programa com bug poderia monopolizar o sistema inteiro, destruindo a justica em um ambiente multiusuario. Entao o Linux adota um design de permissao assimetrico: "reduzir a prioridade (ceder) e permitido para todos, elevar a prioridade (tomar) e somente root".

A palavra nice vem de "ser gentil com outros processos cedendo CPU". Aumentar o valor a partir do padrao 0 significa "ceder mais gentilmente" = prioridade menor. Compreender essa direcao previne confusao sobre o sinal do valor nice. Note que nice e apenas uma dica para o agendador; se a CPU esta ociosa, mesmo um processo com valor nice alto prossegue.

Solucao de Problemas

Sintoma: renice retorna Permission denied

Causa: Um usuario comum esta tentando reduzir o valor nice (direcao negativa), ou alterar o processo de outro usuario

Verificacao:

ps -o pid,user,ni -p PID

Solucao: Use sudo renice para elevar a prioridade. Alterar o processo de outro usuario tambem requer privilegios de root.

Sintoma: O trabalho nao desacelera mesmo com nice -n 19

Causa: nice e uma dica relativa; sem processos competindo, ele pode usar CPU total

Verificacao:

top -o %CPU

Solucao: E comportamento normal que nice so faz efeito sob competicao de CPU. Para reduzir a prioridade de I/O, use ionice separadamente.

Sintoma: Um build em segundo plano torna o trabalho interativo lento

Causa: O processo de build compete por CPU igualmente com o valor nice padrao 0

Verificacao:

ps -o pid,ni,comm -C make

Solucao: Reduza o processo em execucao para a prioridade mais baixa com renice -n 19 -p PID. De agora em diante, inicie com nice -n 19 make.

Lista de Verificacao de Conclusao

  • [ ] Verificou o valor nice atual com ps -o pid,ni,comm
  • [ ] Iniciou com prioridade baixa usando nice -n 19
  • [ ] Alterou um processo em execucao com renice -n -p PID
  • [ ] Monitorou a prioridade na coluna NI do top
  • [ ] Confirmou a restricao de que usuarios comuns nao podem elevar a prioridade

Resumo

Cenario Comando Proposito
Ao iniciar nice -n 19 cmd Iniciar trabalho pesado com prioridade baixa
Em execucao renice -n 10 -p PID Ajustar um processo em execucao
Por usuario renice -n 5 -u user Alterar todos os processos de uma vez
Verificar ps -el / top Monitorar NI / PRI
Elevar prioridade sudo renice -n -5 Somente root

Prioridade de processos e a base do gerenciamento de recursos de CPU. Apos cobrir a area de gerenciamento de processos do LPIC-1, combine com ambiente de shell e mecanismos de links para completar seu conhecimento operacional.

Proximas Leituras

Continue Sua Jornada LPIC-1

Hub LPIC-1

  • Hub de Aprendizado LPIC-1 — Mapa completo de artigos LPIC-1, acompanhamento de progresso e cobertura dos objetivos do exame

Artigos Relacionados do LPIC-1

Pratica