Como Verificar e Testar o Desempenho de E/S do Disco no Linux

Monitorar e avaliar o desempenho de Entrada/Saída (E/S) do disco é crucial para diagnosticar problemas de gargalo em sistemas Linux. Este guia apresenta comandos úteis para análise em tempo real e ferramentas para testes de desempenho.

  1. Comandos para Monitorar a Atividade de E/S do Disco

1.1 Utilitário top

O comando top fornece uma visão geral do sistema. Para um indicativo rápido da carga de E/S do disco, observe a coluna wa% (tempo de espera de E/S). Um valor consistentemente alto pode sugerir intensa atividade de disco, embora também possa estar relacionado a E/S de rede ou outras inetrrupções. Para detalhes completos sobre todas as métricas, consulte a documentação do comando.

1.2 Utilitário sar

O sar é uma ferramenta abrangente para análise de desempenho. Para visualizar estatísticas de disco em tempo real, use a opção -d com exibição de nomes de dispositivo (-p):

sar -d -p 1 3

Este comando coleta dados de todos os discos a cada 1 segundo, três vezes. As métricas-chave incluem:

  • await: Tempo médio (em milissegundos) que uma solicitação de E/S gasta na fila e sendo atendida.
  • svctm: Tempo médio (em milissegundos) para completar uma solicitação de E/S no dispositivo.
  • %util: Porcentagem do tempo em que o dispositivo estava ocupado processando solicitações.

Interpretação: Em condições saudáveis, svctm deve ser menor que await. Se %util se aproximar constantemente de 100%, indica que o disco está sobrecarregado, representando um potencial gargalo. Para analisar relatórios históricos armazenados em /var/log/sa/, utilize a opção -f:

sar -d -p -f /var/log/sa/sa21 | less

1.3 Utilitário iostat

O iostat oferece uma visão detalhada das métricas de E/S por dispositivo. A saída contém muitas das mesmas métricas do sar, como await, svctm e %util.

iostat -xdm 2 2

A opção -x exibe estatísticas estendidas, -d foca em discos, -m exibe valores em megabytes e 2 2 define o intervalo e a contagem de amostragem.

1.4 Utilitário vmstat

O vmstat reporta estatísticas de virtualização de memória, incluindo blocos de E/S. Execute:

vmstat 1 4

As colunas bi (blocos recebidos) e bo (blocos enviados) indicam a taxa de transferência de blocos em relação a todos os dispositivos de bloco (discos, etc.). Valores persistentemente altos sugerem intensa atividade de E/S no disco.

  1. Testando a Performence de E/S do Disco

2.1 Utilitário hdparm

O hdparm pode realizar testes simples de leitura. Atenção: Esta ferramenta mede apenas a velocidade de leitura.

sudo hdparm -Tt /dev/sda

O teste -T mede a leitura de cache do Linux (memória), e -t mede a leitura direta do disco. O resultado do -t é a taxa de leitura de disco mais representativa.

2.2 Utilitário dd

O dd pode ser usado para testes aproximados de velocidade de leitura e escrita. Para uma medição mais precisa, use a flag oflag=direct (escrita) ou iflag=direct (leitura) para contornar o cache do sistema.

Teste de Escrita:

dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 oflag=direct status=progress
rm -f /tmp/testfile

Teste de Leitura: (Assumindo um arquivo de teste existente)

dd if=/tmp/largefile of=/dev/null bs=1M iflag=direct status=progress

Os resultaods fornecem uma estimativa da taxa de transferência em MB/s.

2.3 Utilitário fio

O fio é a ferramenta padrão da indústria para testes detalhados e flexíveis de desempenho de E/S (IOPS, latência e taxa de transferência). Ele permite simular cargas de trabalho variadas. Aqui estão alguns exemplos de perfil de teste:

Leitura Sequencial:

fio --name=seq_read --ioengine=libaio --direct=1 --bs=128k --size=1G --numjobs=1 --rw=read --filename=/tmp/fiotest

Escrita Aleatória:

fio --name=rand_write --ioengine=libaio --direct=1 --bs=4k --size=1G --numjobs=4 --rw=randwrite --iodepth=32 --filename=/tmp/fiotest

Leitura e Escrita Aleatórias Mistas (70/30):

fio --name=rand_mixed --ioengine=libaio --direct=1 --bs=4k --size=1G --numjobs=4 --rw=randrw --rwmixread=70 --iodepth=32 --filename=/tmp/fiotest

Os parâmetros --numjobs (número de workers) e --iodepth (profundidade da fila de E/S) são cruciais para simular cargas realistas e extrair o máximo desempenho do disco.

Tags: Linux IO de Disco Desempenho do Sistema Monitoramento de Desempenho sar

Publicado em 7-12 03:35