Auf dieser Seite finden Sie Details dazu, wie Sie die Speicherplatzleistung prüfen.
Volume-Leistung mit Fio messen
Verwenden Sie das I/O-Generator-Tool Fio, um die Baseline-Leistung zu messen.
Fio verwenden
Fio wendet eine Arbeitslast an, die Sie über eine Befehlszeile oder eine Konfigurationsdatei angeben können. Während der Ausführung zeigt Fio eine Fortschrittsanzeige mit dem aktuellen Durchsatz und den IOPS (Ein-/Ausgabevorgänge pro Sekunde) an. Danach wird eine detaillierte Zusammenfassung angezeigt.
Beispiel für Fio-Ergebnisse
Die folgenden Beispiele zeigen einen einstufigen 4‑KB-Zufallsschreibjob, der 60 Sekunden lang ausgeführt wird. Dies ist eine nützliche Methode, um die Basislatenz zu messen. In den folgenden Befehlen verweist der Parameter --directory
auf einen Ordner mit einer bereitgestellten NetApp Volumes-Freigabe:
$ FIO_COMMON_ARGS=--size=10g --fallocate=none --direct=1 --runtime=60 --time_based --ramp_time=5
$ fio $FIO_COMMON_ARGS --directory=/netapp --ioengine=libaio --rw=randwrite --bs=4k --iodepth=1 --name=nv
cvs: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.28
Starting 1 process
cvs: Laying out IO file (1 file / 10240MiB)
Jobs: 1 (f=1): [w(1)][100.0%][w=7856KiB/s][w=1964 IOPS][eta 00m:00s]
cvs: (groupid=0, jobs=1): err= 0: pid=1891: Wed Dec 21 14:56:37 2022
write: IOPS=1999, BW=7999KiB/s (8191kB/s)(469MiB/60001msec); 0 zone resets
slat (usec): min=4, max=417, avg=12.06, stdev= 5.71
clat (usec): min=366, max=27978, avg=483.59, stdev=91.34
lat (usec): min=382, max=28001, avg=495.96, stdev=91.89
clat percentiles (usec):
| 1.00th=[ 408], 5.00th=[ 429], 10.00th=[ 437], 20.00th=[ 449],
| 30.00th=[ 461], 40.00th=[ 469], 50.00th=[ 482], 60.00th=[ 490],
| 70.00th=[ 498], 80.00th=[ 515], 90.00th=[ 529], 95.00th=[ 553],
| 99.00th=[ 611], 99.50th=[ 652], 99.90th=[ 807], 99.95th=[ 873],
| 99.99th=[ 1020]
bw ( KiB/s): min= 7408, max= 8336, per=100.00%, avg=8002.05, stdev=140.09, samples=120
iops : min= 1852, max= 2084, avg=2000.45, stdev=35.06, samples=120
lat (usec) : 500=70.67%, 750=29.17%, 1000=0.15%
lat (msec) : 2=0.01%, 4=0.01%, 50=0.01%
cpu : usr=2.04%, sys=3.25%, ctx=120561, majf=0, minf=58
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,119984,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=7999KiB/s (8191kB/s), 7999KiB/s-7999KiB/s (8191kB/s-8191kB/s), io=469MiB (491MB), run=60001-60001msec
In den folgenden Zeilen finden Sie Details zu den Leistungsergebnissen:
Latenz:
lat (usec): min=382, max=28001, avg=495.96, stdev=91.89
Die durchschnittliche Latenz beträgt 495,96 Mikrosekunden (µs), also etwa 0,5 ms. Das ist eine ideale Latenz.
IOPS:
min= 1852, max= 2084, avg=2000.45, stdev=35.06, samples=120
Das vorherige Beispiel zeigt einen Durchschnitt von 2.000 IOPS. Dieser Wert ist für einen einstufigen Job mit einer Latenz von 0,5 ms (
IOPS = 1000 ms/0.5 ms = 2000
) zu erwarten.Durchsatz:
bw ( KiB/s): min= 7408, max=8336, per=100.00%, avg=8002.05, stdev=140.09
Der durchschnittliche Durchsatz beträgt 8.002 KiBp/s, was dem erwarteten Ergebnis für 2.000 IOPS mit einer Blockgröße von 4 KiB (
2000 1/s * 4 KiB = 8,000 KiB/s
) entspricht.
Latenz messen
Die Latenz ist ein wichtiger Messwert für die Volume-Leistung. Sie hängt von den Client- und Serverfunktionen, der Entfernung zwischen Client und Server (Ihrem Volumen) und den Geräten dazwischen ab. Die Hauptkomponente des Messwerts ist die standortbedingte Latenz.
Sie können die IP-Adresse Ihres Volumes anpingen, um die Laufzeit zu erhalten. Dies ist eine grobe Schätzung der Latenz.
Die Latenz wird von der Blockgröße und davon beeinflusst, ob Lese- oder Schreibvorgänge ausgeführt werden. Wir empfehlen, die folgenden Parameter zu verwenden, um die Baseline-Latenz zwischen Ihrem Client und einem Volume zu messen:
Linux
fio --directory=/netapp \ --ioengine=libaio \ --rw=randwrite \ --bs=4k --iodepth=1 \ --size=10g \ --fallocate=none \ --direct=1 \ --runtime=60 \ --time_based \ --ramp_time=5 \ --name=latency
Windows
fio --directory=Z\:\ --ioengine=windowsaio --thread --rw=randwrite --bs=4k --iodepth=1 --size=10g --fallocate=none --direct=1 --runtime=60 --time_based --ramp_time=5 --name=latency
Ersetzen Sie die Parameter rw
(read/write/randread/randwrite) und bs
(Blockgröße) durch die für Ihre Arbeitslast geeigneten Werte. Größere Blockgrößen führen zu einer höheren Latenz, wobei Lesevorgänge schneller als Schreibvorgänge sind. Die Ergebnisse finden Sie in der Zeile lat
.
IOPS messen
IOPS sind ein direktes Ergebnis der Latenz und der Gleichzeitigkeit. Verwenden Sie je nach Clienttyp einen der folgenden Tabs, um IOPS zu messen:
Linux
fio --directory=/netapp \ --ioengine=libaio \ --rw=randread \ --bs=4k \ --iodepth=32 \ --size=10g \ --fallocate=none \ --direct=1 \ --runtime=60 \ --time_based \ --ramp_time=5 \ --name=iops
Windows
fio --directory=Z\:\ --ioengine=windowsaio --thread --rw=randread --bs=4k --iodepth=32 --size=10g --fallocate=none --direct=1 --runtime=60 --time_based --ramp_time=5 --numjobs=16 --name=iops
Ersetzen Sie die Parameter rw
(read/write/randread/randwrite), bs
(blocksize) und iodepth
(concurrency) entsprechend Ihrer Arbeitslast. Die Ergebnisse finden Sie in Zeile iops
.
Durchsatz messen
Der Durchsatz ist die Anzahl der IOPS multipliziert mit der Blockgröße. Verwenden Sie je nach Clienttyp einen der folgenden Tabs, um den Durchsatz zu messen:
Linux
fio --directory=/netapp \ --ioengine=libaio \ --rw=read \ --bs=64k \ --iodepth=32 \ --size=10g \ --fallocate=none \ --direct=1 \ --runtime=60 \ --time_based \ --ramp_time=5 \ --numjobs=16 \ --name=throughput
Windows
fio --directory=Z\:\ --ioengine=windowsaio --thread --rw=read --bs=64k --iodepth=32 --size=10g --fallocate=none --direct=1 --runtime=60 --time_based --ramp_time=5 --numjobs=16 --name=throughput
Ersetzen Sie die Parameter rw
(read/write/randread/randwrite), bs
(blocksize) und iodepth
(concurrency) entsprechend Ihrer Arbeitslast. Ein hoher Durchsatz ist nur mit Blockgrößen von mindestens 64 kB und hoher Parallelität möglich.
Nächste Schritte
Sehen Sie sich die Leistungsbenchmarks an.