Raspberry Pi – Benchmark Tests – Datei Ein/Ausgabe
Im letzten Teil haben wir die CPU unseres Raspberry Pis einem Benchmark unterzogen und festgestellt, dass diese selbst gegen handelsübliche Dual Core CPUs mehr als langsam ist. Als nächstes steht ein Benchmark der Datei Ein/Ausgabe an. Eine schnelle Dateiverarbeitung ist wichtig, da die Festplatte bei heutigen Systemen oft der Engpass ist und deshalb immer mehr von SSD Platten
ersetzt wird. Der Raspberry Pi hat in diesem Bereich noch ein kleines Manko, er verwendet eine SD Karte, die je nach Klasse auch sehr langsam beim Schreiben sein kann. Im normalen Betrieb kein Problem, fatal jedoch wenn man mit einer Anwendung große Datenmengen speichern und lesen können muss.
Benchmark
Wieder verwenden wir für Benchmark Tests das Programm sysbench. Wie man dieses installiert habe ich im ersten Teil erklärt.
Datei Ein/Ausgabe testen
Für diesen Test müssen zuerst Dateien erstellen, die man in Summe nicht in den RAM Speicher laden kann. Sysbench bietet uns dafür bereits alle Funktionen. Die Dateien werden mit dem folgenden Kommando erstellt:
sysbench --test=fileio --file-total-size=2G prepare
Für den Raspberry Pi reicht in Summe 2 Gigabyte Dateien zu erstellen. Diese passen keinesfalls in den RAM. Man beachte, dass bereits die Erstellung relativ lange dauert. Das ist vor allem von der Klasse der SD Karte abhängig.
Der Test wird dann mit dem folgenden Kommando durchgeführt:
sysbench --test=fileio --file-total-size=2G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run
Dieser Test dauert auch seine Zeit. Nachdem der Test abgeschlossen ist erscheint eine Auswertung die zum Beispiel so aussehen kann:
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Initializing random number generator from timer.
Extra file open flags: 0
128 files, 16Mb each
2Gb total file size
Block size 16Kb
Number of random requests for random IO: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Threads started!
Time limit exceeded, exiting...
Done.
Operations performed: 660 Read, 440 Write, 1291 Other = 2391 Total
Read 10.312Mb Written 6.875Mb Total transferred 17.188Mb (58.615Kb/sec)
3.66 Requests/sec executed
Test execution summary:
total time: 300.2622s
total number of events: 1100
total time taken by event execution: 5.7741
per-request statistics:
min: 0.09ms
avg: 5.25ms
max: 1347.38ms
approx. 95 percentile: 4.72ms
Threads fairness:
events (avg/stddev): 1100.0000/0.00
execution time (avg/stddev): 5.7741/0.00Der wichtige Wert ist hier die Angabe von Kb/sec. Also wie viele Kilobyte pro Sekunde geschrieben und gelesen wurden. Der Raspberry Pi schafft mit meiner SD Karte ganze 58 kB/sec. Mein Referenz VServer Intel Duo Core mit 1 GB RAM schaffte es mit 7 Mb/sec. Na ja, seht euch die Zahlen an und urteilt selber. Was schafft euer Pi?
Nach dem Test kann man die angelegten Dateien wieder löschen. Das geht mit diesem Kommando:
sysbench --test=fileio --file-total-size=2G cleanup
Tipp
Falls ihr merkt, dass euch die SD Karte zu langsam ist, dann findet ihr eine schnelle Klasse 10 SD Karte mit ausreichend Speicher über den Link.
Im nächsten Teil geht es um die Datenbank.
