Für ausführliche Storage-Benchmarks gibt es Tools wie bonnie++ oder fio. Wenn man nur schnell die Read- oder Write-Latency eines Dateisystems prüfen will, reicht ioping — ein einzelner Befehl, Ergebnis in Sekunden.
Installation
# FreeBSD pkg install ioping # Debian/Ubuntu apt install ioping
Read-Latency messen
ioping -s 256k -T 120 -D -c 20 ./ 256 KiB <<< ./ (zfs tanksmeer/usr/home): request=1 time=16.0 us (warmup) 256 KiB <<< ./ (zfs tanksmeer/usr/home): request=2 time=35.7 us 256 KiB <<< ./ (zfs tanksmeer/usr/home): request=3 time=45.8 us ... --- ./ (zfs tanksmeer/usr/home) ioping statistics --- 19 requests completed in 853.7 us, 4.75 MiB read, 22.3 k iops, 5.43 GiB/s generated 20 requests in 19.0 s, 5 MiB, 1 iops, 269.2 KiB/s min/avg/max/mdev = 35.7 us / 44.9 us / 52.8 us / 3.85 us
Die Parameter im Detail:
-s 256k— Blockgröße pro Request (hier 256 KiB)-T 120— Timeout in Sekunden, Requests die länger brauchen werden ignoriert-D— Direct I/O, umgeht den Kernel-Cache (misst die echte Disk-Latency)-c 20— Anzahl der Requests./— Pfad zum Dateisystem das gemessen werden soll
Die Summary am Ende zeigt min/avg/max/mdev — genau wie bei ping. Hier: durchschnittlich 44,9 µs Read-Latency auf einem ZFS-Dataset.
Write-Latency messen
Für die Write-Latency kommt ein einziger Parameter dazu — -W:
ioping -s 256k -T 120 -D -W -c 20 ./ 256 KiB >>> ./ (zfs tanksmeer/usr/home): request=1 time=27.0 us (warmup) 256 KiB >>> ./ (zfs tanksmeer/usr/home): request=2 time=54.4 us 256 KiB >>> ./ (zfs tanksmeer/usr/home): request=3 time=60.6 us ... --- ./ (zfs tanksmeer/usr/home) ioping statistics --- 19 requests completed in 3.86 ms, 4.75 MiB written, 4.93 k iops, 1.20 GiB/s generated 20 requests in 19.0 s, 5 MiB, 1 iops, 269.5 KiB/s min/avg/max/mdev = 51.6 us / 202.9 us / 2.65 ms / 577.9 us
Write ist hier erwartungsgemäß langsamer — 202,9 µs im Schnitt gegenüber 44,9 µs beim Lesen. Die höhere Standardabweichung (577,9 µs vs. 3,85 µs) zeigt, dass einzelne Writes deutlich länger dauern können (hier ein Ausreißer mit 2,65 ms — vermutlich ein ZFS Transaction Group Commit).
Weitere nützliche Optionen
# Fortlaufend messen (wie ping ohne -c) ioping -D ./ # Nur die Summary nach 10 Requests ioping -D -c 10 -q ./ # Bestimmte Blockgröße (4k für Random I/O) ioping -s 4k -D -c 20 ./ # Netzlaufwerk / NFS-Mount testen ioping -D -c 20 /mnt/nfs-share/
Praktisch für einen schnellen Vergleich: Lokale SSD, NFS-Share und USB-Platte mit dem gleichen Befehl messen — die Unterschiede werden sofort sichtbar. Fragen? Einfach melden.
Schreibe einen Kommentar