101 · LPIC-1 (parte 1)
103.6 Modificar prioridades de execução
TópicoT15ObjetivoModificar prioridades de execução de processos usando nice e renicePeso1PáginasLPIC-1 (101) - Version 5.0
Resumo Conciso
Conceitos de prioridade
- Prioridade padrão (0): Comportamento normal do sistema
- Mito comum: ao contrário do que se costuma afirmar, o bash não adiciona +10 a processos lançados com
&— o job herda o nice do shell (normalmente 0). Esse comportamento existia em csh antigo; para reduzir a prioridade de um job em background no bash é preciso usar explicitamentenice - NICE — Define prioridade de processos (valores: -20 a +19)
- Valor menor = maior prioridade
- Utilizadores comuns: de 0 (nice) a 19 (menos nice)
- Superusuário: pode usar valores negativos (-20 a 0)
Comandos de prioridade
| Comando | Descrição |
|---|---|
nice | Inicia processo com prioridade diferente |
nice -n <valor> | Define a prioridade do processo |
nice -n -20 <comando> | Inicia com prioridade máxima (requer root) |
renice | Altera prioridade de processo em execução |
renice -n <valor> -p <PID> | Altera prioridade por PID |
renice -n <valor> -u <usuario> | Altera prioridade por utilizador |
top | Exibe e altera nice de processos em execução |
kill | Altera prioridade via sinais SIGSTOP/SIGCONT |
Como o nice funciona
- O valor de nice é somado ao valor de base 80
- Priority = nice + 80
- Nice 0 = Priority 80 (valor padrão)
- Nice -20 = Priority 60 (máxima)
- Nice 19 = Priority 99 (mínima)
Uso do top
top -d 5 # Exibe nice em coluna "NI"r <PID> <nice_value> # Altera nice de processo no topCombinando nice com sinais
nice -n 10 tar czf backup.tar.gz /home # Backup com prioridade reduzidanice -n -20 cat ficheiro_grande > /tmp/out # Processo com alta prioridade (root)renice 5 -p 12345 # Altera nice de processoExercícios Guiados
-
Iniciar processo com nice:
$ nice tar czf meusficheiros.tar.gz /etc/ssh/ /home/jane/$ pgrep -l "tar"$ ps -ef | grep "tar" -
Alterar prioridade com nice:
$ nice -n 10 tar czf meusficheiros.tar.gz /etc/ssh/ /home/jane/$ pgrep -l "tar"$ ps -ef | grep "tar" -
Iniciar processo em background com nice:
$ nice tar czf meusficheiros.tar.gz /etc/ssh/ /home/jane/ &$ pgrep -l "tar"$ ps -ef | grep "tar" -
Alterar com renice (root):
$ sudo renice -n -10 -p $(pgrep tar)$ ps -ef | grep tar -
Iniciar Xeyes com nice diferente:
$ nice -n 10 xeyes &$ ps -ef | grep xeyes -
Verificar alterações:
$ pgrep -l "xeyes"$ sudo renice -n -20 -p $(pgrep xeyes)$ ps -ef | grep xeyes -
Alterar todos os processos de um utilizador:
$ sudo renice -n 10 -u fred
Exercícios Exploratórios
- Iniciar processo e alterar com renice:
$ $ tar czf backups.tar.gz /home/john/ &$ $ pgrep -l "tar"$ $ sudo renice -n 10 -p $(pgrep tar)$ $ ps -ef | grep tar- Iniciar Xeyes e alterar prioridade via kill:
$ $ xeyes &$ $ pgrep -l "xeyes"$ $ kill -s "STOP" <PID do xeyes> # No terminal do Xeyes:$ $ nice -n 10 tar czf meusficheiros.tar.gz /etc/ssh/ /home/jane/$ $ kill -s "CONT" <PID do xeyes>- Verificar todos os processos com nice alterada:
$ $ ps -el | grep -v "80" | grep -v "NI"- Alterar nice em tempo real com o
top:
No interior do top, prima a tecla r (renice). O top pede, por ordem:
- o PID do processo a alterar;
- o novo valor de nice (de -20 a 19; valores negativos requerem root).
$ top# dentro do top: r -> <PID> -> <novo_nice>Pode confirmar o valor atual com ps -o pid,ni,comm -p <PID> ou, a partir da shell, usar renice -n <valor> -p <PID>.
- Lançar processo com nice e verificar no
top:
$ $ nice -n 15 sleep 120 &$ $ top # Verifique a coluna NI (nice value) do processo sleepNo top, a coluna NI mostra o valor nice (15 neste caso). Prima q para sair do top.