GNU/Linux >> LINUX-Kenntnisse >  >> Linux

10 iozone-Beispiele für die Messung der Festplatten-E/A-Leistung unter Linux

Wie wir in unserem Einführungsartikel zur Linux-Leistungsüberwachung besprochen haben, ist die Messung der Leistung des IO-Subsystems sehr wichtig.

Wenn sich jemand darüber beschwert, dass eine Datenbank (oder eine beliebige Anwendung), die auf einem Server (mit einem bestimmten Dateisystem oder einer bestimmten RAID-Konfiguration) ausgeführt wird, schneller läuft als dieselbe Datenbank oder Anwendung, die auf einem anderen Server ausgeführt wird, sollten Sie sicherstellen, dass die Leistung auf dem Die Festplattenebene ist auf beiden Servern gleich. In dieser Situation können Sie iozone verwenden.

Wenn Sie Ihre Datenbank (oder eine beliebige Anwendung) in einer bestimmten SAN- oder NAS-Umgebung ausführen und sie in eine andere SAN- oder NAS-Umgebung migrieren möchten, sollten Sie dies tun Dateisystem-Benchmarking auf beiden Systemen und vergleichen Sie es. Für diese Situation können Sie iozone verwenden.

Wenn Sie wissen, wie man iozone verwendet, können Sie es für verschiedene Dateisystem-Benchmarking-Zwecke verwenden.

Laden Sie IOZone herunter und installieren Sie es

Iozone ist ein Benchmarking-Dienstprogramm für Open-Source-Dateisysteme.

Befolgen Sie die nachstehenden Schritte, um iozone herunterzuladen und auf Ihrem System zu installieren.

wget http://www.iozone.org/src/current/iozone3_394.tar

tar xvf iozone3_394.tar 

cd iozone3_394/src/current

make

make linux

Was misst das IOzone-Dienstprogramm?

IOzone führt die folgenden 13 Arten von Tests durch. Wenn Sie iozone test auf einem Datenbankserver ausführen, können Sie sich auf die ersten 6 Tests konzentrieren, da sie sich direkt auf die Datenbankleistung auswirken.

  1. Lesen – Gibt die Leistung beim Lesen einer Datei an, die bereits im Dateisystem vorhanden ist.
  2. Schreiben – Zeigt die Leistung beim Schreiben einer neuen Datei in das Dateisystem an.
  3. Erneut lesen – Nach dem Lesen einer Datei zeigt dies die Leistung beim erneuten Lesen einer Datei an.
  4. Neu schreiben – Zeigt die Leistung beim Schreiben in eine vorhandene Datei an.
  5. Random Read – Zeigt die Leistung beim Lesen einer Datei an, indem zufällige Informationen aus der Datei gelesen werden. d.h. dies ist kein sequentielles Lesen.
  6. Random Write – Zeigt die Leistung beim Schreiben in eine Datei an verschiedenen zufälligen Orten an. d.h. dies ist kein sequentielles Schreiben.
  7. Rückwärts lesen
  8. Umschreiben aufzeichnen
  9. Schrittweise lesen
  10. Freuen
  11. Fwrite
  12. Frei gelesen
  13. Neu schreiben

10 IOZone-Beispiele

1. Führen Sie alle IOZone-Tests mit Standardwerten aus

-a Option steht für automatischen Modus. Dadurch werden temporäre Testdateien mit Größen von 64 KB bis 512 MB für Leistungstests erstellt. Dieser Modus verwendet auch 4k bis 16M Datensatzgröße für Lese- und Schreibtests (dazu später mehr).

-a Option führt auch alle 13 Arten von Tests aus.

$ ./iozone -a

Der erste Satz der iozone-Ausgabe enthält die Kopfzeileninformationen, die Informationen über das iozone-Dienstprogramm und alle iozone-Optionen anzeigen, die zum Generieren dieses Berichts verwendet werden, wie unten gezeigt.

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.

Der zweite Abschnitt der Ausgabe enthält die Ausgabewerte (in pro Sekunde) verschiedener Tests.

  • 1. Spalte KB:Gibt die Dateigröße an, die für den Test verwendet wurde.
  • 2. Spalte reclen:Gibt die Datensatzlänge an, die für den Test verwendet wurde.
  • 3. Spalte bis zur letzten Spalte:Zeigt die verschiedenen Tests an, die durchgeführt werden, und ihre Ausgabewerte in pro Sekunde.
                                                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. Speichern Sie die Ausgabe mit iozone -b

in einer Tabelle

Um die iozone-Ausgabe in einer Tabelle zu speichern, verwenden Sie die Option -b wie unten gezeigt. -b steht für Binär und weist iozone an, die Testausgabe im Binärformat in eine Tabelle zu schreiben.

