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.00
Der 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.