Server-Benchmark mittels sysbench

Um die Performance der virtuellen Servern zu testen und zu vergleichen habe ich die bekannte Software sysbench genutzt. Diese Software bietet verschiedene Tests an um die Performance der CPU, des RAMs und der Festplatte zu messen. So könnt ihr verschiedene Server / vServer-Angebote miteinander verglichen werden und schauen wie gut die Performance der jeweiligen Angebote ist.

Ebenfalls interessant könnte der Artikel MySQL-Benchmark mittels sysbench sein, um mittels sysbench und eines MySQL-Servers die Performance eines Servers zu messen.

Benchmark-Software sysbench installieren

In meinen Tests habe ich Ubuntu 16.04 als Betriebssystem verwendet, dort lässt sich sysbench in Version 0.4.2 einfach installieren:

Auch bei anderen Betriebssystem lässt sich sysbench oftmals einfach installieren.

Wichtig: Die nachfolgenden Befehle funktionieren nur mit sysbench 0.4.2 und 0.5. Leider wird bei manchen Linux-Version sysbench in Version 1.x installiert. Version 1 unterscheidet sich komplett zu der 0.4.2. Version und meiner Meinung nach ist neue Version von sysbench kaum zu gebrauchen.

So könnt ihr eine spezielle Version von sysbench installieren:

CPU-Benchmark

Mittels des folgenden Befehls könnt ihr einen CPU-Benchmark durchführen:

Der Output sollte wie folgt aussehen:

Die wichtige Zeile ist hierbei Zeile 15. Für die Ausführung des Tests wurden insgesamt 36,2 Sekunden benötigt. Diese Zeitdauer lässt sich mit den Ergebnissen anderer vServer vergleichen.

Der CPU-Test sucht nach allen Primzahlen zwischen 1 und 20.000. Die Obergrenze könnt ihr mittels dem Parameter –cpu-max-prime=20000 verändern. Bei der Suche greift der Test dabei auf nur einen CPU-Core zurück. Die Anzahl dort könnt ihr mittels –num-threads=1 verändern.

Der Primzahlentest überprüft für jede Zahl ob es einen ganzzahligen Teiler zwischen 2 und der Wurzel aus der Zahl existiert. Zum Beispiel für die Primzahl 4567 wird jede Zahl zwischen 2 und sqrt(4567)=67 getestet, ob 4567 durch die Zahl zu teilen ist. Falls ein Teiler gefunden wird, wissen wir, dass die Zahl keine Primzahl sein kann.

Bei diesem Test und mit der Obergrenze 20.000 werden 321.238 rechenaufwendige Operationen auf der CPU ausgeführt, welches den CPU-Kern für gut 30 Sekunden komplett auslastet.

Für das Ranking hier rechne ich die Dauer des Tests in Operationen pro Sekunde um. Der obige vServer von Hetzner schafft demzufolge 321.238 / 36,2 = 8897 Rechenoperationen pro Sekunde.

 

RAM-Benchmark

Mittels dem folgenden Befehl könnt die Geschwindigkeit des RAMs messen:

Hierbei werden 100 GB in Blöcken von je 1 MB in den RAM geschrieben. Der Output sieht wie folgt aus.

Das relevante Ergebnis steht in Zeile 18: Der getestete vServer konnte 7126 MB / Sekunde im Hauptspeicher abspeichern.

Festplatten-Benchmark

Der Festplatten-Benchmark ist etwas komplizierter durchzuführen, da man zuerst abklären muss was man nun genau testen will. Tendenziell gibt es zwei große Bereiche: Das sequentielle Lesen und Schreiben vs. zufälliger Dateizugriff.

Sequentielles Lesen / Schreiben

Beim sequentiellen Lesen / Schreiben wird eine große Datei von der Festplatte gelesen bzw. auf diese geschrieben. Das Ergebnis entspricht der maximalen Performance die die Festplatte beim Lesen / Schreiben erreichen kann.

Mittels dem Tool dd lässt sich die Geschwindigkeit der Festplatte schnell ermitteln.

Schreibgeschwindigkeit – 10 GB Daten

Das Ergebnis sieht wie folgt aus:

Die Daten konnten mit 343 MB/s auf die Festplatte geschrieben werden.

Lesegeschwindigkeit – 10 GB Daten

Wie nutzen die zuvor erstelle Datei und lesen diese aus. Dabei messen wir die Lesegeschwindigkeit.

Das Ergebnis sieht wie folgt aus:

Die Datei konnte mit 176 MB/s von der Festplatte gelesen werden.

Mittels dem Parameter count=10000 könnt ihr die Größe der Datei anpassen. In diesem Beispiel werden 10.000 * 1 MB geschrieben, sprich, die angesprochen 10 GB an Daten.

Zufälliges Lesen & Schreiben

In den meisten Szenarien ist das sequentielle Lesen- und Schreiben eher praxisfern, denn meistens werden auf einem Server keine großen Dateien abgespeichert oder ausgelesen.

Oftmals ist eher das zufällige Lesen und Schreib interessant. Bei diesem Test werden viele kleinere Dateien auf die Festplatte geschrieben, die dann zufällig ausgelesen und/oder beschrieben werden.
Zuerst erstellen wir die Testdateien:

Dieser Befehlt erstell 1024 Dateien mit einer insgesamten Größe von 10GB, d.h. jeder der 1024 Dateien besitzt eine Dateigröße von 10 MB. Ihr könnt die Parameter –file-num=1024 euren Bedürfnissen anpassen und eher weniger dafür größere Dateien erstellen oder viele dafür aber kleinere Dateien erstellen.

Damit wir den Test laufen lassen können, müssen wir die Anzahl der gleichzeitig geöffneten Dateien ggf. erhöhen. Das Limit könnt ihr wie folgt einsehen.

Die Ausgabe erhält eine Zeile ‘open files‘ die die maximale Anzahl an geöffneten Dateien angibt. Sollte diese kleiner als 1024 sein, so müssen wir das Limit erhöhen. Ansonsten kann sysbench den Test nicht durchführen.

Zur Erhöhung des Limits müsst ihr zum root-User wechseln und folgenden Befehl ausführen:

Dies erhöht das Limit auf 100.000.

Zur Ausführung des Festplattentests könnt ihr jetzt folgenden Befehl ausführen:

Das Ergebnis sieht wie folgt aus:

Die relevante Zahl steht in Zeile 21. Diese durchschnittliche Lese- und Schreibgeschwindigkeit bei diesem vServer betrug nur 404 Kb / Sekunde.

Nach Beendigung des Tests könnt ihr die Testdateien wie folgt wieder löschen:

Testparameter

  • –file-total-size=10G –file-num=1024: Die Anzahl der erstellten Dateien und die Gesamtgröße. Diese Werte müssen wie beim prepare-Aufruf sein.
  • –file-test-mode=rndrw: Der Testmodus ist rndrw was für random read write steht. Im >Sysbench Handbuch stehen weitere Optionen.
  • –max-time=300: Der Test läuft für 300 Sekunden, anschließend wird die Lese- und Schreibgeschwindigkeit ermittelt.
  • –file-fsync-freq=1: Nach jedem Schreibvorgang wird fsync() aufgrufen, sprich, es wird erzwungen, dass die Datei tatsächlich auf die Festplatte geschrieben wird. Man kann den Wert erhöhen, z.B. auf 100. Hier werden Änderungen an Dateien u.U. erst im Hauptspeicher gepuffert und erst nach 100 Schreibvorgängen auf die Festplatte geschrieben.