Fio
fio (flexible I/O tester) ist ein I/O Performance Benchmarking Tool für Linux und andere Unix Systeme. Autor von fio ist Jens Axboe, Maintainer des Block Layers des Linux Kernels.[1]
Inhaltsverzeichnis |
Testfälle
Im folgenden zeigen wir Ihnen beispielhaft einige Testfälle. Wenn Sie mehrere Threads parallel nutzen möchten, nutzen Sie die Optionen --numjobs und --group_reporting.[2] Allgemeine Informationen zu IOPS und Dursatztests finden Sie im Artikel Messen von I/O Performance. Beispieltests mit diesen gezeigten Tests finden Sie im Artikel I/O Performance Vergleich von Festplatten mit SSDs und Fusion-io ioDrive.
| Testfall Maximale Laufzeit pro Test: 60 Sekunden |
Lesen (für Schreibtests ändern Sie 'read' auf 'write' beim --rw Parameter - ACHTUNG: wenn Sie ein Device in /dev/ eintragen werden Daten des Devices überschrieben!) |
Testnr. | ||
|---|---|---|---|---|
| IOPS | Sequential | Gesamt | fio --filename=/dev/DEVICE --direct=1 --rw=read --bs=512 --size=DEVICESIZE --runtime=60 --name=file1
|
1 |
| 10% Anfang | fio --filename=/dev/DEVICE --direct=1 --rw=read --bs=512 --size=DEVICESIZE/10 --runtime=60 --name=file1
|
2 | ||
| Random | Gesamt | fio --filename=/dev/DEVICE --direct=1 --rw=randread --bs=512 --size=DEVICESIZE --runtime=60 --name=file1
|
3 | |
| 10% Anfang | fio --filename=/dev/DEVICE --direct=1 --rw=randread --bs=512 --size=DEVICESIZE/10 --runtime=60 --name=file1
|
4 | ||
| Durchsatz | Sequential | 5 GByte Anfang | fio --filename=/dev/DEVICE --direct=1 --rw=read --bs=1m --size=5G --runtime=60 --name=file1
|
5 |
| 5 GByte Ende | fio --filename=/dev/DEVICE --direct=1 --rw=read --bs=1m --size=5G --runtime=60 --offset=OFFSET --name=file1
|
6 | ||
| Ganzes Device[3] | fio --filename=/dev/DEVICE --direct=1 --rw=read --bs=5G --size=DEVICESIZE --runtime=60 --name=file1
|
7 | ||
| Random | 5 GByte Anfang | fio --filename=/dev/DEVICE --direct=1 --rw=randread --bs=1m --size=5G --runtime=60 --name=file1
|
8 | |
| 5 GByte Ende | fio --filename=/dev/DEVICE --direct=1 --rw=randread --bs=1m --size=5G --runtime=60 --offset=OFFSET --name=file1
|
9 | ||
| Ganzes Device | fio --filename=/dev/DEVICE --direct=1 --rw=randread --bs=5G --size=DEVICESIZE --runtime=60 --name=file1
|
10 | ||
Optionen
filename
Mit der Option filename definieren Sie die Testdatei. Sie können hier auch das Device-File eines Block-Devices angeben, um das Block-Device direkt (ohne Einfluss eines Filesystems) zu testen.
direct
direct=1 aktiviert direct I/O (siehe dazu Direct und synchronized I/O unter Linux#O_DIRECT).
sync
sync=1 aktiviert synchronous I/O. Für die meisten I/O Engines bedeuted dies O_SYNC (siehe dazu Direct und synchronized I/O unter Linux#O_SYNC, O_DSYNC, O_RSYNC).
readwrite
readwrite oder rw definiert das I/O Pattern.
Mögliche Werte sind:
- read: Sequential reads
- write: Sequential writes
- randread: Random reads
- randwrite: Random writes
- rw: Gemischte sequential reads und writes
- randrw: Gemischte random reads und writes
blocksize
blocksize oder bs definiert die Blockgröße (Standardwert 4K).
size
size definiert die Gesamtgröße des I/O für diesen Testjob. fio läuft so lange, bis diese Größe transferiert wurde oder die runtime erreicht ist.
numjobs
Anzahl der Prozesse, die den definierten Workload erzeugen (Standardwert 1). Werte >1 erzeugen einen multi-threaded I/O.
runtime
runtime definiert die maximale Laufzeit in Sekunden.
group_reporting
Wenn aktiviert, erzeugt diese Option einen Gruppenbericht bei Tests mit numjobs>1 (anstelle von einzelnen Job Reports).
Weitere Optionen
zero_buffers
zero_buffers=1 füllt die Puffer mit Nullen anstelle von random data (zufälligen Daten).
Diese Option kann die Messergebnisse bei SSDs beeinflussen, falls der SSD Controller versucht Daten zu komprimieren.[4] Zumeist sollen sich aber auch die zufälligen Daten komprimieren lassen, da in der Standardkonfiguration nur ein Puffer zufällig erzeugt wird und dieser dann wiederholend verwendet wird.[5]
Einzelnachweise
- ↑ siehe /usr/src/linux/MAINTAINERS Datei des aktuellen Linux Kernels, z.B. http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/MAINTAINERS
- ↑ http://kb.fusionio.com/KB/a29/verifying-linux-system-performance.aspx
- ↑ Durch die Laufzeitlimitierung sind die Ergebnisse dieses Tests nicht immer repräsentativ. Für eine vollständigen Durchlauf entfernen Sie den runtime Parameter (Achtung: lange Testlaufzeit!)
- ↑ http://www.spinics.net/lists/fio/msg00467.html
- ↑ http://www.spinics.net/lists/fio/msg00362.html
Weitere Informationen
- http://git.kernel.dk/?p=fio.git;a=summary
- http://freshmeat.net/projects/fio
- http://www.linux.com/archive/feature/131063
- http://kb.fusionio.com/KB/a26/compiling-fio-benchmark-tool-linux.aspx