Salta al contenuto principale

Monitoraggio, statistiche e test IOPS hard disk su Linux

I Tool per monitoraggio e test IOPS Linux sono molto comuni nelle distribuzioni, si possono utilizzare anche senza necessità di utilizzare dei LiveCD, li troviamo nel pacchetto sysstat (in Debian e Centos)
Questo pacchetto è molto utile per avere report sull'utilizzo dei dischi, sia in lettura e scrittura che per quanto riguarda gli IOPS (Input/Output Per Second), ovvero le transazioni al secondo verso un disco o un array di dischi tipo RAID

Test IOPS Linux

È molto comune che ci venga richiesta Consulenza Linux per problemi di lentezza di un server, l'analisi preventiva dell'utilizzo delle risorse, solitamente comprende carico, uso della CPU, RAM, dischi, fra cui velocità di lettura e scrittura e IOPS
Per evitare che il problema non sia rilevato in tempo, solitamente adottiamo un monitoraggio real-time delle risorse, in grado di segnalare i parametri inusuali e garantire l'osservabilità degli utilizzi tramite grafici

Per stressare i nostri SSD o Hard Disk, possiamo utilizzare questi benchmark disponibili sulle maggiori distribuzioni Linux

hdparm

Sicuramente il più conosciuto e il più semplice, ci permette di testare in lettura utilizzando la cache e senza il nostro dispositivo avendo il report della velocità di lettura media

# hdparm -tT /dev/sda

/dev/sda
 Timing cached reads:   34876 MB in  2.00 seconds = 17469.92 MB/sec
 Timing buffered disk reads: 2912 MB in  3.00 seconds = 970.63 MB/sec

Test con Disk Dump dd

Effettua la copia bit a bit di un dispositivo, permette di avere le statistiche in lettura e scrittura della velocità media in MB/s
Attenzione: controllare bene if=input of=output, si rischia di scrivere zeri su tutto il disco, se si utilizza come dispositivo di output

Test velocità lettura disco con dd

# dd if=/dev/sda of=/dev/null

1024+0 records in
1024+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 13,2991 s, 807 MB/s

Test velocità scrittura disco con dd

# dd if=/dev/zero of=./zero.dd count=1024 bs=10M

1024+0 records in
1024+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 3,74116 s, 2,9 GB/s

Ricordiamoci di rimuovere il file

rm ./zero.dd

Bonnie++

Un benchmark più completo, permette anche di esportare le statistiche su file .html (nell'esempio bonnie.html) leggibile con qualsiasi browser

# bonnie++ -d /tmp/miadirectory -r <ram-presente> -u root | bon_csv2html > /tmp/report-bonnie.html

Flexible IO test

Altro benchmark completo per stressare gli IO sul nostro sistema: https://openbenchmarking.org/test/pts/fio, disponibile nella Phoronix Test Suite

Statistiche IOPS

iostat

Riporta le statistiche in tps (IOPS), lettura, scrittura istantanee e dal precedente ciclo di statistica, il primo report può essere incoerente se lanciato senza parametri

È necessario cambiare il nome del disco, nel nostro caso md1 che utilizziamo per rilevare l'utilizzo del disco/RAID su un intervallo di tempo:

# iostat -m 2 5 -d md1

Device             tps    MB_read/s    MB_wrtn/s    MB_dscd/s    MB_read    MB_wrtn    MB_dscd
md1              14,57         0,87         0,33         0,00      12586       4739          0


Device             tps    MB_read/s    MB_wrtn/s    MB_dscd/s    MB_read    MB_wrtn    MB_dscd
md1               0,00         0,00         0,00         0,00          0          0          0

Visualizza le statistiche degli IOPS ogni 2 secondi per 5 volte del device md1, raid software Linux MD

Se utilizzato senza specificare il device indica anche i dettagli dell'uso processore
Molto interessante è %iowait indica la percentuale della CPU consumata dall'attesa degli IO su disco

sar

$ sar -b 2 5

12:06:40          tps      rtps      wtps      dtps   bread/s   bwrtn/s   bdscd/s
12:07:00        12,00      0,00     12,00      0,00      0,00    392,00      0,00
12:07:02        71,50      1,00     70,50      0,00     32,00    668,00      0,00
12:07:04       100,50      3,50     97,00      0,00    112,00   6956,00      0,00
12:07:06        45,50      0,00     45,50      0,00      0,00    428,00      0,00
12:07:08         9,00      0,00      9,00      0,00      0,00    232,00      0,00
Media:          47,70      0,90     46,80      0,00     28,80   1735,20      0,00

Come per iostat visualizza le statistiche ogni 2 secondi per 5 volte e ci restituisce la media in questo caso su tutti i device presenti

Test istantaneo con iotop

Questo utilissimo comando è un semplice monitor degli IO simile a top e ci permette di ordinare tramite le frecce destra e sinistra i processi che effettuano più IO sui dischi. Inoltre visualizza la velocità di lettura e scrittura totale in MB/s

Total DISK READ:        13.96 K/s | Total DISK WRITE:       359.59 K/s
Current DISK READ:      13.96 K/s | Current DISK WRITE:     352.61 K/s
    TID  PRIO  USER     DISK READ DISK WRITE>    COMMAND                                                              
    393 be/4 root        0.00 B/s  359.59 K/s systemd-journald
      1 be/4 root        0.00 B/s    0.00 B/s init
      2 be/4 root        0.00 B/s    0.00 B/s [kthreadd]
      3 be/4 root        0.00 B/s    0.00 B/s [pool_workqueue_release]
      4 be/0 root        0.00 B/s    0.00 B/s [kworker/R-rcu_gp]
      5 be/0 root        0.00 B/s    0.00 B/s [kworker/R-sync_wq]
      6 be/0 root        0.00 B/s    0.00 B/s [kworker/R-slub_flushwq]
      7 be/0 root        0.00 B/s    0.00 B/s [kworker/R-netns]
      9 be/0 root        0.00 B/s    0.00 B/s [kworker/0:0H-events_highpri]

Aggiungi un commento

Comment

  • Elementi HTML permessi: <br> <p> <code class="language-*"> <pre>
  • Linee e paragrafi vanno a capo automaticamente.
  • Solo le immagini ospitate su questo sito possono essere utilizzate nel tag <img>.