GNU/Linux >> Linux Esercitazione >  >> Linux

10 esempi di iozone per la misurazione delle prestazioni di I/O del disco su Linux

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.

  1. Lettura – Indica le prestazioni di lettura di un file che esiste già nel filesystem.
  2. Scrittura:indica le prestazioni di scrittura di un nuovo file nel filesystem.
  3. Rileggi:dopo aver letto un file, indica le prestazioni della lettura di un nuovo file.
  4. Riscrivi:indica le prestazioni di scrittura su un file esistente.
  5. Lettura casuale:indica le prestazioni di lettura di un file leggendo informazioni casuali dal file. cioè questa non è una lettura sequenziale.
  6. Scrittura casuale:indica le prestazioni di scrittura su un file in varie posizioni casuali. cioè questa non è una scrittura sequenziale.
  7. Lettura all'indietro
  8. Riscrivi nuovamente la registrazione
  9. Lettura passo passo
  10. Paura
  11. Scrivi
  12. Freread
  13. 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

Linux
  1. 24 iostat, vmstat e mpstat Esempi per il monitoraggio delle prestazioni di Linux

  2. Linux:esiste qualcosa di simile a top per I/O?

  3. I/O su disco Linux OOM. Inoltre:scambia, a cosa serve?

  4. Valutazione dell'attesa I/O della CPU su Linux

  5. wa (In attesa di I/O) dal comando superiore è grande

Tutorial sui comandi Linux ln per principianti (5 esempi)

Linux nl Command Tutorial per principianti (7 esempi)

Tutorial sui comandi Linux nm per principianti (10 esempi)

Esercitazione sui comandi OD Linux per principianti (6 esempi)

Linux w Command Tutorial per principianti (5 esempi)

Tutorial sui comandi Linux ss per principianti (8 esempi)