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ção | Descrição |
|---|---|
-o | Mostra apenas processos que estão realmente fazendo I/O. |
-b | Modo 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. |
-a | Mostra 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
iostatouvmstatpara 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 -houvmstatpara 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 -Ppara mostrar o PID sem cortar o nome.
🚨 Como identificar problemas
| Sintoma | Possível causa | O que verificar |
|---|---|---|
| IO% alto (acima de 60%) | Gargalo de disco | Verifique uso do disco com iostat -x 1 |
| SWAPIN% > 0 | Falta de RAM | Use free -h e considere adicionar memória |
| DISK WRITE alto em processos inesperados | Logging ou cache excessivo | Veja quais serviços estão gravando muito |
| Total DISK READ/WRITE alto mesmo com pouca atividade | Processos em segundo plano | Use 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.