🖥️ Componente: CPU. Em Linux, o load average é o primeiro indicador a observar. Este artigo cobre todas as ferramentas de diagnóstico de CPU — do top ao perf — com interpretação detalhada de cada campo e comandos prontos a executar em Debian, Ubuntu, RHEL e Rocky Linux.
Quando suspeitar de problema de CPU?
- Load average persistentemente acima do número de vCPUs da VM
- Campo
%wa(iowait) elevado notop— pode indicar bottleneck de disco, não de CPU - Campo
%st(steal) acima de 5% — o host físico está a “roubar” ciclos de CPU à VM - Sistema lento mas memória e disco parecem normais
- Apenas um core a 100% com os restantes livres — aplicação single-threaded
1. uptime e load average — Primeiro Diagnóstico
# Carga atual e load average 1/5/15 minutos
uptime
# Exemplo de output:
# 14:32:01 up 12 days, 3:21, 2 users, load average: 3.82, 2.15, 1.43
# 1min 5min 15min
# Número de CPUs disponíveis
nproc
# Load average detalhado do kernel
cat /proc/loadavg
Interpretar o load average: dividir o valor pelo número de CPUs (nproc). Um load de 4.0 com 4 CPUs = 100% de utilização. Um load de 4.0 com 2 CPUs = sistema a 200%, com fila de espera.
2. top — Monitor em Tempo Real
# Iniciar top
top
# Modo não-interativo (útil para scripts — 3 iterações, 2s de intervalo)
top -bn3 -d2 | head -40
Interpretação da linha de CPU no top
| Campo | Significado | Limiar de alerta |
|---|---|---|
| us | CPU em espaço de utilizador (aplicações) | Comparar com sy |
| sy | CPU em modo kernel (system calls, drivers) | > 30% pode indicar driver problemático |
| ni | Processos com prioridade alterada (nice) | Informativo |
| id | CPU inativa (idle) | < 10% sustentado = saturação |
| wa | Espera por I/O de disco (iowait) | > 20% = bottleneck de disco |
| hi | Interrupções de hardware | > 5% pode indicar problema de NIC/disco |
| si | Interrupções de software | > 5% verificar drivers de rede |
| st | CPU steal — roubada pelo hypervisor | > 5% = host sobrecarregado |
Teclas úteis dentro do top: P ordenar por CPU · M ordenar por memória · 1 ver todos os cores · k terminar processo · q sair
apt/yum install htop), o htop oferece a mesma informação com interface mais legível, barras coloridas por core, e navegação interativa. Usar top em sistemas onde htop não está instalado.
3. mpstat — Estatísticas por Core
# Requer pacote sysstat
# apt install sysstat / yum install sysstat
# Estatísticas de todos os cores, a cada 2 segundos, 5 amostras
mpstat -P ALL 2 5
# Apenas CPU total (mais legível)
mpstat 1 5
Verificar a distribuição de carga entre cores. Se apenas um core está a 100% com os restantes livres, a aplicação é single-threaded — adicionar mais vCPUs não resolve o problema nesse caso.
mpstat -P ALL para detetar desequilíbrio de carga entre cores — pode indicar problemas de NUMA, IRQ affinity ou aplicações que não paralelizam eficientemente.
4. vmstat — Visão Sistémica de CPU e I/O
# Atualização a cada 2 segundos, 10 amostras
vmstat 2 10
Colunas de CPU e processo mais relevantes:
- r: processos em fila de execução (runqueue) — se persistentemente > nº CPUs, saturação confirmada
- b: processos bloqueados à espera de I/O — se > 0 com
waelevado, problema é disco não CPU - us, sy, id, wa, st: mesmo significado que no
top
b for elevado e wa for alto, o sistema parece lento de CPU mas o bottleneck é de disco ou rede. Não adicionar vCPUs — investigar o I/O.
5. sar — Histórico de CPU
# CPU atual — 1 amostra por segundo, 10 amostras
sar -u 1 10
# Histórico de CPU de hoje (requer sysstat ativo)
sar -u -f /var/log/sa/sa$(date +%d)
# Histórico de CPU de ontem
sar -u -f /var/log/sa/sa$(date -d yesterday +%d)
# CPU por core, histórico
sar -P ALL 1 5
# Ver todos os ficheiros de histórico disponíveis
ls -lh /var/log/sa/
sar é a única ferramenta que permite comparar o desempenho atual com dias anteriores sem monitorização dedicada. Se o utilizador diz “o sistema estava lento ontem de manhã”, o sar pode confirmar — ou desmentir.
6. pidstat — CPU por Processo com Histórico
# CPU de cada processo, amostras de 3 segundos
pidstat -u 3 5
# Monitorizar processo específico por PID
pidstat -p <PID> 1 10
# Threads de um processo
pidstat -t -p <PID> 1 5
# I/O e CPU de todos os processos
pidstat -u -d 2 3
7. perf — Profiling Avançado
requer linux-tools
# Instalar
apt install linux-tools-$(uname -r) linux-tools-common # Debian/Ubuntu
yum install perf # RHEL/Rocky
# Top de funções a consumir CPU (interativo)
perf top -g
# Gravar perfil durante 30 segundos
perf record -ag sleep 30
perf report
# Estatísticas de CPU para um comando específico
perf stat ls -la /
perf pode necessitar de ajuste nos parâmetros do kernel: sysctl -w kernel.perf_event_paranoid=1. Em produção, usar com cautela — o overhead de perf record -ag pode ser significativo.
8. Checklist — Diagnóstico de CPU
- ✅
uptime && nproc— load average vs número de CPUs - ✅
top— campo%st(steal) acima de 5%? Problema no host - ✅
top— campo%wa(iowait) acima de 20%? Bottleneck de disco, não de CPU - ✅
mpstat -P ALL 1 5— distribuição equilibrada entre cores? - ✅
vmstat 1 5— colunarpersistentemente acima do nº de CPUs? - ✅
pidstat -u 3 3— qual processo consome mais CPU? - ✅
sar -u -f /var/log/sa/sa$(date +%d)— padrão histórico hoje?
