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]