Durchführen von Vergleichstest für einen Datenträger
Gilt für: ✔️ Linux-VMs ✔️ Windows-VMs ✔️ Flexible Skalierungsgruppen ✔️ Einheitliche Skalierungsgruppen
Bei Benchmarktests werden verschiedene Workloads Ihrer Anwendung simuliert und die Anwendungsleistung für jeden Workload gemessen. Unter Befolgung der in dem Artikel „Entwerfen für hohe Leistung“ beschriebenen Schritte haben Sie die Leistungsanforderungen der Anwendung gesammelt. Durch Ausführen von Benchmarktools in den VMs, die die Anwendung hosten, können Sie die Leistungsgrade bestimmen, die Ihre Anwendung mit SSD Premium-Datenträgern erreichen kann. In diesem Artikel bieten wir Beispiele für Benchmarktests einer Standard_D8ds_v4-VM, die mit SSD Premium-Datenträgern von Azure bereitgestellt wurde.
Wir haben für Windows und Linux gängige Benchmarktools wie DiskSpd und FIO verwendet. Diese Tools erzeugen mehrere Threads zum Simulieren eines produktionsähnlichen Workloads und Messen der Systemleistung. Mithilfe der Tools können Sie auch Parameter wie Blockgröße und Warteschlangenlänge konfigurieren, die Sie normalerweise nicht für eine Anwendung ändern können. Dadurch können Sie flexibler die Maximalleistung einer Hochleistungs-VM ermitteln, die für verschiedene Typen von Anwendungsworkloads mit SSD Premium-Datenträgern bereitgestellt ist. Weitere Informationen zu den einzelnen Benchmarktools finden Sie unter DiskSpd und FIO.
Um die folgenden Beispiele zu befolgen, erstellen Sie eine Standard_D8ds_v4-VM und fügen Sie vier SSD Premium-Datenträger an die VM an. Konfigurieren Sie drei der vier Datenträger mit der Hostcache-Einstellung „None“, und fügen Sie sie einem Stripeset mit dem Namen „NoCacheWrites“ hinzu. Konfigurieren Sie auf dem verbleibenden Datenträger die Hostcache-Einstellung „ReadOnly“, und erstellen Sie ein Volume mit dem Namen „CacheReads“ mit diesem Datenträger. Mithilfe dieser Einrichtung können Sie die maximale Lese- und Schreibleistung einer Standard_D8ds_v4-VM ermitteln. Ausführliche Schritte zum Erstellen einer Standard_D8ds_v4-VM mit SSD Premium-Datenträgern finden Sie unter Entwerfen für hohe Leistung.
Auffüllen des Caches
Der Datenträger mit der Hostzwischenspeicherungseinstellung ReadOnly bietet eine IOPS-Rate, die höher als der Datenträgergrenzwert ist. Um diese maximale Leseleistung aus dem Hostcache zu erzielen, müssen zuerst Sie den Cache dieses Datenträgers mit gültigen Daten auffüllen. Dies stellt sicher, dass die Lese-E/As, die das Benchmarktool auf dem Volume „CacheReads“ erzeugt, tatsächlich den Cache und nicht direkt den Datenträger abfragen. Die Cachetreffer führen zu mehr IOPS auf dem einzelnen Datenträger mit aktiviertem Cache.
Wichtig
Immer wenn die VM neu gestartet wird, müssen Sie den Cache vor dem Ausführen von Benchmarktests auffüllen.
DISKSPD
Laden Sie das Tool DISKSP auf die VM herunter. DISKSPD ist ein Tool, das Sie anpassen können, um Ihre eigenen synthetischen Workloads zu erstellen. Wir nutzen die gleiche Einrichtung wie oben beschrieben, um Benchmarktests durchzuführen. Sie können die Spezifikationen ändern, um verschiedene Workloads zu testen.
In diesem Beispiel werden die folgenden Baselineparameter verwendet:
- -c200G: Erstellt die Beispieldatei, die im Test verwendet wird (oder erstellt sie neu). Die Größe kann in Bytes, KiB, MiB, GiB oder Blöcken festgelegt werden. In diesem Fall wird eine große Zieldatei von 200 GiB verwendet, um das Zwischenspeichern im Arbeitsspeicher zu minimieren.
- -w100: Gibt den Prozentsatz der Vorgänge an, bei denen es sich um Schreibanforderungen handelt (-w0 entspricht 100 % Leseanforderungen).
- -b4K: Gibt die Blockgröße in Bytes, KiB, MiB oder GiB an. In diesem Fall wurde die Blockgröße 4K verwendet, um einen E/A-Test nach dem Zufallsprinzip zu simulieren.
- -F4: Legt insgesamt vier Threads fest.
- -r: Gibt E/A-Test nach dem Zufallsprinzip an (überschreibt den Parameter -s).
- -o128: Gibt die Anzahl der ausstehenden E/A-Anforderungen pro Ziel pro Thread an. Dies wird auch als Warteschlangenlänge bezeichnet. In diesem Fall wird 128 verwendet, um die CPU zu belasten.
- -W7200: Gibt die Dauer der Auffüllphase an, bevor Messungen gestartet werden.
- -d30: Gibt die Dauer des Tests ohne Auffüllphase an.
- -Sh: Deaktiviert für Software und Hardware das Zwischenspeichern von Schreibvorgängen (gleichbedeutend mit -Suw).
Eine vollständige Liste der Parameter finden Sie im GitHub-Repository.
Maximale Schreib-IOPS
Wir verwenden eine hohe Warteschlangenlänge von 128, eine kleine Blockgröße von 8 KB und vier Arbeitsthreads für das Erzeugen von Schreibvorgängen. Die Arbeitsthreads für Schreibvorgänge erzeugen Datenverkehr auf dem Volume NoCacheWrites, das drei Datenträger mit der Cacheeinstellung „None“ aufweist.
Führen Sie den folgenden Befehl 30 Sekunden lang zum Auffüllen und 30 Sekunden lang zum Messen aus:
diskspd -c200G -w100 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat
Die Ergebnisse zeigen, dass die VM Standard_D8ds_v4 ihren maximalen IOPS-Grenzwert von 12.800 für Schreibvorgänge ausschöpft.
Maximale Lese-IOPS
Wir verwenden eine hohe Warteschlangenlänge von 128, eine kleine Blockgröße von 4 KB und vier Arbeitsthreads für das Erzeugen von Lesevorgängen. Die Arbeitsthreads für Lesevorgänge erzeugen Datenverkehr auf dem Volume „CacheReads“, das einen Datenträger mit der Cacheeinstellung „ReadOnly“ aufweist.
Führen Sie den folgenden Befehl zwei Stunden lang zum Auffüllen und 30 Sekunden lang zum Messen aus:
diskspd -c200G -b4K -F4 -r -o128 -W7200 -d30 -Sh testfile.dat
Die Ergebnisse zeigen, dass die VM Standard_D8ds_v4 ihren maximalen IOPS-Grenzwert von 77.000 für Lesevorgänge ausschöpft.
Maximaler Durchsatz
Um den maximalen Lese-und Schreibdurchsatz zu erzielen, können Sie zu einer größeren Blockgröße von 64 KB wechseln.
FIO
FIO ist ein beliebtes Tool für Benchmarktests des Speichers von Linux-VMs. Es ermöglicht die flexible Auswahl unterschiedlicher E/A-Größen sowie sequenzieller oder zufälliger Lese- und Schreibvorgänge. FIO erzeugt Arbeitsthreads oder Prozesse zum Ausführen der angegebenen E/A-Vorgänge. Mithilfe von Auftragsdateien können Sie den Typ der E/A-Vorgänge angeben, den jeder Arbeitsthread ausführen soll. Wir haben eine Auftragsdatei pro Szenario erstellt, was in den folgenden Beispielen veranschaulicht wird. Sie können die Spezifikationen in diesen Auftragsdateien ändern, um Benchmarktests für verschiedene Workloads in Storage Premium auszuführen. In den Beispielen verwenden wir eine VM des Typs Standard_D8ds_v4 unter Ubuntu. Verwenden Sie die gleiche Einrichtung wie am Anfang des Abschnitts zu Benchmarktests beschrieben, und füllen Sie den Cache vor dem Ausführen der Benchmarktests auf.
Laden Sie zunächst FIO herunter, und installieren Sie es auf dem virtuellen Computer.
Führen Sie den folgenden Befehl für Ubuntu aus:
apt-get install fio
Wir verwenden je vier Arbeitsthreads zum Erzeugen von Schreib- und Lesevorgängen auf den Datenträgern. Die Arbeitsthreads für Schreibvorgänge erzeugen Datenverkehr auf dem Volume „nocache“, das drei Datenträger mit der Cacheeinstellung „None“ aufweist. Die Arbeitsthreads für Lesevorgänge erzeugen Datenverkehr auf dem Volume „readcache“, das einen Datenträger mit der Cacheeinstellung „ReadOnly“ aufweist.
Maximale Schreib-IOPS
Erstellen Sie die Auftragsdatei mit den folgenden Spezifikationen, um die maximale Schreib-IOPS zu erhalten. Benennen Sie die Datei „fiowrite.ini“.
[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4
[writer1]
rw=randwrite
directory=/mnt/nocache
Beachten Sie, dass die folgenden wichtigen Aspekte in Einklang mit den in den vorherigen Abschnitten erörterten Entwurfsrichtlinien sind. Diese Spezifikationen sind zum Erzielen der maximalen IOPS wichtig:
- Eine hohe Warteschlangenlänge von 256
- Eine kleine Blockgröße von 4 KB.
- Mehrere Threads, die sequentielle Lesevorgänge ausführen
Führen Sie den folgenden Befehl aus, um einen 30-sekündigen FIO-Test zu starten:
sudo fio --runtime 30 fiowrite.ini
Während der Testausführung können Sie die Anzahl der Schreib-IOPS erkennen, die die VM- und Premium-Datenträger zu bieten haben. Wie im folgenden Beispiel gezeigt, schöpft die VM des Typs Standard_D8ds_v4 ihre maximale IOPS-Schreibkapazität von 12.800 IOPS aus.
Maximale Lese-IOPS
Erstellen Sie die Auftragsdatei mit den folgenden Spezifikationen, um die maximale Lese-IOPS zu erhalten. Benennen Sie die Datei „fioread.ini“.
[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4
[reader1]
rw=randread
directory=/mnt/readcache
Beachten Sie, dass die folgenden wichtigen Aspekte in Einklang mit den in den vorherigen Abschnitten erörterten Entwurfsrichtlinien sind. Diese Spezifikationen sind zum Erzielen der maximalen IOPS wichtig:
- Eine hohe Warteschlangenlänge von 256
- Eine kleine Blockgröße von 4 KB.
- Mehrere Threads, die sequentielle Lesevorgänge ausführen
Führen Sie den folgenden Befehl aus, um einen 30-sekündigen FIO-Test zu starten:
sudo fio --runtime 30 fioread.ini
Während der Testausführung können Sie die Anzahl der Lese-IOPS erkennen, die die VM- und Premium-Datenträger zu bieten haben. Wie im folgenden Beispiel gezeigt, schöpft die VM des Typs Standard_D8ds_v4 ihre maximale IOPS-Lesekapazität von 77.000 IOPS aus. Dies ist eine Kombination aus Datenträger- und Cacheleistung.
Maximale Lese- und Schreib-IOPS
Erstellen Sie die Auftragsdatei mit den folgenden Spezifikationen, um die maximale kombinierte Lese- und Schreib-IOPS zu erhalten. Benennen Sie die Datei „fioreadwrite.ini“.
[global]
size=30g
direct=1
iodepth=128
ioengine=libaio
bs=4k
numjobs=4
[reader1]
rw=randread
directory=/mnt/readcache
[writer1]
rw=randwrite
directory=/mnt/nocache
rate_iops=3200
Beachten Sie, dass die folgenden wichtigen Aspekte in Einklang mit den in den vorherigen Abschnitten erörterten Entwurfsrichtlinien sind. Diese Spezifikationen sind zum Erzielen der maximalen IOPS wichtig:
- Eine hohe Warteschlangenlänge von 128
- Eine kleine Blockgröße von 4 KB.
- Mehrere Threads, die sequenzielle Lese- und Schreibvorgänge ausführen
Führen Sie den folgenden Befehl aus, um einen 30-sekündigen FIO-Test zu starten:
sudo fio --runtime 30 fioreadwrite.ini
Während der Testausführung können Sie die Anzahl der kombinierten Lese- und Schreib-IOPS erkennen, die die VM- und Premium-Datenträger zu bieten haben. Wie im folgenden Beispiel gezeigt, schöpft die VM des Typs Standard_D8ds_v4 kombinierte Lese- und Schreib-IOPS von über 90.000 aus. Dies ist eine Kombination aus Datenträger- und Cacheleistung.
Maximaler kombinierter Durchsatz
Um den maximalen kombinierten Lese- und Schreibdurchsatz zu erhalten, wählen Sie eine höhere Blockgröße und Warteschlangenlänge mit mehreren Threads, die Lese- und Schreibvorgänge ausführen. Sie können eine Blockgröße von 64 KB und Warteschlangenlänge von 128 verwenden.
Nächste Schritte
Lesen Sie als nächstes unseren Artikel Entwerfen für hohe Leistung.
In diesem Artikel erstellen Sie eine Prüfliste ähnlich derjenigen für die vorhandene Anwendung für den Prototyp. Mithilfe von Benchmarktools können Sie die Workloads simulieren und die Leistung der Prototypanwendung messen. Auf diese Weise können Sie bestimmen, mit welchem Datenträgerangebot die Leistungsanforderungen Ihrer Anwendung erfüllt oder gar übertroffen werden. Anschließend können Sie dieselben Richtlinien für Ihre Produktionsanwendung implementieren.