Disco lento no Linux? Como achar gargalos de E/S com iostat
Aprenda a diagnosticar lentidão em discos e uso excessivo de memória swap no Linux usando ferramentas nativas como iostat e vmstat.
Resumo
- A lentidão em sistemas operacionais muitas vezes decorre da saturação das controladoras de disco e da fila de requisições de E/S pendentes.
- O utilitário iostat expõe o uso detalhado da CPU e o desempenho de cada dispositivo de armazenamento conectado ao servidor.
- Métricas como a taxa de transferência e o tempo médio de serviço ajudam a isolar falhas de hardware e gargalos de software.
- O comando vmstat revela o comportamento da memória virtual, identificando quando o sistema começa a utilizar o disco como RAM auxiliar.
- A análise combinada dessas ferramentas nativas previne paradas inesperadas e orienta a expansão correta da infraestrutura.
Por que o seu servidor Linux fica lento sem motivo aparente?
Quando uma aplicação web começa a responder com atraso ou o sistema inteiro trava na hora de processar uma tarefa pesada, a culpa costuma cair sobre o processador ou sobre a falta de memória RAM. Porém, em muitos casos, o verdadeiro vilão é o subsistema de armazenamento. As unidades de disco, sejam discos rígidos mecânicos tradicionais ou unidades de estado sólido modernas, possuem limites físicos de velocidade que, quando ultrapassados, criam uma fila de espera invisível e travam o sistema operacional inteiro.
Para investigar esse tipo de problema sem instalar softwares complexos de monitoramento, os administradores de sistemas recorrem a utilitários nativos que já vêm embutidos na grande maioria das distribuições Linux. Ferramentas como o iostat e o vmstat são verdadeiros canivetes suíços para inspecionar a saúde interna da máquina em tempo real. Elas revelam exatamente o que está acontecendo nos bastidores do kernel, permitindo diferenciar um pico momentâneo de carga de um gargalo crônico que exige intervenção imediata, como ajustar limites de conexões simultâneas para desafogar o fluxo de dados.
Como instalar e extrair os primeiros dados do iostat
O comando iostat faz parte de um pacote de utilitários voltado para estatísticas de desempenho de sistemas chamados de sysstat. Caso o comando não esteja disponível no seu ambiente de produção, a instalação é rápida através do gerenciador de pacotes padrão da distribuição, como o APT no Debian ou Ubuntu. Na prática, ele coleta métricas diretamente do núcleo do sistema operacional sobre a carga de trabalho da CPU e o volume de transferência de dados trafegado em cada partição ou disco físico montado.
Ao executar o comando básico no terminal, a ferramenta exibe um resumo geral desde o momento em que a máquina foi ligada pela última vez. Para monitorar o comportamento real da máquina sob estresse, o ideal é informar um intervalo de tempo em segundos, seguido pela quantidade de repetições desejadas. Por exemplo, solicitar leituras a cada dois segundos força a ferramenta a atualizar o painel continuamente, o que facilita enormemente a identificação de picos repentinos de escrita ou leitura causados por bancos de dados pesados ou rotinas de backup.
sudo apt update && sudo apt install sysstat -y
iostat -xz 2 5Interpretando métricas vitais como await, %util e tps
Ler a saída do iostat exige atenção a colunas específicas que determinam se o disco está ou não sobrecarregado. A coluna tps indica o número de transferências por segundo enviadas ao dispositivo físico, o que engloba tanto operações de leitura quanto de escrita. No entanto, um valor alto de tps nem sempre significa um problema, pois discos rápidos lidam bem com milhares de operações por segundo se a controladora estiver dimensionada corretamente.
O verdadeiro sinal de alerta reside na coluna await, que mede o tempo médio em milissegundos que cada requisição de E/S demorou para ser atendida, incluindo o tempo que passou na fila de espera e o tempo de processamento real no disco. Se o valor do await subir vertiginosamente, a aplicação vai começar a acumular threads bloqueadas. Outro indicador crucial é a coluna %util, que mostra a porcentagem de tempo em que o disco permaneceu ocupado processando requisições, revelando saturação quando se aproxima consistentemente de cem por cento.
Identificando o uso excessivo de memória swap com o vmstat
Quando a memória RAM física se esgota, o sistema operacional recorre a uma técnica chamada paginação, transferindo pedaços inativos da memória para uma área reservada no disco rígido conhecida como espaço de swap. Embora evite que os aplicativos fechem por falta de memória, essa troca constante degrada severamente o desempenho geral, pois ler e escrever dados na unidade de armazenamento é ordens de magnitude mais lento do que acessá-los diretamente nos pentes de RAM.
Para diagnosticar esse comportamento indesejado, o comando vmstat entra em cena exibindo um panorama integrado sobre processos, memória, paginação, interrupções e atividade da CPU. A execução contínua do comando revela se o sistema está sofrendo de escassez crônica de recursos físicos, ajudando a decidir se é hora de otimizar os serviços em execução ou monitorar a temperatura geral do hardware para evitar falhas térmicas catastróficas sob uso intenso.
vmstat 2 10Analisando as colunas si e so para detectar estrangulamento
Dentro do relatório gerado pelo vmstat, duas colunas merecem monitoramento constante por parte do administrador: si (swap in) e so (swap out). A coluna si indica a quantidade de blocos de dados que estão sendo trazidos do disco para a memória RAM por segundo, enquanto a coluna so mostra quantos blocos estão sendo empurrados da RAM para o disco no mesmo intervalo de tempo.
Se os valores de si e so permanecerem zerados ou próximos disso durante a operação normal, a memória do servidor está adequada à carga de trabalho atual. Por outro lado, se essas colunas apresentarem números elevados e constantes, significa que o servidor está sofrendo de falta crônica de memória física, um fenômeno conhecido popularmente como thrashing. Nesse cenário, o sistema passa mais tempo movendo dados entre a RAM e o disco do que executando o código real das aplicações. Para aprofundar esses conceitos na prática em produção, confira também nossa análise técnica sobre Tela escura no notebook? Como testar o backlight na bancada.
Considerações finais sobre o diagnóstico de E/S no Linux
Identificar gargalos de entrada e saída no Linux deixa de ser um mistério intransponível quando dominamos o uso conjunto de ferramentas nativas e leves como o iostat e o vmstat. Monitorar o tempo de espera das filas de disco e o fluxo de paginação na swap garante que o administrador atue na raiz do problema antes que a lentidão afete a experiência dos usuários finais. Compreender essas métricas evita gastos desnecessários com trocas prematuras de hardware e direciona os esforços de otimização exatamente para onde o sistema mais precisa.
Manter uma rotina de checagem preventiva com esses utilitários ajuda a mapear o comportamento padrão de cada aplicação em horários de pico. Dessa forma, qualquer desvio drástico na performance do armazenamento ou consumo de memória pode ser isolado com rapidez, garantindo alta disponibilidade, estabilidade e longevidade para todo o ecossistema de servidores da organização.