$ ./iozone -a -b output.xls

Hinweis:Die Option -b kann mit jedem der unten aufgeführten Beispiele verwendet werden.

Aus den Daten, die in der Tabellenkalkulation gespeichert sind, können Sie mit der Diagrammfunktion des Tabellenkalkulationstools einige hübsche Diagramme erstellen. Das Folgende ist ein Beispieldiagramm, das aus der iozone-Ausgabe erstellt wurde.

Bild :IOZone-Grafik

3. Führen Sie nur einen bestimmten Testtyp mit iozone -i

aus

Wenn Sie daran interessiert sind, nur einen bestimmten Testtyp auszuführen, verwenden Sie die Option -i.

Syntax:

iozone -i [test-type]

Der Testtyp ist ein numerischer Wert. Im Folgenden sind die verschiedenen verfügbaren Testtypen und ihre numerischen Werte aufgeführt.

  • 0=schreiben/umschreiben
  • 1=lesen/erneut lesen
  • 2=zufälliges Lesen/Schreiben
  • 3=Rückwärts lesen
  • 4=Re-write-record
  • 5=schrittlesen
  • 6=fwrite/re-fwrite
  • 7=fread/Re-fread,
  • 8=zufällige Mischung
  • 9=pwrite/Re-pwrite
  • 10=pread/Re-pread
  • 11=pwritev/Re-pwritev
  • 12=preadv/Re-preadv

Das folgende Beispiel führt nur die Schreibtests aus (d. h. sowohl Schreiben als auch Neuschreiben). Wie Sie der Ausgabe entnehmen können, sind die anderen Spalten leer.

$ ./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

Kombinieren Sie mehrere Jozon-Testtypen

Sie können auch mehrere Testtypen kombinieren, indem Sie mehrere -i in der Befehlszeile angeben.

Das folgende Beispiel testet beispielsweise sowohl Lese- als auch Schreibtesttypen.

$ ./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. Geben Sie die Dateigröße mit iozone -s

an

Standardmäßig erstellt iozone automatisch temporäre Dateien mit einer Größe von 64 KB bis 512 MB, um verschiedene Tests durchzuführen.

Die 1. Spalte in der iozone-Ausgabe (mit der Spaltenüberschrift KB) gibt die Dateigröße an. Wie Sie in der vorherigen Ausgabe gesehen haben, beginnt es mit einer 64-KB-Datei und wird weiter bis zu 512 MB ansteigen (durch jedes Mal Verdoppeln der Dateigröße).

Anstatt den Test für alle Dateigrößen durchzuführen, können Sie die Dateigröße mit der Option -s angeben.

Das folgende Beispiel führt einen Schreibtest nur für die Dateigröße 1 MB (d. h. 1024 KB) durch.

$ ./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. Geben Sie die Datensatzgröße zum Testen mit iozone -r

an

Wenn Sie einen Test für eine bestimmte Dateigröße ausführen, werden verschiedene Datensatzgrößen von 4 KB bis 16 MB getestet.

Wenn Sie E/A-Leistungstests eines E/A-Subsystems durchführen möchten, das eine Oracle-Datenbank hostet, sollten Sie die Datensatzgröße in der iozone auf denselben Wert wie die DB-Blockgröße festlegen. Die Datenbank liest und schreibt basierend auf der DB-Blockgröße.

reclen steht für Record Length. Im vorherigen Beispiel gibt die 2. Spalte (mit der Spaltenüberschrift „reclen“) die Datensatzlänge an, die zum Testen von IOzone verwendet werden soll. In der vorherigen Beispielausgabe wurden für die Dateigröße von 1024 KB beim iozone-Test verschiedene Datensatzgrößen von 4 KB bis 16 MB verwendet, um den Schreibtest durchzuführen.

Anstatt all diese standardmäßigen Datensatzlängen zu verwenden, können Sie auch die Datensatzgröße angeben, die Sie testen möchten.

Im folgenden Beispiel wird der Schreibtest nur für eine Datensatzlänge von 32 KB ausgeführt. In der Ausgabe wird in der 2. Spalte jetzt nur noch 32 angezeigt.

$ ./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. Dateigröße mit Datensatzgröße kombinieren

Sie können auch die Optionen -s und -r verwenden, um eine genaue temporäre Dateigröße und eine genaue Datensatzlänge anzugeben, die getestet werden muss.

Im Folgenden wird beispielsweise der Schreibtest mit einer 2M-Datei mit einer Datensatzlänge von 1M ausgeführt

$ ./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. Durchsatztest mit iozone -t

Um die iozone im Durchsatzmodus auszuführen, verwenden Sie die Option -t. Sie sollten auch die Anzahl der Threads angeben, die während dieses Tests aktiv sein müssen.

