vmstat, iostat e sar - Entendendo Ferramentas de Analise de Desempenho do Linux
O Que Voce Vai Aprender
- O que cada ferramenta faz e como ler sua saida
- Como identificar gargalos de CPU, memoria, I/O e rede
- Quando usar
vmstatvsiostatvssar
Resumo Rapido: Papel de Cada Ferramenta
| Ferramenta | Melhor Para |
|---|---|
vmstat |
Visao geral do sistema -- CPU, memoria, swap, I/O de relance |
iostat |
Detalhes de I/O por dispositivo -- await, IOPS, utilizacao |
sar |
Dados historicos -- analise de tendencias e revisao pos-incidente |
Pre-requisitos
- SO: Ubuntu ou Linux baseado em RHEL
iostatesarrequerem o pacotesysstat- Instale com:
sudo apt install sysstat
O Que e o vmstat?
vmstat (Virtual Memory Statistics) exibe CPU, memoria, swap, I/O e contagem de processos em uma unica saida. E a primeira ferramenta a usar quando voce precisa de uma visao rapida do sistema inteiro para identificar qual subsistema esta sob pressao.
Uso Basico
vmstat [intervalo [contagem]]
$ vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 1543200 52480 921600 0 0 14 38 312 580 12 3 84 1 0 0 0 0 1540800 52480 922100 0 0 0 12 280 510 5 1 93 1 0 0 0 0 1539900 52480 922500 0 0 0 16 295 530 4 1 94 1 0
Lendo os Campos
procs
r: Processos aguardando execucao. Se isso excede consistentemente a contagem de CPUs, voce tem saturacao de CPU.b: Processos bloqueados em sono ininterruptivel (tipicamente aguardando I/O).
memory (em KB)
swpd: Swap em uso. Qualquer valor diferente de zero merece atencao.free: Memoria nao utilizada.buff/cache: Buffer e cache de paginas -- memoria que o SO mantem para reutilizacao, nao desperdicada.
swap
si: Taxa de swap-in (disco -> memoria). Consistentemente diferente de zero significa pressao de memoria.so: Taxa de swap-out (memoria -> disco). Consistentemente diferente de zero significa pressao de memoria.
io (blocos/seg)
bi: Blocos lidos de dispositivos de bloco.bo: Blocos escritos em dispositivos de bloco.
cpu (%)
us: Uso de CPU em espaco de usuario.sy: Uso de CPU em espaco do kernel.id: Tempo ocioso.wa: Tempo aguardando I/O. Valores sustentados acima de 10% indicam um gargalo de I/O.st: Tempo roubado pelo hypervisor desta VM (apenas ambientes virtualizados).
A primeira linha e cumulativa
A primeira linha da saida do vmstat e a media desde o boot e e util apenas como linha de base. Diagnostique a partir da segunda linha em diante. Padroes comuns: vmstat 1 para monitoramento continuo, vmstat 5 12 para um snapshot de um minuto em intervalos de cinco segundos.
O Que e o iostat?
iostat mostra estatisticas resumidas de CPU junto com metricas de I/O por dispositivo. Apos o vmstat levantar suspeita de um gargalo de I/O, iostat -x identifica qual dispositivo e o culpado.
Instalacao (apenas na primeira vez)
$ sudo apt install sysstat # Ubuntu/Debian $ sudo dnf install sysstat # RHEL/Fedora
Uso Basico
$ iostat -x 1 5
Device r/s w/s rkB/s wkB/s await r_await w_await util% sda 1.20 5.30 48.00 212.00 2.50 1.80 2.70 3.20 nvme0n1 25.00 80.00 800.00 3200.00 0.48 0.40 0.52 8.50
Campos Principais
| Campo | Descricao | Limite de Alerta |
|---|---|---|
await |
Tempo medio de resposta por requisicao (ms) | HDD: >20ms / SSD: >1ms |
r_await |
Tempo de resposta de leitura (ms) | -- |
w_await |
Tempo de resposta de escrita (ms) | -- |
util% |
Porcentagem de ocupacao do dispositivo | Preocupante: >80%, Saturacao: 100% |
r/s, w/s |
Operacoes de leitura/escrita por segundo (IOPS) | Compare com a especificacao do dispositivo |
Quando util% se aproxima de 100%, o dispositivo esta saturado -- a fila de I/O esta crescendo e os tempos de resposta inflam. Um pico em await junto com util% alto confirma que o dispositivo e o gargalo. Note que util% e uma metrica em nivel de dispositivo, nao de particao.
Filtrar Dispositivos Especificos
$ iostat -x -d sda nvme0n1 1
O Que e o sar?
sar (System Activity Reporter) coleta continuamente metricas de CPU, memoria, I/O e rede e as armazena como dados historicos. Seu principal valor e responder perguntas como "o que aconteceu as 3 da manha na noite passada?" que ferramentas em tempo real nao conseguem.
Habilitando o sar
$ sudo apt install sysstat $ sudo systemctl enable sysstat --now
Uma vez habilitado, o daemon sadc grava registros em /var/log/sa/saDD (onde DD e a data com dois digitos). Os dados se acumulam diariamente.
Opcoes Comuns
$ sar -u 1 5 # Utilizacao de CPU $ sar -r 1 5 # Uso de memoria $ sar -b 1 5 # Estatisticas de I/O $ sar -n DEV 1 5 # Estatisticas de rede por interface $ sar -n EDEV 1 5 # Estatisticas de erros de rede $ sar -q 1 5 # Media de carga e contagem de processos
Revisando Dados Historicos
# Estatisticas de CPU de hoje (todos os intervalos gravados) $ sar -u # Um dia inteiro de todas as metricas (flag -A) $ sar -A -f /var/log/sa/sa01
00:00:01 all 2.34 0.00 5.67 0.12 0.00 91.87 01:00:01 all 1.23 0.00 3.45 0.08 0.00 95.24 02:00:01 all 0.98 0.00 2.11 0.05 0.00 96.86
Alterando o intervalo de coleta
O intervalo de coleta padrao e 10 minutos, configurado em /etc/cron.d/sysstat ou /etc/sysstat/sysstat. Para ambientes de producao onde voce precisa de precisao pos-incidente, altere para 1-2 minutos. Tenha em mente que intervalos mais curtos aumentam o uso de disco proporcionalmente.
Qual Ferramenta Voce Deve Usar?
Combinar a ferramenta certa com sua pergunta de investigacao reduz significativamente o tempo de diagnostico.
| Pergunta | Ferramenta | Campos Principais |
|---|---|---|
| Qual e o estado geral do sistema? | vmstat 1 |
r, wa, si/so |
| A CPU e o gargalo? | vmstat / sar -u |
r, us+sy, id |
| Qual disco esta lento? | iostat -x 1 |
await, util% |
| O sistema esta fazendo swap? | vmstat |
si, so, swpd |
| O que aconteceu ontem a noite? | sar -u / -r / -b |
Visao de serie temporal |
| A rede esta saturada? | sar -n DEV |
rxkB/s, txkB/s |
Padroes Praticos de Deteccao de Gargalos
Quatro sequencias de diagnostico comuns usadas em ambientes de producao.
1. Suspeita de Gargalo de CPU
# Passo 1: Visao geral do sistema $ vmstat 1 10 # Observe se r (fila de execucao) excede consistentemente a contagem de CPUs # Passo 2: Confirmar com sar $ sar -u 1 10 # us + sy sustentado acima de 90% -> CPU e o gargalo
2. Suspeita de Pressao de Memoria ou Swap
# Passo 1: Verificar atividade de swap $ vmstat 1 10 # si/so consistentemente diferente de zero -> swap ativo (pressao de memoria) # Passo 2: Detalhe de memoria $ sar -r 1 5 # Alto %memused + kbswpused crescente -> requer acao
3. Suspeita de Gargalo de I/O
# Passo 1: vmstat para confirmar wa $ vmstat 1 5 # wa acima de 10% -> suspeita de gargalo de I/O # Passo 2: iostat para identificar o dispositivo $ iostat -x 1 10 # Foque em dispositivos com alto await ou util% acima de 80% # Alerta HDD: await >20ms / Alerta SSD: await >1ms
4. Suspeita de Problema de Rede
$ sar -n DEV 1 5 # rxkB/s / txkB/s: verifique a utilizacao de largura de banda # rxerr/s / txerr/s diferente de zero: possivel problema de hardware ou driver