Speicherleistung mit VMware Storage Performance Tester überprüfen
Messexperte
von Thomas Drilling
Veröffentlicht in Ausgabe 06/2021 - SCHWERPUNKT
VMware Storage Performance Tester ist ein schlankes Tool zur Leistungsmessung von iSCSI- und FC-Storage und kann unter anderem IOPS, Latenz und CPU-Zyklen pro I/O des ESXi-Storage-Stacks erfassen. Das Werkzeug stellt in erster Linie eine besonders benutzerfreundliche Möglichkeit zur Verfügung, etwaige Probleme mit der Speicherleistung identifizieren und beheben zu können.
Storage Performance Tester [1] (SPT) ist ein sogenanntes Fling – ein nicht offiziell unterstütztes, aber von VMware entwickeltes Tool. Es lässt sich einsetzen, um unter anderem die maximale Performance neu angeschaffter Speicherhardware oder-treiber zu überprüfen und Setups auf etwaige Probleme oder Fehlkonfigurationen zu untersuchen.
Das Werkzeug kann sämtliche Testschritte, einschließlich der benutzerdefinierten Bereitstellung von Test-VMs, dem Ausführen von Test-Workloads und der Analyse der Speicherleistung, automatisieren. Im Anschluss zeigt Storage Performance Tester die Leistungsmetriken anhand visualisierter Diagramme an. Summa summarum benötigen Sie im Prinzip nur einen einzigen Befehl und erhalten anschließend den fertigen Performance-Report.
Architektur von Storage Performance Tester
Storage Performance Tester nutzt das Open-Source-Tool Fio [2] zum Erzeugen synthetischer Benchmarks. Fio kann verschiedene I/O-Workloads wie sequenzielle Lesevorgänge oder zufällige Schreibvorgänge, synchron oder asynchron auf Basis der von Ihnen angegebenen Optionen generieren.
Storage Performance Tester [1] (SPT) ist ein sogenanntes Fling – ein nicht offiziell unterstütztes, aber von VMware entwickeltes Tool. Es lässt sich einsetzen, um unter anderem die maximale Performance neu angeschaffter Speicherhardware oder-treiber zu überprüfen und Setups auf etwaige Probleme oder Fehlkonfigurationen zu untersuchen.
Das Werkzeug kann sämtliche Testschritte, einschließlich der benutzerdefinierten Bereitstellung von Test-VMs, dem Ausführen von Test-Workloads und der Analyse der Speicherleistung, automatisieren. Im Anschluss zeigt Storage Performance Tester die Leistungsmetriken anhand visualisierter Diagramme an. Summa summarum benötigen Sie im Prinzip nur einen einzigen Befehl und erhalten anschließend den fertigen Performance-Report.
Architektur von Storage Performance Tester
Storage Performance Tester nutzt das Open-Source-Tool Fio [2] zum Erzeugen synthetischer Benchmarks. Fio kann verschiedene I/O-Workloads wie sequenzielle Lesevorgänge oder zufällige Schreibvorgänge, synchron oder asynchron auf Basis der von Ihnen angegebenen Optionen generieren.
SPT setzt zudem VMware OVF Tool [3] ein, um die Workload-VMs automatisiert auf dem ESXi-Host bereitzustellen. Daraus ergeben sich folgende Voraussetzungen zum Einsatz von Storage Performance Tester: Sie benötigen eine Linux-VM mit einem Kernel 2.6.31 oder niedriger mit Ubuntu/Debian oder CentOS/Fedora. Auf der VM müssen die Softwarepakete "fio 3.2", "ovftool", "python 3" und "sshpass" installiert sein. Im nächsten Schritt schauen wir uns die Komponenten im Detail an.
Fio
Fio steht für Flexible I/O Tester. Es ist ein quelloffenes I/O-Performance-Benchmarking-Tool für Linux, Unix und Windows, das Jens Axboe entwickelt. Erwähnenswert ist der Name des Entwicklers an dieser Stelle durchaus, weil Axboe Maintainer des Block Layers des Linux-Kernels ist. Sie können mit Fio die Performance von Geräten wie Festplatten oder SSDs testen. Dabei werden ein vom Nutzer definierter Workload generiert, ausgeführt und die Performancedaten eingesammelt.
SPT stellt letztlich eine komfortable Benutzerschnittstelle für Fio bereit. Unter der Regie von Storage Performance Tester müssen Sie die Parameter in Fio nicht selbst anpassen, es schadet aber nicht, sich grundsätzlich mit dem Tool auszukennen. Fio kann prinzipiell ein ganzes Block Device oder einzelne Dateien testen. Wird kein Block-Gerät mithilfe des Parameters "--filename" übergeben, legt Fio über den Parameter "--name" Testdateien an. Mit dem Parameter "--size" geben Sie dann die Größe der Dateien an. Setzen Sie – wie es Storage Performance Tester tut – via "--filename" ein ganzes Block-Device ein, wird ohne "--size" das ganze Device verwendet.
Als Blockgröße kommen per Default 4 KByte zum Einsatz. Sie können aber mit dem Parameter "--bs" auch andere Blockgrößen angeben. Mithilfe des Parameters "--rw" legen Sie fest, dass Fio IO-Zugriffe sequenziell oder zufällig absetzt. Es lassen sich auch gemischte Workloads definieren, also beispielsweise mit 50 Prozent lesenden und 50 Prozent schreibenden Zugriffen.
Fio verwendet grundsätzlich zufällige Daten. Der Aufwand, diese zu erzeugen, lässt sich verringern, wenn zu Beginn ein Puffer von zufälligen Daten erstellt wird. Auf diesen kann Fio im Verlauf des Tests laufend zurückgreifen. Diese Puffer-Verwendung bewirkt allerdings bei aktuellen SSDs, dass der SSD-Controller die Daten komprimiert und die Performance dann in etwa die gleiche ist, als würden Nullen als Daten verwendet, was Sie übrigens mit der Option "--zero_buffers" ebenfalls erzwingen könnten. Der beschriebene Effekt der SSD-Kompression lässt sich mithilfe des Parameters "--refill_buffers" umschiffen, womit Sie Fio anweisen, den Puffer bei jeder Übermittlung neu zu füllen.
Parallele Zugriffe lassen sich in Fio auf unterschiedliche Art und Weise umsetzen. Sie könnten zum Beispiel mehrere Prozesse starten, die die Jobs dann parallel ausführen (Option "--numjobs"), oder Sie erhöhen mit der asynchronen I/O-Engine die I/O-Tiefe. Parallele I/O-Requests bewirken vor allem bei SSDs einen Performance-Gewinn, weil SSDs intern mehrere Flash-Channels für die Abarbeitung haben.
Wie lange ein Test laufen soll, geben Sie über den Parameter "--runtime" an. Um zu verhindern, dass der Test früher als die angegebene Zeit stoppt, können Sie mit dem Parameter "--time_based" bestimmen, dass ein Test-Workload solange wiederholt wird, bis die gewünschte Laufzeit erreicht ist.
Bild 1: Es reicht ein einziger Befehl, um die Performance-Tests zu starten.
VMware OVF Tool
Mit dem Kommandozeilentool OVF Tool (ovftool) können Sie eine VM mithilfe einer OVF- oder OVA-Vorlage lokal bereitstellen oder eine VM aus Ihrer lokalen vSphere-Umgebung an ein VMware-Cloud-on-AWS-SDDC übertragen. Genau genommen handelt es sich bei OVF Tool um ein sehr flexibel nutzbares Befehlszeilenprogramm, das Sie zum Migrieren von virtuellen Maschinen zwischen einer lokalen Installation und einem SDDC verwenden. Weitere Informationen zu ovftool finden Sie unter [4].
sshpass
Storage Performance Tester benötigt zudem sshpass. Bekanntlich verwendet die Secure Shell (SSH) als Standardauthentifizierungsmethode die "interaktive Tastatur-Passwort-authentifizierung". Die Bezeichnung ergibt in doppelter Hinsicht Sinn. Zum einen, weil der Benutzer die Authentifizierung in der Regel über die Tastatur durchführt, zum anderen aber auch, weil OpenSSH damit sozusagen proaktiv gewährleistet, dass das Passwort tatsächlich interaktiv über die Tastatur eingegeben wird. In bestimmten Fällen ist es aber erforderlich, SSH sozusagen auszutricksen, damit es ein nicht-interaktives als ein interaktives Passwort akzeptiert. Hierzu benötigen Sie sshpass. Das Tool führt SSH damit in einem dedizierten TTY aus und täuscht vor, es würde das Passwort von einem interaktiven Benutzer erhalten. Der auszuführende Befehl wird nach den eigenen Optionen von sshpass angegeben. Normalerweise ist das ein SSH-Kommando mit Argumenten, kann aber genauso gut jeder andere Befehl sein. Die von SSH verwendete Kennwortabfrage ist derzeit jedoch in sshpass fest codiert.
Bild 2: Die Konfiguration für die Test-Workloads lässt sich vom Nutzer anpassen.
Test-Workloads bereitstellen
Die von Storage Performance Tester generierten Test-VMs sind dazu gedacht, sehr I/O-intensive Workloads zu erzeugen und sind daher mit Linux ubuntuMiniv1, Kernel 4.15.0-109-generic, acht vCPUs, 8 GByte RAM, vier virtuellen SCSI-Disks (VMDK) am paravirtualisierten SCSI-Controller von je 2 GByte konfiguriert. Diese Test-VMs stellen Sie dann im gewünschten Datastore des zu messenden Zielhosts bereit. Weisen Sie beispielsweise beim Programmstart vier Datenspeicher für den angegebenen Host zu, stellt das Tool auch vier VMs bereit und startet auf jeder die jeweiligen Fio-Tasks. Die gemessene Leistung zeigen verschiedene grafische Diagramme über einen Webserver an.
Storage Performance Tester einrichten
Sie können SPT als ZIP-Datei von der VMware-Fling-Seite herunterladen, müssen dazu aber VMwares Technical-Preview-Lizenz zustimmen. Anschließend entpacken Sie das Archiv mit dem Ordner "sperf" auf der Engine-VM. Danach installieren Sie sshpass mittels sudo apt install sshpass beziehungsweise yum install sshpass unter CentOs/Fedora. Mit dem Befehl fio --version prüfen Sie, ob Fio bereits installiert ist. Falls noch nicht vorhanden, holen Sie das Tool unter Ubuntu/Debian mithilfe von sudo apt-get install fio auf den Rechner. Das Werkzeug ovftool müssen Sie sich von VMware herunterladen und installieren. Bei der Datei "VMware-ovftool-4.4.xxxxxxxxx.bundle" handelt es sich um ein Executeable, das Sie zum Beispiel unter Debian als Root-User wie folgt ausführen können:
/bin/sh "VMware-ovftool-4.4.xxxxxxxxx.bundle"
Nach dem Abnicken der Lizenzbedingungen mit "yes" wird das Tool installiert. Überprüfen können Sie das mit dem Befehl ovftool –version.
Arbeiten mit sperf
Sie finden das in Python geschriebene Tool SPT in Form der Datei "sperf.py" nach dem Entpacken im Ordner "sperf". Die Datei verlangt beim Start das Root-Passwort des zu testenden ESXi-Hosts. Dann führt das Tool den konfigurierten Test automatisch durch und gibt das Ergebnis nach circa 20 Minuten zurück. Die Basissyntax lautet:
sperf.py <HOSTNAME> -d <DatastoreName>
Mehr müssen Sie im Prinzip nicht tun. Natürlich können Sie aber auch mehrere Datastores testen, wodurch das Tool entsprechend viele Test-VMs erzeugt:
Bild 3: Die Ergebnisse der Performancetests werden grafisch über den Webserver ausgegeben.
Konfiguration anpassen
Möchten Sie stattdessen eine benutzerdefinierte Workload-Konfiguration verwenden, erreichen Sie das durch Anhängen einer privaten Konfigurationsdatei mit dem Parameter "-i" oder "--configfile":
Übergeben Sie keine angepasste Konfiguration, steuert sperf das Anlegen beziehungsweise Steuern der Test-Work-loads mithilfe der mitgelieferten Standardkonfigurationsdatei "config.ini". Die Default-Konfiguration stellt Workload-Konfigurationen für 4K-, 8K- und 64K-Workloads für Lesen, Schreiben, zufälliges Schreiben und zufälliges Lesen sowie IOPS-Workloads (512K, 4K, 8K) (Lesen, Schreiben) und Latenz-Workloads bereit. Die Konfigurationsdatei unterstützt die Schlüsselwörter: [iops*] [latency*] und [delay*]. Sie können aber auch eigene Fio-Workload-Skripte und Konfigurationsdateien schreiben, um Workloads einzurichten, die Ihren Anwendungsfall am besten abbilden. Die Testergebnisse erhalten Sie in Form von output.html-Dateien mithilfe eines Webservers. Sollte auf Ihrem Linux-System noch keiner installiert sein, müssen Sie das zunächst erledigen. Als kurzfristiger Workaround reicht aber auch das mitgelieferte Skript "~/sperf/results/sperfhttp.sh". Das Skript startet einen einfachen HTTP-Dienst auf Port 8000. Sie können die Testergebnisse dann einfach über "http://<IP-Linux-Engine-Host>:8000" abrufen.
Fazit
Storage Performance Tester ist ein auf Fio basierendes Tool zum Messen der Speicherperformance. Er punktet mit einfacher Benutzbarkeit und eignet sich für schnelle Vorabanalysen. Verwenden Sie die mitgelieferte Workload-Konfiguration, sind Sie im Idealfall mit nur einem Befehl am Ziel.