Essencial quando o servidor Linux fica lento! Ajuste com perfeição a prioridade de processos com o comando nice

Visão geral

Em ambientes com recursos de servidor limitados, a execução de tarefas em segundo plano ou scripts em lote pesados pode degradar o tempo de resposta de serviços essenciais. Neste artigo, veremos dicas práticas sobre como usar os comandos nice e renice para definir prioridades de escalonamento de CPU e manter a estabilidade do sistema.

1. Verificação da prioridade de processos (NI/PR) e configuração do ambiente de monitoramento com htop

Instale os pacotes htop e procps, ferramentas essenciais para a prática de monitoramento da prioridade de processos.

apt-get update -qq && apt-get install -y htop procps

O comando ps verifica as informações detalhadas e os valores de prioridade dos processos em execução no sistema.
No resultado exibido, NI é o valor nice que pode ser ajustado pelo usuário, enquanto PRI representa a prioridade atribuída de fato pelo escalonador do kernel.
⚙️ [Principais opções]

-e : Seleciona e exibe todos os processos em execução no sistema.
-o : Define o formato de saída personalizado com as colunas desejadas (pid, ni, pri, comm, etc.).
-u : Filtra e exibe apenas os processos pertencentes a um usuário específico.
-p : Consulta apenas os processos correspondentes ao PID (ID do processo) especificado.
-f : Exibe uma listagem em formato completo com todos os detalhes do processo.

ps -eo pid,ni,pri,comm | head -n 15

2. Executando tarefas em segundo plano com baixa prioridade usando o comando nice

Crie um diretório de trabalho temporário e navegue até ele para gerar e gerenciar com segurança os arquivos de teste necessários para a prática.

mkdir -p /tmp/nice_demo && cd /tmp/nice_demo

Use o comando nice com o valor nice definido como 10 para reduzir a prioridade — cedendo o uso dos recursos de CPU — e execute a criação de um arquivo grande em segundo plano (&).

nice -n 10 dd if=/dev/urandom of=/tmp/nice_demo/sample.dat bs=1M count=100 &

Combine os comandos ps e grep para verificar o PID do processo dd em execução e confirmar se o valor nice (NI) aplicado reflete a configuração desejada.

ps -eo pid,ni,comm | grep dd

3. Alterando a prioridade de um processo em execução em tempo real com o comando renice

Para praticar a alteração de prioridade em tempo real, execute em segundo plano (&) um processo sleep que aguarda por 300 segundos.

sleep 300 &

Utilize a variável especial $!, que armazena o ID (PID) do processo mais recente executado em segundo plano, para salvá-lo na variável de ambiente TARGET_PID.

TARGET_PID=$!

Verifique o valor nice atual (NI) do processo de destino com o comando ps; observe que ele está operando com o valor padrão 0.

ps -p $TARGET_PID -o pid,ni,comm

Use o comando renice para alterar o valor nice do processo de destino em execução para 15, diminuindo sua prioridade.
Pela saída exibida, é possível confirmar que a prioridade anterior (old priority 0) foi alterada com sucesso para a nova prioridade (new priority 15).

renice 15 -p $TARGET_PID

Consulte o processo de destino novamente com o comando ps para confirmar se o valor nice (NI) foi atualizado imediatamente para 15.

ps -p $TARGET_PID -o pid,ni,comm

Encerre forçadamente (kill -9) o processo de teste concluído para liberar os recursos do sistema.

kill -9 $TARGET_PID

4. Atribuindo alta prioridade (nice negativo) com privilégios de root e cuidados necessários

Como usuários comuns não podem definir valores nice negativos, utilize privilégios de administrador com sudo para aplicar o valor -5 e executar o processo com prioridade elevada em segundo plano (&).
Processos com valores nice negativos ganham maior prioridade no escalonamento da CPU, recebendo recursos do sistema de forma preferencial.

sudo nice -n -5 bash -c ’echo “High priority process running” && sleep 5’ &

Consulte os processos em execução com o comando ps para verificar se o valor nice (NI) do processo de destino (sleep) foi configurado corretamente como -5.
No resultado exibido, é possível constatar que, ao contrário dos processos padrão normais (0), o valor nice negativo (-5) foi aplicado, operando com alta prioridade.

ps -eo pid,ni,comm | grep -E ‘sleep|bash’ | tail -n 5

Vimos até aqui como ajustar a prioridade de processos usando o comando nice, uma ferramenta muito útil quando o servidor Linux começa a apresentar lentidão.
Quando os recursos do servidor estiverem sobrecarregados, defina prioridades adequadas a cada situação para operar o sistema de forma muito mais estável e eficiente.