Bernd Leitenbergers Blog

Wie schnell ist der Raspberry Pi?

Da ich gerade wieder an meinem Programm für Raumfahrtfragestellungen arbeite, habe ich mir gedacht – das kann man man doch ganz gut für einen Benchmark nutzen. Was ich nutzte war eine Berechnung eines Einschwenkens in die Umlaufbahn um den Mars nach einer Transferbahn. Dort werden 3000 Tage in der Umlaufbahn simuliert und 1,2 Millionen Wegpunkte berechnet. Die werden für eine Grafik auf 10.000 reduziert und zwei Grafiken erstellt, eine mit dem weg um die Sonne, die zweite um den Planeten.

Benchmark 1 sucht zuerst den Versatz um den vorgegebenen Minimalabstand zu erreichen. Da der Planet die Bahn zu sich krümmt kann man den nicht einfach zum theoretischen Treffpunkt der Bahnen hinzuaddieren. Mein Ansatz ist ihn iterativ zu errechnen indem man zuerst einen größeren Bereich nach dem wert absucht der dem Zielabstand am nächsten kommt, dann über diesen Wert

Benchmark 2 ist nur der zweite Teil, hier wird nicht der Minimalabstand gesucht sondern nur noch die Simulation mit gefundenen Vorgaben durchgeführt. Bei diesem Teil ist der Rechenaufwand geringer, dafür macht der relative Anteil an Speicheroperationen und Grafikoperationen / Textausgabe mehr aus.

Ich habe den Benchmark in Lazarus gemacht, der Compiler ist für viele Betriebssysteme verfügbar, das macht es vergleichbar. Es gab keine speziellen Anpassungen an die CPU-Architektur, aber das ist ja auch nicht beim Raspbian der Fall – das letzte Image bootet problemlos unter dem Raspi 1 wie dem Raspi 3. Mein Rechner hat einen iCore I5 4590 mit 4 Kernen und 3,5 MHz, bei diesem Benchmark der nur einen Kern nutzt taktet dieser dann auf 3,9 GHz hoch. Alle Tests fanden ohne weitere Belastung (aber mit aktiven Hintergrundprogrammen mit Ausnahme des Raspi 1) statt. Bei den Raspis erfolgte der Zugriff über Remote Desktop.

Hier nun die Ergebnisse:

Rechner Benchmark 1 Benchmark 2 MHz Bench 1 zu 2
PC (I5 4590) 34,9 20,9 3900 0,60
Raspberry Pi 3 268,5 158,1 1200 0,59
Raspbery Pi 2 451,7 270,4 900 0,60
Raspberry Pi B 734,2 425,6 900 0,58
Speedfaktor
PC (I5 4590) 1,0 1,0 3900
Raspberry Pi 3 7,7 7,6 1200
Raspbery Pi 2 12,9 12,9 900
Raspberry Pi B 21,0 20,4 900
Pro MHz
PC (I5 4590) 1,0 1,0 3900
Raspberry Pi 3 2,4 2,3 1200
Raspbery Pi 2 3,0 3,0 900
Raspberry Pi B 4,9 4,7 900

Schon der schnellste Raspi 3 ist nominell sieben bis achtmal langsamer als mein PC, gut ich habe einen relativ schnellen Rechner, aber ich denke gegenüber einem günstigen Pentium G wird es immer noch der Faktor 3 sein. Davon sieht man beim Arbeiten nicht so viel. Webseiten bauen sich etwas langsamer auf, aber nicht achtmal langsamer sondern vielleicht 2-3 mal. Ich habe beim Arbeiten das Gefühl wie mit einem langsamen PC zu arbeiten.

Der Raspberry Pi 2 ist gegenüber dem Nachfolge Modell von 2016, dem Raspi 3 deutlich langsamer – mehr als man aufgrund der Frequenz vermuten könnte. Bei allen Rechnern ist Bench 2 immer um den Faktor 1,67 schneller als Bench 1.

Das der Raspi 1 deutlich langsamer als der Raspi 2 ist weiß jeder der einen mal genutzt hat. Er ist wirklich lahm, anders kann man es nicht bezeichnen. Dabei ist mein Raspi sogar moderat auf 900 MHz hochgetaktet worden, das ist ein nach der Raspberry Pi Foundation noch erlaubter, sicherer Bereich – /zumindest läuft er seit letztem Juli durchgehend mit 900 MHz). Warum? Nun zum einen belegt bei ihm schon die laufende Oberfläche ohne das was passiert 10-20% der Rechenleistung. Bei den anderen mit mehreren Kernen kann ein Kern exklusiv das Programm ausführen. Er ist dann auch beim normalen Betrieb eben immer gleich zu 100% ausgelastet und hat keinen zweiten Kern mehr verfügbar um auf etwas anderes zu reagieren, daher fühlt er sich so träge an. Absolut gesehen ist er nicht mal so viel langsamer als der Raspi 3. Der Raspi 1 kann meine Wetterstation so gerade mal betreiben. Wenn er einmal am Tag die Monatsübersicht zusätzlich erstellen muss setzt dann schon mal das Erfassen der Meßwerte aus, das nominell alle 24 s erfolgt. Ebenso scheint es ab und an beim normalen Erzeugen der Grafiken und Hochspielen auf den FTP-Server vorzukommen. Anstatt 3600 Einträge habe ich meist am Tageschluss nur 3550-3560 Stück.

Darüber hinaus scheint der ARMV6 Kern die Befehle noch deutlich langsamer abzuarbeiten. Bei Intel CPU’s ist es ja seit dem Pentium so dass immer mehr Instruktionen parallel verarbeitet werden, sie werden an verschiedene Ausführungseinheiten verteilt, inzwischen gibt es immer neue Tricks, wie mehrere Befehle zu einem zusammenzufassen. Das alles haben die einfachen ARM Prozessoren noch nicht in dem Maße, doch sie holen auf wie man beim Sprung vom Raspi 1 zum Raspi 2 sieht. Er verarbeitet bei gleicher Taktfrequenz doppelt so viele Instruktionen wie die erste Version des Raspberry.  Ich habe testweise mal auf dem Raspi 3 den Prozessor von „Voreinstellung“ auf Cortex A53 umgestellt – doch keine Veränderung auch bei Windows macht die Anpassung nur Veränderungen im einstelligen Prozentbereich (hier ist bei Lazarus die neuste Generation der Pentium M, das verwundert, aber in Wirklichkeit hat sich bei den allgemeinen CPU-Befehlen (nicht SSE/AVX) seit der Core Serie die auf dem Pentium M basiert nichts geändert.

Ebenso ist auffällig, dass die erzeugten Exes unterschiedlich groß sind: Das Windows Programm ist 1,94 MB groß, das ARM-Programm 2,8 MB. Das kann daran liegen, dass die einzelnen RISC-Befehle nicht so mächtig sind. Doch es ist nicht verallgemeinerbar. Bei meiner Wetterstation ist der Unterschied mit 3,011 zu 3,1 MB (Windows/Raspberry) relativ klein.

[Edit]Da die Rasbian Foundation offensichtlich sehr an abgehangener Software hängt habe ich jetzt zumindest mal auf dem Raspi 3 die neuste Compilerversion 1,7 anstatt 1.24 installiert. Bei ihr verbessert sich die Geschwindigkeit leicht auf 257,9 / 153,5 s, also etwa 4% besser-

Die mobile Version verlassen