sviluppo-web-qa.it

Come posso monitorare il carico del disco rigido su Linux?

Esiste una buona utility da riga di comando per monitorare il carico del disco rigido su Linux? Qualcosa come top ma quindi monitorare l'attività del disco i.s.o. uso 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?

105
Pieter

Puoi ottenerne una buona misura usando lo strumento iostat.

% 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 di 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%.

85
Dave Cheney

iotop è una versione di top che esamina quanto IO ogni processo sta usando. È nei repository Ubuntu standard; Non so se sia in RHEL o Fedora, ma dovrebbe essere.

enter image description here

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 le statistiche io e fornisce funzionalità simili a iotop. Vedere il link per ulteriori dettagli.

82
Tim Howland

Come suggerito dalla sastanina nei commenti, puoi elaborare direttamente i valori indicati in /sys/block/sda/stat o /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.

14

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

8
Yvan

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 la lettura successiva. È uno strumento gratuito disponibile qui :

6
MikeyB

per scoprire qual è la tua larghezza di banda totale potresti usare hdparm -T /dev/sda per testare le prestazioni della cache buffer (fileio) hdparm -t /dev/sda per 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

5
user2987

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.

4
Alnitak

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

3
PixelSmack

htop è uno strumento utile per controllare le informazioni di processo. È possibile aggiungere o rimuovere colonne e tra queste vi sono velocità di lettura e scrittura dei processi.

0
inquam