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.
- Lesen – Gibt die Leistung beim Lesen einer Datei an, die bereits im Dateisystem vorhanden ist.
- Schreiben – Zeigt die Leistung beim Schreiben einer neuen Datei in das Dateisystem an.
- Erneut lesen – Nach dem Lesen einer Datei zeigt dies die Leistung beim erneuten Lesen einer Datei an.
- Neu schreiben – Zeigt die Leistung beim Schreiben in eine vorhandene Datei an.
- 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.
- Random Write – Zeigt die Leistung beim Schreiben in eine Datei an verschiedenen zufälligen Orten an. d.h. dies ist kein sequentielles Schreiben.
- Rückwärts lesen
- Umschreiben aufzeichnen
- Schrittweise lesen
- Freuen
- Fwrite
- Frei gelesen
- 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 TabelleUm 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
ausWenn 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
anStandardmäß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
anWenn 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
hinzuWä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