Come discusso nel nostro articolo introduttivo sul monitoraggio delle prestazioni di Linux, misurare le prestazioni del sottosistema IO è molto importante.
Se qualcuno si lamenta del fatto che un database (o qualsiasi applicazione) in esecuzione su un server (con un determinato filesystem o configurazione RAID) è più veloce dello stesso database o applicazione in esecuzione su un altro server, è possibile assicurarsi che le prestazioni al il livello del disco è lo stesso su entrambi i server. È possibile utilizzare iozone per questa situazione.
Se si esegue il database (o qualsiasi applicazione) su un determinato ambiente SAN o NAS e si desidera migrarlo in un ambiente SAN o NAS diverso, è necessario eseguire benchmark del filesystem su entrambi i sistemi e confrontarlo. Puoi usare lo iozone per questa situazione.
Se sai come usare iozone, puoi praticamente usarlo per vari scopi di benchmarking del filesystem.
Scarica e installa IOZone
Iozone è un'utilità di benchmarking del file system open source.
Segui i passaggi seguenti per scaricare e installare iozone sul tuo sistema.
wget http://www.iozone.org/src/current/iozone3_394.tar tar xvf iozone3_394.tar cd iozone3_394/src/current make make linux
Cosa misura l'utilità IOzone?
IOzone esegue i seguenti 13 tipi di test. Se stai eseguendo il test iozone su un server di database, puoi concentrarti sui primi 6 test, poiché influiscono direttamente sulle prestazioni del database.
- Lettura – Indica le prestazioni di lettura di un file che esiste già nel filesystem.
- Scrittura:indica le prestazioni di scrittura di un nuovo file nel filesystem.
- Rileggi:dopo aver letto un file, indica le prestazioni della lettura di un nuovo file.
- Riscrivi:indica le prestazioni di scrittura su un file esistente.
- Lettura casuale:indica le prestazioni di lettura di un file leggendo informazioni casuali dal file. cioè questa non è una lettura sequenziale.
- Scrittura casuale:indica le prestazioni di scrittura su un file in varie posizioni casuali. cioè questa non è una scrittura sequenziale.
- Lettura all'indietro
- Riscrivi nuovamente la registrazione
- Lettura passo passo
- Paura
- Scrivi
- Freread
- Riscrivi
10 esempi di IOZone
1. Esegui tutti i test IOZone utilizzando i valori predefiniti
-un'opzione sta per modalità automatica. In questo modo vengono creati file di test temporanei di dimensioni comprese tra 64k e 512 MB per i test delle prestazioni. Questa modalità utilizza anche da 4k a 16M di dimensioni dei record per i test di lettura e scrittura (ne parleremo più avanti).
-un'opzione eseguirà anche tutti i 13 tipi di test.
$ ./iozone -a
La prima sezione dell'output di iozone contiene le informazioni di intestazione, che visualizzano informazioni sull'utilità iozone e tutte le opzioni di iozone utilizzate per generare questo rapporto, come mostrato di seguito.
Iozone: Performance Test of File I/O Version $Revision: 3.394 $ Compiled for 32 bit mode. Build: linux Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins Al Slater, Scott Rhine, Mike Wisner, Ken Goss Run began: Sat Apr 23 12:25:34 2011 Auto Mode Command line used: ./iozone -a Output is in Kbytes/sec Time Resolution = 0.000001 seconds. Processor cache size set to 1024 Kbytes. Processor cache line size set to 32 bytes. File stride size set to 17 * record size.
La seconda sezione dell'output contiene i valori di output (in al secondo) di vari test.
- 1a colonna KB:indica la dimensione del file utilizzata per il test.
- 2a colonna reclen:indica la lunghezza del record utilizzata per il test.
- 3a colonna fino all'ultima colonna:indica i vari test eseguiti e i relativi valori di output in al secondo.
random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 495678 152376 1824993 2065601 2204215 875739 582008 971435 667351 383106 363588 566583 889465 64 8 507650 528611 1051124 1563289 2071399 1084570 1332702 1143842 2138827 1066172 1141145 1303442 2004783 64 16 587283 1526887 2560897 2778775 2366545 1122734 1254016 593214 1776132 463919 1783085 3214531 3057782 64 32 552203 402223 1121909 1388380 1162129 415722 666360 1163351 1637488 1876728 1685359 673798 2466145 64 64 551580 1122912 2895401 4911206 2782966 1734491 1825933 1206983 2901728 1207235 1781889 2133506 2780559 128 4 587259 1525366 1801559 3366950 1600898 1391307 1348096 547193 666360 458907 1486461 1831301 1998737 128 8 292218 1175381 1966197 3451829 2165599 1601619 1232122 1291619 3273329 1827104 1162858 1663987 1937151 128 16 650008 510099 4120180 4003449 2508627 1727493 1560181 1307583 2203579 1229980 603804 1911004 2669183 128 32 703200 1802599 2842966 2974289 2777020 1331977 3279734 1347551 1152291 684197 722704 907518 2466350 128 64 848280 1294308 2288112 1377038 1345725 659686 1997031 1439349 2903100 1267322 1968355 2560063 1506623 128 128 902120 551579 1305206 4727881 3046261 1405509 1802090 1085124 3649539 2066688 1423514 2609286 3039423 ...
2. Salva l'output su un foglio di calcolo usando iozone -b
Per salvare l'output di iozone su un foglio di calcolo, utilizzare l'opzione -b come mostrato di seguito. -b sta per binary e indica a iozone di scrivere l'output del test in formato binario su un foglio di calcolo.
$ ./iozone -a -b output.xls
Nota:l'opzione -b può essere utilizzata con uno qualsiasi degli esempi menzionati di seguito.
Dai dati salvati nel foglio di calcolo, puoi utilizzare la creazione di graziosi grafici utilizzando la funzionalità grafico dello strumento foglio di calcolo. Quello che segue è un grafico di esempio creato dall'output di iozone.
Fig :Grafico IOZone
3. Esegui solo un tipo specifico di test usando iozone -i
Se sei interessato a eseguire solo un tipo specifico di test, usa l'opzione -i.
Sintassi:
iozone -i [test-type]
Il tipo di test è un valore numerico. Di seguito sono riportati i vari tipi di test disponibili e il relativo valore numerico.
- 0=scrivi/riscrivi
- 1=lettura/rilettura
- 2=lettura/scrittura casuale
- 3=Lettura all'indietro
- 4=Riscrivi record
- 5=leggere il passo
- 6=scrittura/riscrittura
- 7=spaventare/rinfrescare,
- 8=mix casuale
- 9=scrittura/riscrittura
- 10=prepara/riprepara
- 11=pwritev/Re-pwritev
- 12=preadv/Re-preadv
L'esempio seguente eseguirà solo i test di scrittura (ovvero sia di scrittura che di riscrittura). Come vedi dall'output le altre colonne sono vuote.
$ ./iozone -a -i 0 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 353666 680969 64 8 477269 744768 64 16 429574 326442 64 32 557029 942148 64 64 680844 633214 128 4 187138 524591
Combina più tipi di test dell'ozono
Puoi anche combinare più tipi di test specificando multiple -i nella riga di comando.
Ad esempio, l'esempio seguente testerà sia i tipi di test di lettura che quelli di scrittura.
$ ./iozone -a -i 0 -i 1 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 372112 407456 1520085 889086 64 8 385574 743960 3364024 2553333 64 16 496011 397459 3748273 1330586 64 32 499600 876631 2459558 4270078
4. Specifica la dimensione del file usando iozone -s
Per impostazione predefinita, iozone creerà automaticamente file temporanei di dimensioni comprese tra 64k e 512M, per eseguire vari test.
La prima colonna nell'output di iozone (con l'intestazione della colonna KB) indica la dimensione del file. Come hai visto dall'output precedente, inizia con un file da 64 KB e continuerà ad aumentare fino a 512 M (raddoppiando ogni volta la dimensione del file).
Invece di eseguire il test per tutte le dimensioni del file, puoi specificare la dimensione del file usando l'opzione -s.
L'esempio seguente eseguirà il test di scrittura solo per file di dimensioni 1 MB (ovvero 1024 KB).
$ ./iozone -a -i 0 -s 1024 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 1024 4 469710 785882 1024 8 593621 1055581 1024 16 745286 1110539 1024 32 610585 1030184 1024 64 929225 1590130 1024 128 1009859 1672930 1024 256 1042711 2039603 1024 512 941942 1931895 1024 1024 1039504 706167
5. Specificare la dimensione del record per il test utilizzando iozone -r
Quando esegui un test, per una dimensione di file specifica, viene eseguito il test con dimensioni di record diverse che vanno da 4k a 16M.
Se desideri eseguire test delle prestazioni I/O di un sottosistema I/O che ospita il database Oracle, potresti voler impostare la dimensione del record nella iozone sullo stesso valore della dimensione del blocco DB. Il database legge e scrive in base alla dimensione del blocco DB.
reclen sta per Record Length. Nell'esempio precedente, la seconda colonna (con l'intestazione di colonna "reclen") indica la lunghezza del record che dovrebbe essere utilizzata per testare IOzone. Nell'esempio precedente, per la dimensione del file di 1024 KB, il test di ionizzazione ha utilizzato diverse dimensioni di record che vanno da 4k a 16M per eseguire il test di scrittura.
Invece di utilizzare tutte queste dimensioni predefinite della lunghezza del record, puoi anche specificare la dimensione del record che desideri testare.
L'esempio seguente eseguirà il test di scrittura solo per la lunghezza del record di 32k. Nell'output, la seconda colonna ora visualizzerà solo 32.
$ ./iozone -a -i 0 -r 32 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 32 566551 820553 128 32 574098 1000000 256 32 826044 948043 512 32 801282 1560624 1024 32 859116 528901 2048 32 881206 1423096
6. Combina la dimensione del file con la dimensione del record
Puoi anche utilizzare l'opzione -s e -r per specificare una dimensione esatta del file temporaneo e la lunghezza esatta del record che deve essere testato.
Ad esempio, quanto segue eseguirà il test di scrittura utilizzando un file da 2 M con una lunghezza record di 1 M
$ ./iozone -a -i 0 -s 2048 -r 1024 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 2048 1024 1065570 1871841
7. Test di throughput usando iozone -t
Per eseguire lo iozone in modalità throughput, utilizzare l'opzione -t. Dovresti anche specificare il numero di thread che devono essere attivi durante questo test.
L'esempio seguente eseguirà il test di throughput iozone per le scritture utilizzando 2 thread. Tieni presente che non puoi combinare -a opzione con -t opzione.
$ ./iozone -i 0 -t 2 Children see throughput for 2 initial writers 1= 433194.53 KB/sec Parent sees throughput for 2 initial writers = 7372.12 KB/sec Min throughput per process = 0.00 KB/sec Max throughput per process = 433194.53 KB/sec Avg throughput per process = 216597.27 KB/sec Min xfer = 0.00 KB Children see throughput for 2 rewriters = 459924.70 KB/sec Parent sees throughput for 2 rewriters = 13049.40 KB/sec Min throughput per process = 225610.86 KB/sec Max throughput per process = 234313.84 KB/sec Avg throughput per process = 229962.35 KB/sec Min xfer = 488.00 KB
Per eseguire il throughput per tutti i tipi di test, rimuovere "-i 0" dall'esempio sopra, come mostrato di seguito.
$ ./iozone -t 2
8. Include l'utilizzo della CPU usando iozone --+u
Durante l'esecuzione del test iozone, puoi anche indicare a iozone di raccogliere l'utilizzo della CPU utilizzando l'opzione -+u.
Il -+ davanti all'opzione potrebbe sembrare un po' strano. Ma devi dare l'intero -+u (non solo -u o +u) affinché funzioni correttamente.
L'esempio seguente eseguirà tutti i test e includerà il rapporto sull'utilizzo della CPU come parte dell'output del foglio di calcolo Excel che genera.
$ ./iozone -a -+u -b output.xls
Nota:verrà visualizzato un utilizzo della CPU separato per ogni test eseguito.
9. Aumenta la dimensione del file usando iozone -g
Questo è importante. Se il tuo sistema ha più di 512 MB di RAM, dovresti aumentare la dimensione del file temporaneo che iozone utilizza per i test. In caso contrario, potresti non ottenere risultati accurati, poiché la cache del buffer di sistema avrà un ruolo in essa.
Per prestazioni del disco accurate, si consiglia di avere la dimensione del file temporaneo 3 volte la dimensione della cache del buffer di sistema.
L'esempio seguente eseguirà iozone aumentando la dimensione massima del file a 2 GB ed eseguirà il test automatico di iozone per i test di scrittura.
$ ./iozone -a -g 2G -i 0 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 556674 1230677 64 8 278340 441320 64 16 608990 1454053 64 32 504125 1085411 64 64 571418 1279331 128 4 526602 961764 128 8 714730 518219 ...
10. Testa più punti di montaggio insieme usando iozone -F
Combinando diverse opzioni di iozone, puoi eseguire test di I/O del disco su più punti di montaggio come mostrato di seguito.
Se hai 2 punti di montaggio, puoi avviare 2 diversi thread di iozone per creare file temporanei su entrambi questi punti di montaggio per il test, come mostrato di seguito.
$ ./iozone -l 2 -u 2 -r 16k -s 512M -F /u01/tmp1 /u02/tmp2
- -l indica il numero minimo di processi di ionizzazione che dovrebbero essere avviati
- -u indica il numero massimo di processi di ionizzazione che dovrebbero essere avviati
- -F dovrebbe contenere più valori. cioè se specifichiamo 2 sia in -l che -u, dovremmo avere due nomi di file qui. Tieni presente che devono esistere solo i punti di montaggio. Non è necessario che il file specificato nell'opzione -F esista, poiché iozone creerà questo file temporaneo durante il test. Nell'esempio precedente, i punti di montaggio sono /u01 e /u02. I file tmp1 e tmp2 verranno creati automaticamente da iozone a scopo di test.
Articoli precedenti nella serie sul monitoraggio e l'ottimizzazione delle prestazioni di Linux:
- Introduzione al monitoraggio delle prestazioni e all'ottimizzazione di Linux
- 15 Esempi pratici di comandi principali di Linux
- 7 Esempi pratici di comandi PS per il monitoraggio dei processi
- 10 utili esempi Sar (Sysstat) per il monitoraggio delle prestazioni UNIX/Linux