Capítulo 4.4 - Prioridades e Nice Values
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender as prioridades dos processos
- Utilizar nice values
- Alterar prioridades com nice e renice
- Entender o scheduler do Linux
O que é Prioridade?
A prioridade de um processo determina seu acesso à CPU. Quanto maior a prioridade, mais tempo de CPU o processo recebe.
Nice Values
Escala
Nice values: -20 a +19
- -20: Prioridade mais alta (apenas root)
- 0: Prioridade padrão
- +19: Prioridade mais baixa
Regra:
- Quanto menor = mais prioritário
- Quanto maior = menos prioritário
Visualizar a Prioridade
# Com ps
ps -o pid,ni,comm
ps aux | head
# Coluna NI = Nice value
# Coluna PRI = Prioridade real (calculada)
# Com top
top
# Coluna NI exibe o nice value
Alterar a Prioridade
nice - No Início
# Iniciar com prioridade baixa
nice -n 10 comando
nice -n +10 comando # Mesmo efeito
# Iniciar com prioridade alta (root)
sudo nice -n -10 comando
# Verificar
ps -o pid,ni,comm | grep comando
renice - Processo Existente
# Alterar prioridade de um processo
renice 10 PID
# Por usuário
sudo renice 10 -u user1
# Por grupo
sudo renice 10 -g developers
# Por processo e filhos
sudo renice 10 -p PID
Exemplos:
# Processo que consome muita CPU → prioridade baixa
renice 15 $(pidof backup_script)
# Processo importante → prioridade alta (root)
sudo renice -10 $(pidof critical_app)
Scheduler do Linux (CFS)
Completely Fair Scheduler
O scheduler do Linux usa os nice values para balancear o tempo de CPU:
Funcionamento:
- Nice mais baixo = mais tempo de CPU
- Equidade entre processos de mesma prioridade
- Considera o tempo já utilizado
Processos em Tempo Real
chrt - Tempo Real
Para processos que precisam de garantia de tempo:
# Ver políticas disponíveis
chrt -m
# Definir política FIFO
sudo chrt -f 50 comando
# -f: FIFO
# 50: Prioridade (1-99)
# Definir política Round-Robin
sudo chrt -r 50 comando
# Alterar processo existente
sudo chrt -f -p 50 PID
Políticas:
- SCHED_FIFO: First In First Out
- SCHED_RR: Round Robin
- SCHED_OTHER: Normal (CFS)
Atenção: Processos em tempo real podem monopolizar a CPU!
Exemplos Práticos
Cenário 1: Backup Noturno
# Iniciar backup com prioridade bem baixa
nice -n 19 backup_script.sh &
# Não irá prejudicar outros processos
Cenário 2: Processo Crítico
# Aumentar prioridade de um processo importante
sudo renice -10 $(pidof database_server)
# Receberá mais tempo de CPU
Cenário 3: Balanceamento
# Vários processos, balancear
renice 5 $(pidof app1)
renice 5 $(pidof app2)
renice 5 $(pidof app3)
# Todos com a mesma prioridade
Monitoramento de Prioridades
top/htop
# Ver nice values
top
# Coluna NI
# Ordenar por prioridade
# No top: pressione 'r' e depois digite o PID
ps com Prioridade
# Ver nice e prioridade
ps -eo pid,ni,pri,comm
# Ordenar por prioridade
ps -eo pid,ni,pri,comm --sort=-pri
Resumo
Neste capítulo, você aprendeu:
Nice values: -20 (alta) a +19 (baixa), 0 padrão
Alterar: nice (início), renice (existente)
Scheduler: CFS balanceia conforme nice values
Tempo real: chrt para garantias de tempo real
Monitoramento: ps, top para visualizar prioridades
Prática: Ajustar conforme a importância do processo
Próximos Passos
Capítulo 4.5: Processos e Recursos
Capítulo 4.6: Jobs e Tarefas em Background
Capítulo criado em: Dezembro de 2024