Raspberry Pi – Benchmark Tests – Datenbank
In den letzen beiden Teilen dieser Artikelserie haben wir gesehen, dass der Raspberry Pi sowohl bei der CPU als auch beim RAM einem Server deutlich in der Leistung unterlegen ist. Nachdem nun die Ausführungsgeschwindigkeit und der Schreib-Lese-Zugriff bekannt ist wollen wir uns nun eine Anwendung ansehen, die beides vereint: die Datenbank. Eine Datenbank soll zum einen eine große Anzahl an Daten speichern, zum anderen diese immer und überall so schnell wie möglich liefern können. Das benötigt zum einen einen schnellen Rechner und zum anderen einen großen RAM Speicher. Der hier gemessene Wert zeigt an wie gut beide für die Datenbank zusammenspielen.
Benchmark
Wieder verwenden wir das bereits im ersten Teil beschriebene Benchmark Tool sysbench. Das Tool bietet auch eine gute Möglichkeit um die Performance der Datenbank sehr einfach und effizient zu testen.
Datenbank
Als Datenbank verwenden wir bei dem Test MySQL. Diese Datenbanksystem ist ein quasi Standard bei heutigen Webservern und deshalb auch für den Raspberry Pi die erste Wahl. Nun interessiert uns ob MySQL auch performant am Raspberry Pi läuft. Der Test gliedert sich wieder in zwei Schritte. Im ersten Schritt wird in der Datenbank eine Tabelle mit 1.000.000 Datensätzen erstellt:
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=PASSWORT prepare
Das Kommando ist eigentlich selbsterklärend. Man muss lediglich das eigene Passwort für den root Benutzer eingeben.
Das Erstellen der Testdaten dauert etwas. Nachdem diese erstellt sind können wir mit dem folgenden Kommando den Test durchführen:
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=PASSWORT --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
Wieder muss man das Passwort anpassen.
Der Test liefert uns zum Beispiel folgendes Ergebnis:
sysbench 0.4.12: multi-threaded system evaluation benchmark No DB drivers specified, using mysql Running the test with following options: Number of threads: 8 Doing OLTP test. Running mixed OLTP test Doing read-only test Using Special distribution (12 iterations, 1 pct of values are returned in 75 pct cases) Using "BEGIN" for starting transactions Using auto_inc on the id column Threads started! Time limit exceeded, exiting... (last message repeated 7 times) Done. OLTP test statistics: queries performed: read: 19124 write: 0 other: 2732 total: 21856 transactions: 1366 (22.73 per sec.) deadlocks: 0 (0.00 per sec.) read/write requests: 19124 (318.25 per sec.) other operations: 2732 (45.46 per sec.) Test execution summary: total time: 60.0909s total number of events: 1366 total time taken by event execution: 480.3358 per-request statistics: min: 32.30ms avg: 351.64ms max: 5906.18ms approx. 95 percentile: 377.32ms Threads fairness: events (avg/stddev): 170.7500/3.53 execution time (avg/stddev): 60.0420/0.02
Der für uns interessante Wert ist transactions. In diesem Test wurden 1366 Transaktionen durchgeführt, 22.7 pro Sekunde.
Als letzten Schritt kann man dann noch die Tabelle wieder entfernen:
sysbench --test=oltp --mysql-db=test --mysql-user=root --mysql-password=PASSWORT cleanup
Soweit unser Ausflug in die Welt der Benchmarks. Ich hoffe ich konnte dem einen oder anderen zeigen, wie schnell der Raspberry Pi wirklich ist. Wenn jemand andere Werte gemessen hat dann bitte hier als Kommentar posten. Wer hat den schnellsten Pi?
Sehr schönes Tutorial. Habe alle Tests erfolgreich durchgeführt. Nur nooch ein Hinweis: Die Datenbank (database) TEST muss vorher beispielsweise mit PHPMYADMIN angelegt werden.
Hier mal die Werte vom Raspberry Pi 3:
http://pastebin.com/Bns2U04u
Habe den Pi 2 overclocked und anstelle der SD-Karte eine USB-Flash-Disk verwendet:
Test 1 (Total time): 688 sec
Test 2 (File IO): 1Mb/s (Flash-Disk!)
Test 3 (MySQL-Transactions): 224 per sec.