Marcio Cunha

Sistema travando? Como achar gargalos de CPU e IOPS no Linux

Aprenda a isolar processos que consomem ciclos excessivos de processamento e disco no Linux utilizando ferramentas nativas do kernel como perf, pidstat e iostat.

Marcio Cunha•4 min
Também disponível em:EnglishEspañol
Resumo
  • O utilitário iostat revela o comportamento de leitura e escrita em blocos de disco para expor saturação de IOPS.
  • O comando pidstat monitora o consumo individual de recursos por processo de maneira detalhada e em tempo real.
  • A ferramenta perf mapeia eventos de hardware e ciclos de clock para encontrar funções específicas devorando processamento.
  • A latência de armazenamento impacta diretamente a responsividade geral do sistema operacional muito antes do uso total da CPU.
  • O isolamento correto de gargalos evita substituições prematuras de hardware e direciona correções exatas de software.

Por que o Linux trava e como a performance se degrada

Quando um servidor Linux começa a responder com lentidão extrema, a primeira reação comum é culpar a falta de memória RAM. Na prática, contudo, a raiz do problema costuma ser invisível a olho nu e envolve uma disputa ferrenha por ciclos de processamento ou pela capacidade de leitura e escrita dos discos. Identificar esses travamentos exige entender como o sistema operacional gerencia suas tarefas internas e quais ferramentas nativas do kernel ajudam a escancarar o que está consumindo recursos de forma indevida.

Para quem mantém servidores ou gerencia uma infraestrutura local — seja em ambientes corporativos ou em um servidor dedicado no homelab —, o diagnóstico preciso faz toda a diferença entre resolver o gargalo em minutos ou reiniciar a máquina às cegas. O kernel do Linux oferece utilitários extremamente potentes que operam sem instalar pacotes pesados de terceiros, permitindo inspecionar o hardware camada por camada até achar o verdadeiro culpado.

Monitorando o ritmo dos discos com o iostat

O primeiro sintoma de um gargalo de armazenamento é o aumento repentino na espera de E/S, conhecida tecnicamente como IO-wait. Quando os discos rígidos ou SSDs não conseguem atender aos pedidos de leitura e escrita na mesma velocidade em que o sistema os solicita, os processos entram em uma fila de espera prolongada, congelando a interface e as aplicações.

Para enxergar essa fila em detalhes, utilizamos o utilitário iostat, que faz parte do pacote sysstat. Na prática, ele mostra estatísticas detalhadas de utilização da CPU e das unidades de armazenamento. Ao executar o comando abaixo no terminal, você obtém um retrato contínuo da atividade dos discos a cada dois segundos:

iostat -xz 2 5

Nesse comando, a flag -x exibe métricas estendidas e a flag -z omite dispositivos que estão completamente ociosos, mantendo a tela limpa. Preste muita atenção na coluna %util: se ela estiver próxima de 100% enquanto o parâmetro await (tempo médio de espera) disparar para centenas de milissegundos, você encontrou um claro gargalo de IOPS, indicando que o subsistema de armazenamento chegou ao seu limite físico de operações por segundo.

Isolando processos exigentes com o pidstat

Identificar que o disco ou a CPU estão saturados é apenas metade do caminho; o passo seguinte exige descobrir exatamente qual aplicativo ou processo é o responsável pelo abuso de recursos. Enquanto o comando tradicional top oferece uma visão geral, o pidstat vai muito além ao focar no comportamento individual de cada tarefa ao longo do tempo.

O pidstat permite auditar o uso de CPU, memória e operações de E/S por processo específico. Se você suspeita que há processos gerando muitas operações de escrita em disco de forma desnecessária, o comando a seguir exibe o comportamento de E/S de todas as tarefas ativas no momento:

pidstat -d 2 10

A opção -d instrui a ferramenta a focar em estatísticas de disco. Na saída gerada, colunas como kB_rd/s e kB_wr/s mostram exatamente quantos quilobytes por segundo cada identificador de processo está lendo ou escrevendo. Isso permite isolar scripts mal otimizados, bancos de dados em loop infinito ou ferramentas de backup agressivas que estão estrangulando o servidor.

Analisando ciclos de clock e gargalos profundos com o perf

Quando os utilitários tradicionais não conseguem revelar o motivo exato de uma alta carga de processamento, recorremos ao perf. Trata-se do analisador de performance oficial do kernel do Linux, capaz de interagir diretamente com os contadores de hardware do processador para inspecionar instruções de máquina em tempo de execução.

O perf consegue coletar amostras de onde a CPU está gastando seus ciclos, revelando funções específicas de bibliotecas ou do próprio sistema operacional que estão gerando sobrecarga. Para monitorar eventos de uso geral do sistema por dez segundos, o comando recomendado é:

perf top

Essa interface interativa lista em tempo real as funções que mais consomem ciclos de clock da CPU. Caso uma função específica apareça no topo com uma porcentagem absurda, você tem a evidência matemática necessária para reportar o bug à equipe de desenvolvimento ou ajustar os parâmetros da aplicação afetada.

Considerações finais

Investigar gargalos de performance no Linux deixa de ser um mistério à medida que aprendemos a combinar as ferramentas certas na ordem lógica correta. Começar observando o comportamento global com o iostat, descer para o nível de processos com o pidstat e, quando necessário, dissecar as instruções de hardware com o perf garante uma visão cirúrgica da infraestrutura.

Dominar essas ferramentas nativas não apenas acelera a resolução de incidentes críticos em produção, mas também evita gastos desnecessários com upgrades precipitados de hardware. Com diagnóstico preciso e leitura correta das métricas do kernel, qualquer engenheiro consegue manter seus servidores operando de forma estável, previsível e altamente eficiente.