Come posso monitorare il carico del disco rigido su Linux?


101

Esiste una buona utility da riga di comando per monitorare il carico del disco rigido su Linux? Qualcosa di simile, topma poi il monitoraggio dell'attività del disco è l'utilizzo della CPU.

Più specificamente, sospetto che per alcuni server (carichi pesanti) dopo diverse ottimizzazioni su varie parti del programma o dei programmi in esecuzione su di esso, in questo momento il collo di bottiglia è semplicemente la registrazione dei file sul disco. Ma trovo molto difficile valutare quanto traffico possono gestire i server.

Il mio strumento ideale sarebbe qualcosa che stampa "Stai usando il 35% della larghezza di banda del tuo disco in questo momento". Qualche idea?


1
Domanda perfetta, è esattamente quello che stavo cercando =)
rafa.ferreira il

È possibile leggere direttamente sysfs, come /sys/block/sda/stat. Il campo n. 1 indica il numero totale di letture, il campo n. 5 è il numero totale di scritture, il campo n. 9 è il numero di operazioni I / O in corso. Vedi di più in kernel.org/doc/Documentation/iostats.txt I valori non sono firmati a lungo e possono finire .
sastanin,

Questa è un'ottima domanda perché lottiamo sempre con questo problema sui server Plesk. Tuttavia, ciò che manca è how do you do it with SNMP?. Va bene accedere e controllare roba, ma sono davvero necessari dati storici.
Eugene van der Merwe,

Risposte:


83

Puoi ottenere una buona misura di questo usando lo iostatstrumento.

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

L'utilizzo del disco è elencato nell'ultima colonna. Questo è definito come

Percentuale del tempo della CPU durante il quale sono state inviate richieste di I / O al dispositivo (utilizzo della larghezza di banda per il dispositivo). La saturazione del dispositivo si verifica quando questo valore è vicino al 100%.


3
In quale pacchetto risiede questo in Debian, se presente? apt-cache dumpnon ho trovato nulla per iostat
hBy2Py

9
@Brian: è nel pacchetto sysstat (attraverso yum comunque ...)
Joe

Impossibile trovare questo su RHEL 6.5. È disponibile per RHEL?
Hazok,

Questo può funzionare senza dover continuare con un ritardo? Il tentativo di eseguire una singola istanza per ottenere i dati ottiene presumibilmente lo stesso numero in quanto non può prelevare campioni ???
Wilf

@Hazok Fa parte dell'RPM sysstat su RHEL 6.5.
Generale il

81

iotop è una versione di top che esamina la quantità di IO utilizzata da ciascun processo. È nei repository Ubuntu standard; Non so se è in RHEL o Fedora, ma dovrebbe essere.

inserisci qui la descrizione dell'immagine

Per i kernel più vecchi (ad esempio CentOS 5.xo RHEL 5.x) che non supportano iotop, utilizzare invece topio (documentato qui: http://yong321.freeshell.org/freeware/pio.html#linux . Si basa su / proc // io per io statistiche e fornisce funzionalità simili a iotop.Vedi link per ulteriori dettagli.


1
Infatti, non è installato di default in Ubuntu, quindi si potrebbe emettere: sudo apt-get install iotop per ottenerlo
Moshe,

1
iotop richiede un kernel superiore a 2.6.20, che purtroppo esclude sia RedHat el4 che el5.
Dave Cheney,

2
A partire da RedHat 5.4, i bit necessari per far funzionare iotop sono stati portati in backport. Godere!
Dave Cheney,

È in Fedora :).
Jamie,

13

Come suggerito dalla sastanina nei commenti, è possibile elaborare direttamente i valori indicati in /sys/block/sda/stato /proc/diskstats. Ciò può essere utile quando nessuno degli altri strumenti citati è disponibile e non è possibile installarli facilmente.

Ad esempio (IIUC) qualcosa del genere (in bash) dovrebbe fornire il numero di letture al secondo:

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

Vedi https://www.kernel.org/doc/Documentation/iostats.txt e https://www.kernel.org/doc/Documentation/block/stat.txt per la documentazione.


7

Dovresti dare un'occhiata in cima , che combina la potenza di iotop / top / iftop, tutto in un unico posto ed evidenzia le parti critiche del tuo sistema.


5

Consiglierei di dare un'occhiata allo strumento non comune. Ti mostrerà il carico in tempo reale su un numero di parametri di sistema, nonché la registrazione di dati in un file per una successiva lettura. È uno strumento gratuito disponibile qui :


5

per scoprire quale larghezza di banda totale è possibile utilizzare hdparm -T /dev/sdaper testare le prestazioni della cache buffer (fileio) hdparm -t /dev/sdaper testare le prestazioni di lettura del dispositivo

esempi: il mio laptop ottiene 82 MB / sec dal disco SATA e 2 GB / sec dalla cache. Il mio dekstop ottiene 12 GB / sec dalla cache e 500 MB / sec dall'array RAID HW. Ho il sospetto che quegli ultimi numeri potrebbero essere il doppio sull'hardware di classe server.

impostato readahead su 256, 4096 funziona meglio per me

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

volte leggendo 1 GB a blocchi di dimensioni diverse e read-ahead diversi


Benvenuti a San Francisco. Puoi utilizzare l'evidenziazione del codice nei tuoi post mettendo backquotes attorno a stringhe o rientri a paragrafi.
inkaphink,

Due cose - 1) --setraè ora -ae 2), i hdparm -{T,t}comandi emettono solo letture del disco, secondo strace, quindi non sono distruttivi. (Si applica la dichiarazione di non responsabilità standard relativa ai consigli su Internet)
i336_

4

Lo strumento standard per mostrare il carico del disco rigido è iostat.

Non ti dirà quanta% di larghezza di banda del disco stai usando, dal momento che non sa quanta larghezza di banda ha il tuo disco. In ogni caso, il tuo disco ha solo la cifra indicata dal produttore per grandi trasferimenti di dati contigui.


3

Penso che RRDtool dovrebbe fare quello che vuoi qui , usa un demone per scaricare i dati di sistema e quindi ti consente di elaborarlo come preferisci. L'ho usato spesso per produrre grafici ecc. Per misurare il carico del sistema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.