È anche possibile su Linux ottenere statistiche I/O per processo, così puoi vedere esattamente chi sta leggendo e scrivendo pesantemente, usando un programma chiamato iotop. iotop deve essere avviato con l'utente root. Puoi usare iotop, ad esempio, per sapere quanto velocemente il tuo disco rigido può leggere e scrivere, quindi premere il tasto q per uscire. Leggi la sezione del manuale su iotop per saperne di più sulle sue scorciatoie, ad esempio per ordinare le colonne.
Per visualizzare quale processo sta scrivendo su disco, possiamo usare il comando "iotop" per ottenere tali informazioni
# iotop
Visualizza un output come il seguente esempio:
Total DISK READ : 0.00 B/s | Total DISK WRITE : 88.95 M/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 88.95 M/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 27236 be/4 root 0.00 B/s 88.95 M/s 0.00 % 87.91% dd if=/dev/zero of=test.zero bs=1024k count=1000 oflag=direct conv=notrunc 25600 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % less -s 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-root --system --deserialize 22 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 6 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/u30:0] 7 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched] 8 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_bh] 9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcuos/0] 10 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcuob/0] 11 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0] 12 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] 13 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khelper] 14 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kdevtmpfs] 15 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [netns] 16 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [perf] 17 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [xenwatch] 18 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [xenbus] 20 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khungtaskd] 21 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [writeback] 22 be/5 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksmd] 23 be/7 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khugepaged] 24 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [crypto] 25 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kintegrityd] 26 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [bioset] 27 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kblockd] 28 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [md] 29 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [devfreq_wq] 31 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kswapd0] 32 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [fsnotify_mark] 1058 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % cupsd -f
Delle colonne presentate qui, potremmo essere interessati a quanto segue:
- TID :questa colonna fornisce il PID del processo che effettua le richieste di I/O. Questo può essere utilizzato per indagare o terminare il programma.
- LETTURA DISCO :questa colonna illustra il numero di byte letti al secondo dal processo elencato.
- SCRITTURA DISCO :questa colonna indica il numero di byte scritti al secondo dal processo elencato.
- IO :questa colonna mostra la percentuale di tempo che il processo elencato ha impiegato per inviare richieste di I/O.
- COMANDO :questa colonna descrive il nome del processo che gestisce l'I/O. Se questo è un processo principale, potrebbe includere anche opzioni della riga di comando.
Nell'esempio precedente abbiamo eseguito in un'altra sessione ssh un dd test (dd if=/dev/zero of=test.zero bs=1024k count=1000 oflag=direct conv=notrunc) per visualizzare l'azione W/R in corso sul disco .
Se vuoi vedere solo i processi correnti che scrivono su disco, premi il tasto "o" e otterrai un output come:
Total DISK READ : 0.00 B/s | Total DISK WRITE : 86.90 M/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 86.90 M/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 27239 be/4 root 0.00 B/s 86.90 M/s 0.00 % 89.17 % dd if=/dev/zero of=test.zero bs=1024k count=1000 oflag=direct conv=notrunc
Di seguito sono elencate alcune delle opzioni più comuni che possiamo utilizzare:
- Premi a sinistra e tasti freccia destra per modificare l'ordinamento.
- Premi r per invertire l'ordine di ordinamento.
- Premi o solo per vedere processi o thread che eseguono effettivamente l'I/O, invece di mostrare tutti i processi o thread.
- Premi p mostra solo i processi. Normalmente iotop mostra tutti i thread.
- Premi a visualizzare l'I/O accumulato anziché la larghezza di banda. In questa modalità, iotop mostra la quantità di processi di I/O eseguiti dall'avvio di iotop.
- Premi i per cambiare la priorità di un thread o di un thread di processo, ad esempio ionice.
- Premi q per uscire da iotop.
Fare riferimento alle pagine man per ulteriori informazioni.
# man iotop