Im folgenden Beispiel wird der iozone-Durchsatztest für Schreibvorgänge mit 2 Threads ausgeführt. Bitte beachten Sie, dass Sie die Option -a nicht mit der Option -t kombinieren können.

$ ./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

Um den Durchsatz für alle Testtypen durchzuführen, entfernen Sie das „-i 0“ aus dem obigen Beispiel, wie unten gezeigt.

$ ./iozone -t 2

8. Fügen Sie die CPU-Auslastung mit iozone -+u

hinzu

Während Sie den iozone-Test durchführen, können Sie iozone auch anweisen, die CPU-Auslastung mit der Option -+u zu erfassen.

Das -+ vor der Option sieht vielleicht etwas seltsam aus. Aber Sie müssen das ganze -+u (nicht nur -u oder +u) angeben, damit dies richtig funktioniert.

Das folgende Beispiel führt den gesamten Test aus und fügt den CPU-Auslastungsbericht als Teil der generierten Excel-Tabellenausgabe hinzu.

$ ./iozone -a -+u -b output.xls

Hinweis:Dadurch wird für jeden durchgeführten Test eine separate CPU-Auslastung angezeigt.

9. Erhöhen Sie die Dateigröße mit iozone -g

Das ist wichtig. Wenn Ihr System über mehr als 512 MB RAM verfügt, sollten Sie die temporäre Dateigröße erhöhen, die iozone zum Testen verwendet. Wenn Sie dies nicht tun, erhalten Sie möglicherweise keine genauen Ergebnisse, da der Systempuffer-Cache dabei eine Rolle spielt.

Für eine genaue Festplattenleistung wird empfohlen, dass die Größe der temporären Datei dreimal so groß ist wie die Größe Ihres Systempuffercaches.

Im folgenden Beispiel wird iozone ausgeführt, indem die maximale Dateigröße auf 2 GB erhöht wird, und es werden die automatischen iozone-Tests für Schreibtests ausgeführt.

$ ./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. Testen Sie mehrere Einhängepunkte zusammen mit iozone -F

Indem Sie mehrere iozone-Optionen kombinieren, können Sie Festplatten-I/O-Tests an mehreren Einhängepunkten durchführen, wie unten gezeigt.

Wenn Sie 2 Einhängepunkte haben, können Sie 2 verschiedene iozone-Threads starten, um temporäre Dateien auf diesen beiden Einhängepunkten zu Testzwecken zu erstellen, wie unten gezeigt.

$ ./iozone -l 2 -u 2 -r 16k -s 512M -F /u01/tmp1 /u02/tmp2
  • -l gibt die Mindestanzahl von iozone-Prozessen an, die gestartet werden sollten
  • -u gibt die maximale Anzahl von iozone-Prozessen an, die gestartet werden sollten
  • -F sollte mehrere Werte enthalten. d.h. wenn wir 2 sowohl in -l als auch in -u angeben, sollten wir hier zwei Dateinamen haben. Bitte beachten Sie, dass nur die Einhängepunkte vorhanden sein müssen. Die in der Option -F angegebene Datei muss nicht existieren, da iozone diese temporäre Datei während des Tests erstellt. Im obigen Beispiel sind die Einhängepunkte /u01 und /u02. Die Dateien tmp1 und tmp2 werden zu Testzwecken automatisch von iozone erstellt.

Frühere Artikel in der Serie zur Überwachung und Optimierung der Linux-Leistung:

  • Einführung in die Linux-Leistungsüberwachung und -optimierung
  • 15 praktische Beispiele für Top-Befehle unter Linux
  • 7 praktische Beispiele für PS-Befehle zur Prozessüberwachung
  • 10 nützliche Sar (Sysstat)-Beispiele für die UNIX-/Linux-Leistungsüberwachung

Linux
  1. Linux – Bestimmung einer bestimmten Datei, die für hohe E/A verantwortlich ist?

  2. Linux – Referenzen, aber für Linux?

  3. 24 iostat-, vmstat- und mpstat-Beispiele für die Linux-Leistungsüberwachung

  4. Linux:Gibt es etwas ähnliches wie top für I/O?

  5. wa (Warten auf E/A) vom obersten Befehl ist groß

Linux ln Command Tutorial für Anfänger (5 Beispiele)

Linux nl Command Tutorial für Anfänger (7 Beispiele)

Linux-nm-Befehls-Tutorial für Anfänger (10 Beispiele)

Linux OD Command Tutorial für Anfänger (6 Beispiele)

Linux w Command Tutorial für Anfänger (5 Beispiele)

Linux ss Command Tutorial für Anfänger (8 Beispiele)