Marcio Cunha

Disco lento? Como identificar gargalos de I/O em NVMe no Linux

Seu sistema está travando por causa do armazenamento? Aprenda a depurar latência e IOPS em discos NVMe usando ferramentas nativas do kernel Linux.

Marcio Cunha•2 min
Também disponível em:EnglishEspañol
Resumo
  • O uso excessivo de IOPS pode sobrecarregar a fila de comandos do NVMe e gerar latências perceptíveis no sistema.
  • O comando iostat revela a utilização real do dispositivo e o tempo médio de espera por requisição.
  • A monitoração via blktrace permite rastrear exatamente quais processos estão gerando bloqueios de E/S no kernel.
  • Ajustes no escalonador de E/S (I/O scheduler) podem ser necessários quando o hardware opera em limites extremos de carga.
  • Identificar gargalos de disco exige separar problemas de hardware de processos que ignoram limites de concorrência.

O que realmente causa a lentidão no NVMe?

Quando falamos de armazenamento NVMe (Non-Volatile Memory Express), o gargalo raramente está no hardware em si, mas sim na forma como o kernel Linux gerencia a enxurrada de pedidos de leitura e escrita. Imagine uma estrada de dez faixas onde todos os carros tentam entrar no mesmo pedágio ao mesmo tempo; esse 'pedágio' é a fila de comandos do seu disco. Se você já lidou com problemas de performance, deve saber que, tal como verificamos se há problemas de integridade ao clonar discos com dd, identificar latência exige olhar para o tempo que o sistema operacional gasta esperando pelo hardware.

Medindo a pressão de E/S com iostat

A ferramenta mais rápida para começar é o iostat. Ele não apenas mostra quanto o disco está sendo usado, mas o tempo médio de serviço. Ao rodar iostat -xz 1, você obtém uma visão em tempo real da coluna await, que indica o tempo médio de espera para cada operação de I/O. Se esse valor estiver alto, mesmo com pouco uso de CPU, seu disco está literalmente sobrecarregado pelas requisições dos processos ativos.

# Monitorando o disco NVMe a cada segundo com latência detalhada
iostat -xz 1

Identificando quem está travando o sistema

Se o iostat acusa latência alta, o próximo passo é descobrir quem é o culpado. O iotop é um excelente ponto de partida, funcionando como um 'top' para o armazenamento. Ele exibe em tempo real qual processo está lendo ou escrevendo mais dados no momento. Isso é crucial para evitar que logs mal configurados ou dumps de memória inesperados matem a performance do seu servidor, algo tão crítico quanto um container em erro CrashLoopBackOff.

Rastreamento profundo com blktrace

Para casos onde a lentidão é intermitente e difícil de capturar, usamos o blktrace. Ele atua como um 'gravador de eventos' do subsistema de blocos do kernel. Ele registra cada movimentação, desde o momento em que a aplicação faz o pedido até o momento em que o NVMe confirma a escrita. É a visão mais granular que você terá. Ao contrário de ferramentas básicas, o blktrace revela se há contenção dentro da própria fila de execução do kernel.

Considerações finais sobre performance

Depurar discos de alta performance exige disciplina. Nem toda lentidão é hardware falho; muitas vezes é apenas um gargalo de concorrência que pode ser resolvido otimizando como sua aplicação lida com arquivos. Lembre-se sempre de validar se o problema não é físico antes de gastar horas tunando parâmetros do kernel. Com essas ferramentas nativas, você terá a mesma precisão que um técnico teria ao diagnosticar falhas eletrônicas com multímetro, garantindo que seu sistema permaneça responsivo sob qualquer carga.