Ab einem Raspberry Pi 3 kann man schon ganz vernünftig mit Lazarus unter Raspbian arbeiten. Bei größeren Projekten ziehe ich aber immer noch einen normalen PC oder ein Notebook vor. Ob es nicht doch auf einem Raspberry besser geht, zeigt dieser Versuch.
Damit Lazarus schneller auf einem Raspberry läuft, müssen wir das System tunen. Der Raspberry Pi läuft ab der Version 3 schon mit der maximalen Prozessorgeschwindigkeit. Mehr geht so mit einer globalen Steigerung erst mal nicht.
Das ist auch nicht so schlimm. Ist die Arbeitsumgebung von Lazarus einmal gestartet, bin ich der Meinung, dass man damit schon gut arbeiten kann.
Anders sieht es aus, wenn eine Kompilierung gestartet wird. Bei jeder Kompilierung werden viele Files eingelesen und geänderte Files automatisch neu kompiliert. Diese Dateizugriffe benötigen natürlich Zeit.
Das Konzept mit der Speicherung auf SD-Karte ist für die meisten Projekte und Aufgaben ja völlig in Ordnung. Die Geschwindigkeit wirkt sich dort meistens nur auf den Boot-Vorgang aus.
Möchte man auf dem Pi wirklich entwickeln, d. h. oft kompilieren und testen, ist das ein echter Nachteil. Auch mit schnellen SD-Karten ab Class 10 sind kaum mehr als 15 MB/s Datenübertragung möglich.
Das ist auch mein Ansatzpunkt: Die Filezugriffe beschleunigen und damit Zeit sparen!
Wie kann man das erreichen? Nicht mit einer noch besseren SD-Karte, sondern durch eine schnellere Festplatte, die auch schnelle Zugriffszeiten ermöglicht:
eine SSD.
Was braucht man dafür?
Raspbian kann seit ungefähr 2017 im USB-Modus gebootet werden (Option program_usb_boot_mode=1 in der config.txt). Damit gibt es die Möglichkeit, auch von anderen Quellen, als einer SD-Karte zu booten.
Das kann ein USB-Stick oder eine Festplatte sein. Für eine Festplatte ist dann logischerweise ein USB-zu-SATA-Kabel notwendig.
Im Gesamten braucht man nicht viel Zubehör:
- USB-Adapter für SATA-Festplatten (z. B. bei ebay für ca. 5 EUR)
- SSD (bei mir ist es eine Intensio mit 120 GB für 20 EUR)
In der Summe sind die Kosten also überschaubar und fast identisch mit einer schnellen SD-Karte.
Vorbereitungen
Für den ersten Start, um die Einstellungen zum USB-Boot zu machen, ist immer noch eine SD-Karte mit Raspbian erforderlich. Das kann aber auch die SD-Karte eines vorhandenen Systems sein. Die SD-Karte wird nur für das erste Booten gebraucht. Mit der Option program_usb_boot_mode=1 wird einmalig dem Pi mitgeteilt, dass auch von USB gebootet werden soll.
Wichtig ist das verwendete Netzteil, denn die SSD verbraucht zusätzlichen Strom. Bei einem Raspberry Pi 3+ hat es bei mir nur mit einem 2,5 A Neztteil funktioniert. Andernfalls kann es sein, dass die Festplatte gar nicht bootet.
Das erkennt man daran, dass die rote Power-LED des Raspberry beim Boot-Vorgang zu blinken beginnt (und nicht mehr damit aufhört) und dann nichts weiter passiert.
Wahrscheinlich könnte man anstelle einer SSD auch eine normale Festplatte verwenden. Die Stromaufnahmen beider sind nicht so unterschiedlich, wie man glauben könnte (siehe techreport). Ich bleibe aber trotzdem lieber bei der SSD Variante. Allein der geräuschlose Betrieb ist für mich wichtig.
Installation
Für die Installation gibt es schon eine Reihe toller Anleitungen. Mir gefällt die von raspberry.tips am besten. An diese habe ich mich auch gehalten.
Hier steht sehr gut beschrieben, wie auch eine aktuelle Raspbian Installation auf SSD kopiert und anschließend weiterverwendet werden kann. Also unbedingt lesen, denn ich gehe hier nicht weiter darauf ein.
Grundsätzlich sind diese Schritte notwendig:
- Bestehende SD-Karte aus Raspberry Pi nehmen und mit z. B. balenaEtcher auslesen
- SSD Festplatte mit USB Adapter verbinden und am PC/Notebook mit balenaEtcher mit dem ausgelesenen System beschreiben
- Anpassungen an der /boot/config.txt vornehmen
- SSD an Raspberry Pi anschließen
- Fertig
Geschwindigkeitszuwachs?
Hat alles geklappt, bootet der Raspberry Pi mit dem bestehenden oder neuen Raspbian System von der SSD.
Gefühlt arbeitet der Raspberry bei mir etwas zackiger. Wie erwartet startet Lazarus auch schneller.
Das Booten dauert dafür länger. Aber nur dadurch, dass der eigentliche Bootvorgang (ab dem Bootbild mit den Himbeeren) erst später beginnt. Die zusätzliche Zeit kommt vor dem Booten durch das Finden des Bootmediums.
Dadurch, dass die SD-Karte auch noch mit der gleichen Konfiguration vorhanden ist, kann man gut überprüfen, welche Vorteile mit der SSD genau erreicht wurden.
Meßergebnisse
Wie schlägt sich nun die SSD im Vergleich zu der SD-Karte und zum Windows 10 PC? Als weiteren Vergleich habe ich Raspbian auch noch auf die gleiche Weise auf einen USB-Stick übertragen.
Ich habe mir 4 Kategorien genauer angeschaut:
- Bootvorgang
- Start von Lazarus
- Neukompilieren eines Projekts
- Schreib-/Lesegeschwindigkeit
Bootvorgang
Beim Booten zeigt sich die oben beschriebene Problematik. Durch die zusätzliche Zeit zum Finden des Bootmediums, dauert er bei einer SSD deutlich länger als bei einer SD-Karte. Ich nenne es in der Grafik Einschalten-bis-Himbeere.
raspberrypi.org nennt als Dauer dafür 5..10 Sekunden. Bei mir sind es aber ungefähr 20 Sekunden. Die Zeit ist auch nicht bei jedem Boot gleich.
Das eigentliche Booten (nach der Himbeere) ist mit 19 Sekunden (SSD) schneller, als die 24 Sekunden bei der SD-Karte. Der USB-Stick liegt abgeschlagen mit 64 Sekunden zurück.
Start von Lazarus
Lazarus startet von SSD schneller, als von SD-Karte. Das ist schonmal ein Erfolg. Zum Windows 10 Entwicklungsrechner – ebenfalls mit SSD – ist es aber noch ein deutlicher Unterschied!
Neukompilieren eines Projeks
Bei diesem Test, wollte ich wissen, welchen Vorteil die SSD beim normalen Kompilieren bringt. Als Benchmark habe ich mir das Projekt lazresexplorer aus den Examples ausgesucht.
Hier kann man einen deutlichen Unterschied zwischen SSD und SD-Karte sehen. Mit SSD geht es mehr als doppelt so schnell. Im Vergleich zum Windows PC liegen aber Welten.
Schreib-/Lesegeschwindigkeit
Natürlich gehört auch ein normaler Vergleich der Schreib- und Lesegeschwindigkeit dazu.
Die Lesegeschwindigkeit habe ich mit hdparm (sudo apt-get install hdparm) gemessen:
hdparm -tT /dev/sda
Die Schreibgeschwindigkeit mit dd:
dd if=/dev/zero of=/root/testfile bs=500M count=1 oflag=direct
Hier sieht kommen die Vorteile einer SSD voll zur Geltung. Es ist zwar immer noch kein Vergleich zu den Möglichkeiten der SSD, aber für den Pi ist das schon beeindruckend.
Resümee
Für mich ist die Umstellung von SD-Karte auf SSD eine richtig gute Entscheidung, wenn man etwas performanter mit Lazarus auf einem Raspberry Pi entwickeln möchte. Das Coden macht so doch mehr Spaß.
Ich vermisse zwar immer noch die volle Geschwindigkeit vom Windows PC, das entwicklen, vor allem mit den GPIO’s, geht so aber in der Summe schneller, als der Weg immer erst über den PC.
Neben dem Geschwindigkeitszuwachs sind für mich heute auch der größere Speicherplatz und die höhere Zuverlässigkeit des Systems wichtig. Gerade, wenn man viele Files erzeugt, ist die Gefahr bei SD-Karten für einen Systemausfall immer noch deutlich höher als bei einer SSD.
Und wem das Booten zu lange dauert, der kann immer noch das Beste aus beiden Varianten machen und mit SD-Karte booten und eine SSD als Speichermedium nutzen.
Viel Spaß mit Lazarus auf dem Raspberry Pi!
Links
Installationsanleitung auf raspberry.tips https://raspberry.tips/raspberrypi-tutorials/raspberry-pi-von-ssd-festplatte-booten
Stromverbrauch SSD zu normaler Festplatte https://techreport.com/review/16848/a-six-pack-of-solid-state-drives-compared/13
Download von belenaEtcher https://www.balena.io/etcher/
Beschreibung der Boot-Modes auf raspberrypi.org https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/README.md
Wollen Sie Lazarus auf Ihrem Raspberry installieren? Schauen Sie sich diesen Blog an (getestet bis Lazarus 1.8.4)
https://techpluscode.de/aktuelle-lazarus-version-auf-einem-raspberry-pi-installieren/