Seu servidor está lento? Aplicações travando? A CPU está em 100%? Descubrir qual processo está devorando seus recursos de processamento é fundamental para manter a saúde do seu sistema. Vamos explorar as principais ferramentas e técnicas para diagnosticar o consumo de CPU no Linux.
Por Que Monitorar CPU?
Um sistema com CPU saturada pode:
- Reduzir drasticamente a responsividade das aplicações
- Gerar gargalos em processamento de dados
- Indicar problemas silenciosos antes de causarem falhas críticas
- Ajudar na otimização de recursos
1. top — A Ferramenta Mais Simples
O comando top é seu ponto de partida. É interativo e mostra em tempo real quais processos estão consumindo mais CPU.
top
O que observar:
- %CPU: Percentual de CPU consumido pelo processo
- PID: Identificador do processo
- COMMAND: Nome do comando/aplicação
Dica: Pressione Shift + P para ordenar por consumo de CPU (já vem assim por padrão, mas é bom saber).
Usando top em batch mode
Se quiser capturar dados uma única vez sem modo interativo:
top -bn1 | head -30
2. ps — Listagem Pontual e Filtrável
Para uma análise rápida sem modo interativo, ps é perfeito:
ps aux --sort=-%cpu | head -10
Este comando lista os 10 processos que mais consomem CPU.
Explicação dos campos:
- USER: Usuário que iniciou o processo
- %CPU: Percentual de CPU
- %MEM: Percentual de memória
- VSZ: Memória virtual usada
- RSS: Memória física usada
- COMMAND: Comando completo
3. htop — Uma Versão Melhorada do top
Se top é básico, htop é sua versão turbinada com interface mais amigável:
htop
Vantagens do htop:
- Visualização em cores
- Navegação mais intuitiva com setas
- Possibilidade de matar processos diretamente
- Mostra árvore de processos mais clara
4. pidstat — Monitoramento Contínuo de Processos
O pidstat é parte do pacote sysstat e permite monitorar um processo ao longo do tempo:
pidstat -u 1 10
Isso monitora a CPU a cada 1 segundo por 10 iterações.
Para um processo específico:
pidstat -u -p 1234
Substitua 1234 pelo PID do processo.
5. iotop — Descobrir se é CPU ou Disco
Às vezes, a CPU está alta porque o sistema está esperando I/O de disco:
sudo iotop
Isso mostra quais processos estão fazendo mais leitura/escrita em disco.
6. dstat — Dashboard Completo
dstat oferece visão holística do sistema:
dstat -tcms
Mostra CPU, memória, disco e rede em tempo real.
7. Análise de Processos Específicos
Ver detalhes de um processo
cat /proc/[PID]/stat
Ver threads de um processo
ps -eLf | grep [PID]
Rastrear chamadas de sistema (strace)
Se suspeita que um processo está preso:
strace -p [PID]
Mostra quais operações de sistema o processo está realizando.
Caso Prático: Diagnosticando Um Sistema Lento
Passo 1: Verificar uso geral de CPU
top -bn1 | head -3
Passo 2: Identificar o processo culpado
ps aux --sort=-%cpu | head -5
Passo 3: Analisar mais profundamente
pidstat -u -p [PID]
Passo 4: Verificar se é CPU ou I/O
sudo iotop
Passo 5: Coletar histórico para análise
top -bn1 > cpu_analysis_$(date +%s).txt
Dicas de Ouro
- Diferencie entre CPU do sistema e do usuário:
us(user) = tempo em código de aplicaçõessy(system) = tempo em chamadas de sistema do kernel
- Cores no top/htop:
- Verde = CPU normal
- Amarelo/Laranja = CPU elevada
- Vermelho = CPU crítica
- Carga do sistema vs CPU:
- Load average > núcleos disponíveis = sistema saturado
- Veja com:
nprocou/proc/cpuinfo
- Automatizar monitoramento:
watch -n 1 'ps aux --sort=-%cpu | head -10'
- Exportar dados para análise posterior:
sar -u 1 10 > cpu_history.txt
Conclusão
Dominar essas ferramentas transforma você em um detective de performance. Cada uma tem seu lugar:
- top/htop: Visão rápida e interativa
- ps: Análise pontual e filtrável
- pidstat/sar: Monitoramento contínuo
- strace: Investigação profunda
O segredo é praticar e conhecer seu sistema em estado normal para reconhecer anomalias quando elas aparecem.
Gostou? Compartilhe com alguém que precisa diagnosticar CPU no Linux!




