vmstat, iostat e sar - Entendendo Ferramentas de Analise de Desempenho do Linux

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 vmstat vs iostat vs sar

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
  • iostat e sar requerem o pacote sysstat
  • 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

Proximas Leituras