Skip to main content

iotop | Linux

  • iotop | Linux

O comando iotop é uma ferramenta do Linux usada para monitorar o uso de I/O (entrada e saída) de disco em tempo real, mostrando quais processos estão lendo e gravando no disco e quanto estão usando. Ele é semelhante ao top, mas focado em I/O de disco em vez de CPU ou memória.


🧠 Sintaxe básica

sudo iotop

⚠️ É necessário rodar com sudo (ou como root), pois o acesso às estatísticas de I/O exige permissões elevadas.


📊 Principais colunas exibidas

  • PID – ID do processo.
  • PRIO – Prioridade do processo.
  • USER – Usuário que iniciou o processo.
  • DISK READ – Taxa de leitura de disco.
  • DISK WRITE – Taxa de escrita de disco.
  • SWAPIN – Percentual de tempo que o processo passa trocando páginas de memória.
  • IO – Percentual de tempo que o processo está aguardando operações de I/O.
  • COMMAND – Nome/comando do processo.

⚙️ Opções úteis

OpçãoDescrição
-oMostra apenas processos que estão realmente fazendo I/O.
-bModo batch (não interativo), ideal para scripts.
-d <segundos>Define o intervalo de atualização (padrão é 1s).
-n <n>Número de atualizações antes de sair (útil com -b).
-p <PID>Monitora apenas um processo específico.
-u <usuário>Mostra apenas processos de um determinado usuário.
-aMostra uso acumulado de I/O desde o início da execução.

🧰 Exemplos práticos

  • Mostrar apenas processos com I/O ativo:

    sudo iotop -o
  • Rodar em modo batch por 10 atualizações com intervalo de 2 segundos:

    sudo iotop -b -n 10 -d 2
  • Monitorar um processo específico (ex: PID 1234):

    sudo iotop -p 1234
  • Mostrar uso acumulado:

    sudo iotop -a

🪄 Dica extra

Se o comando não estiver instalado:

sudo apt install iotop        # Debian/Ubuntu
sudo dnf install iotop # Fedora/RHEL
sudo pacman -S iotop # Arch

Interpretando os resultados

🧾 Exemplo de saída típica do iotop

Total DISK READ :     10.50 M/s | Total DISK WRITE :     2.30 M/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
4321 be/4 mysql 8.00 M/s 1.50 M/s 0.00 % 50.00 % mysqld
2789 be/4 root 2.50 M/s 0.80 M/s 0.00 % 20.00 % rsync
1256 be/4 user 0.00 B/s 0.00 B/s 0.00 % 0.00 % firefox

🧩 Colunas principais e interpretação

🧠 DISK READ / DISK WRITE

  • Mostram as taxas de leitura e escrita em disco do processo.
  • Medidas em bytes/s, K/s, M/s, etc.
  • Valores altos → o processo está usando intensamente o disco.
  • Exemplo: Se mysqld (MySQL) está lendo 8 MB/s, é sinal de alto uso de banco de dados.

⚙️ IO% (I/O Wait Percent)

  • Percentual do tempo em que o processo está bloqueado esperando operações de disco (leitura/gravação).
  • IO alto (>50%) → o processo está constantemente esperando o disco responder.
  • Causa comum: disco lento, muitos acessos simultâneos ou gargalo no sistema de arquivos.
  • Dica: Combine com iostat ou vmstat para confirmar gargalo geral de disco.

💾 SWAPIN%

  • Tempo que o processo passa esperando páginas de memória serem trazidas do swap (memória virtual).
  • Ideal: 0.00%
  • Se >0%, o sistema pode estar usando swap por falta de RAM, o que degrada muito o desempenho.
  • Use free -h ou vmstat para confirmar uso de swap.

👤 USER

  • Usuário dono do processo. Útil para identificar se é um serviço (mysql, root) ou um usuário comum.

🧮 PRIO (Prioridade)

  • Mostra a prioridade do processo (be = best-effort, rt = real-time). Processos com prioridade real-time têm acesso preferencial aos recursos de I/O.

🔠 COMMAND

  • Nome do processo executável. Se for longo, pode usar iotop -P para mostrar o PID sem cortar o nome.

🚨 Como identificar problemas

SintomaPossível causaO que verificar
IO% alto (acima de 60%)Gargalo de discoVerifique uso do disco com iostat -x 1
SWAPIN% > 0Falta de RAMUse free -h e considere adicionar memória
DISK WRITE alto em processos inesperadosLogging ou cache excessivoVeja quais serviços estão gravando muito
Total DISK READ/WRITE alto mesmo com pouca atividadeProcessos em segundo planoUse iotop -o para mostrar só os ativos

🧰 Dicas de uso avançado

  • Ver uso acumulado (bom para diagnósticos prolongados):

    sudo iotop -ao

    → mostra quanto cada processo usou de I/O desde o início.

  • Logar para arquivo (modo batch):

    sudo iotop -b -d 2 -n 60 > iotop.log

    → coleta 2 minutos (60 atualizações a cada 2 s) para análise posterior.