iotop - Cheatsheet Per-Process Disk I/O Monitor
iotop è uno strumento top-like che mostra disk I/O usage per processo in tempo reale. Dove iostat ti dice che un device è busy, iotop ti dice quale processo sta leggendo e scrivendo, a quale velocità, e con quale priorità I/O. È il modo più veloce per rispondere “cosa sta martellando il disco adesso?” Legge i kernel accounting data e quindi richiede root.
Installazione
| Piattaforma | Comando |
|---|
| Debian/Ubuntu | sudo apt install iotop |
| Fedora/RHEL | sudo dnf install iotop |
| Arch Linux | sudo pacman -S iotop |
| Requisito | Kernel con CONFIG_TASK_IO_ACCOUNTING (standard) |
| Verifica | sudo iotop --version |
Esecuzione
| Comando | Descrizione |
|---|
sudo iotop | Vista live interattiva di tutti i processi |
sudo iotop -o | Solo mostra processi effettivamente facendo I/O |
sudo iotop -a | Mostra I/O accumulato (totali, non velocità) |
sudo iotop -P | Mostra processi (non thread individuali) |
sudo iotop -u USER | Filtra per utente |
sudo iotop -d 5 | Refresh ogni 5 secondi |
Il Display
| Colonna | Significato |
|---|
TID/PID | Thread o process ID |
PRIO | Classe priorità I/O scheduling |
USER | Process owner |
DISK READ | Velocità lettura attuale |
DISK WRITE | Velocità scrittura attuale |
SWAPIN | % tempo speso swapping in |
IO | % tempo in attesa su I/O |
COMMAND | La command line del processo |
Due linee header mostrano Total e Actual disk read/write per l”intero sistema.
Interactive Keys
| Key | Azione |
|---|
o | Toggle --only (nascondi processi idle) |
a | Toggle accumulated vs velocità |
p | Toggle processi/thread |
r | Inverti l”ordine di sort |
← / → | Cambia la colonna di sort |
q | Quit |
Modalità Batch / Logging
Per script e catturare evidenza, esegui non-interattivamente.
# Log i top I/O processi ogni 2s, 10 iterazioni, solo quelli attivi
sudo iotop -boPqqq -d 2 -n 10 > iotop.log
| Flag | Effetto |
|---|
-b | Batch (non-interactive) mode |
-o | Solo processi attivi |
-n N | Numero di iterazioni |
-q | Quiet (ripeti per sopprimere header) |
-k | Kilobytes |
Workflow Comuni
# "Cosa sta scrivendo su disk adesso?" — solo attivi, processi non thread
sudo iotop -oP
# Cattura un periodico I/O spike nel tempo
sudo iotop -boP -d 1 -n 60 > spikes.log
# Attribuisci il carico disk a un utente
sudo iotop -oP -u appuser
Priorità I/O (pair con ionice)
iotop mostra la classe PRIO (ionice); cambi con ionice.
| ionice class | Significato |
|---|
ionice -c 1 | Realtime I/O priority |
ionice -c 2 -n 0..7 | Best-effort (default), level 0 = highest |
ionice -c 3 | Idle — solo I/O quando il disco è altrimenti libero |
# Deprioritize un heavy batch job''s disk I/O
ionice -c 3 -p $(pgrep -n backup)
| Tool | Risponde |
|---|
| iotop | Quale processo sta facendo disk I/O |
| iostat | Se il device è saturo |
| pidstat -d | Per-process I/O (scriptable, sysstat) |
| dstat/dool | Combined system view |
Workflow: iostat mostra il disco è busy → iotop mostra quale processo → ionice deprioritize.
Risorse