Pular para o conteúdo principal

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