Raspberry Pi Performance Tuning und Tweaks

Raspberry Pi Performance Tuning und Tweaks

In vielen meiner Artikel habe ich bereits kleinere Tipps und Tweaks zum Performance Tuning des Raspberry Pi veröffentlicht. Ich möchte euch diese und weitere hier als Übersicht zur Verfügung stellen. Anmerkungen, Wünsche, Fragen oder weitere Vorschläge dürfen gerne in dem Kommentaren hinterlassen werden.

Inhaltsverzeichnis

Vorwort

Bitte beachtet das sich nicht jeder Tweak für jedes System eignet, überlegt euch vor Einsatz eines Tweaks ob euer System überhaupt davon profitiert und nicht ungünstige Seiteneffekte auftauchen können. Erstellt bitte vor Anpassungen immer eine Sicherung eures Systems. Viel Spaß beim Performance Tuning eures Raspberry Pi!

Performance Graph

Allgemeines

 

Sicherung erstellen

Viele dieser Einstellungen sind tiefgreifend und verändern euer System unter Umständen massiv. Ihr solltet, bevor Ihr Anpassungen an eurem RasPi vernehmt, immer ein Image Backup via Win32 Disk Imager erstellen. Hierzu steckt ihr unter Windows die SD-Karte in den Kartenleser, öffnet Win32 Disk Imager und tragt als Ordner unter „Image File“ ein Verzeichnis ein in welchem Ihr das Backup Image speichern möchtet.

RasPi Backup

Der „Read“ Button erscheint nach der Angabe eines Pfades, durch ein Klick wird eine volle Sicherung als Image von eurem RasPi erstellt.

Raspbian

Wo immer es geht sollte Raspbian als Betriebssystem verwendet werden. Die Besonderheit ist, dass als erste Distribution Kernel und Pakete als ARMHF kompiliert sind, also mit dem sog. Hard-Float-Support. Dieser sorgt dafür, dass Gleitkommazahlen im ARM-Prozessor des Pi vom mathematischen Koprozessor VPU ausgeführt werden und nicht wie in den übrigen Distribtionen im Soft-Float-Verfahren langsam per Ganzzahloperationen nachgebildet werden. Dadurch erreicht Raspbian je nach Anwendung teils deutliche Geschwindigkeitsvorteile in Anwendungen.

Raspbian Logo

Firmware und Raspian updaten

Bevor man mit manuellen Optimierungen und Tweaks startet ist es sinnvoll erstmal das Betriebssystem und die Raspberry Pi Firmware auf den aktuellen Stand zu bringen, oft sind danach schon Verbesserungen festzustellen. Die aktuelle Firmware und der Kernel kann mit „uname -a“ abgefragt werden. Aktualisierung des Betriebssystems und entfernen alter ungenutzter Versionen und Überbleibsel. Update aktualisiert die Paketquellen und dist-upgrade führ die Installation der neuen Versionen durch.

Aktualisierung der RasPi Firmware

Nach der Aktualisierung sollte das System zur Sicherheit via „sudo reboot“ einmal neu gestartet werden.

Netzteil

Eine Häufige Fehlerursache ist die Verwendung eines billigen Netzteils für die Stromversorgung. Der Raspberry Pi benötigt ein Netzteil mit mindestens 700mA. Persönlich habe ich mit folgenden zwei Netzteilen sehr gute Erfahrungen gemacht. Diese ermöglichen auch mit angeschlossenen USB-Geräten einen stabilen Dauerbetrieb des Raspberry Pi.

 

SD-Karten

Benutzt am Besten immer eine SD Karte der Klasse 10, da der Bus an welche die  Karte angeschlossen ist kaum mehr als 30 Megabyte pro Sekunde schafft, wäre alles Andere im Bezug auf die Performance Geldverschwendung.

SD-Karte optimieren

Die SD-Speicherkarten sind leider nicht für den Dauerbetrieb ausgelegt und gehen bei nach einigen Schreib- und Lesezyklen gerne mal kaputt. Daher gilt es diese, wo möglich, zu reduzieren (gilt auch für Reboots). Eine Möglichkeit ist die Daten auf USB Speicher auszulagern und nur die für den Start notwendigen Daten auf der SD-Karte zu belassen. Alternativ können Schreibintensive Bereiche wie Logs in den RAM ausgelagert werden. Für einige dieser Systemverzeichnisse kann es daher sinnvoll sein, diese ins RAM auszulagern. Um /var/log und /var/run in den Arbeitsspeicher auszulagern, müssen folgende Einträge in der /etc/fstab hinzugefügt werden:

Nachteil: Verlagert man Dateien und Ordner in den RAM sind diese nach einem Neustart nicht mehr verfügbar! Die Zugriffe auf die SD Karte können durch deaktivieren des „Swapping“ (Auslagerung von Daten aus dem Arbeitsspeicher) weiter reduziert werden. Das ist allerdings nur sinnvoll wenn man nicht auf das swapping angewiesen ist. Insofern nur wenig Arbeitsspeicherintensive Serverdienste und kein Desktop zum Einsatz kommt können die Einstellungen gefahrlos angepasst werden.

Kühlung des RasPi

Update: Artikel zur Kühlung Aktiv / Passiv für den Raspberry Pi 2.

Obwohl der Raspberry Pi bei Auslieferung über keine Kühlkörper verfügt, stellt dies im Normalfall aufgrund der geringen Wärmeentwicklung kein Problem dar. Wird der RPi jedoch übertaktet oder im 24/7 Dauerbetrieb eingesetzt, ist es sinnvoll kleine Kühlkörper aus Aluminium nachzurüsten. Ebenso wenn ein Gehäuse ohne Lüftungsschlitze verwendet oder der RasPi an einem warmen Ort (z.B. direkt hinter dem Fernseher) betrieben wird. Das senken der Temperatur wirkt sich positiv auf die Lebensdauer aus.

Der RasPi benötigt drei passive Kühlelemente, achtet darauf das die Kühlelemente entweder Wärmeleitpads verwenden oder über Wärmeleitkleber angebracht werden (nicht zu viel verwenden). Alternativ kann ein aktive Kühlung in Form eines Lüfters verwendet werden, wobei ich das wegen der Geräuschentwicklung und Stromaufnahme (meist keine Steuerung) ehr unangebracht finde.

  • Prozessor (ca. 12 x 12 mm)
  • Controller (ca. 8,6 x 8,6 mm)
  • Spannungsregler (ca. 5,4 x 6,4 mm)
Raspberry Pi Kühlung

 

Übertakten / Overclocking

Update: How to zum Übertakten unter OpenELEC mit dem Raspberry Pi 2

Eine weitere Möglichkeit den Raspberry Pi zu Optimieren und mehr Geschwindigkeit aus ihm herauszukitzeln ist das Übertakten der CPU, auch Overclocking genannt. Der Prozessor des Raspberry Pis läuft mit einem Takt von 700Mhz. Der Raspberry Pi kann mittels ein paar Parmeter in /boot/config.txt einfach übertaktet werden, allerdings geht das zwecks der höheren Wärmeentwicklung immer zu Lasten der Lebensdauer. Wer seinen  RasPi Übertakten möchte sollte daher immer Kühlkörper installiert (siehe oben) und ein Gehäuse mit Lüftungsöffnungen haben. Es gibt mittlerweile die Möglichkeit unter Raspbian den Raspberry Pi ohne Garantieverlust auf bis zu 1 Ghz zu übertakten, hierzu muss allerdings das Konfigurationsprogramm „raspi-config“ verwendet werden: Zunächst öffnen wir über das folgende Kommando das „Raspberry Pi Configuration Tool“.

Dort wählen wir den Punkt Overclock an und bestätigen, dass wir den Hinweis zur Verkürzung der Lebensdauer des Raspberry Pis gelesen haben. Daraufhin können wir wählen, wie stark wir den Raspberry Pi übertakten möchten. Ich verwenden den Modus High, der Turbo Modus sollte nicht verwendet werden da der RasPi unter Umständen instabil wird. Nach Änderung der Taktfrequenz ist ein Neustart notwendig.

Raspi-Config Overclock

Die Overclocking Optionen, der Standard ist „None“ mit 700 MHz, ich verwende mit Entsprechender Kühlung und einem guten Netzteil „High“ mit 950 MHz.

RasPi-Config Overclock Options

Um den aktuellen Zustand der CPU zu erfragen gibt es ein schönes Tool mit dem Namen „cpufrequtils“, dieses könnt ihr  wie folgt installieren und aufrufen:

 

Memory Splitt

Unter dem Punkt memory_split im Tool „raspi-config“ können wir die Verteilung des Arbeitsspeichers zwischen der CPU und der GPU (der Grafikkarte) einstellen. Dafür müssen wir ins Textfeld eingeben, wie viel Megabyte (MB) vom Arbeitsspeicher der Grafikkarte zugewiesen werden sollen.

Raspberry Pi Memory Splitt

Sinnvoll sind folgende Einstellungen:

  • Niedrig Der minimale Wert von 16 erlaubt dem System 496 MB Speicher zu benutzen. Das sollte eingestellt werden, wenn am Pi wenig über die Grafikkarte berechnet wird. Also wenn zB kein Monitor angesteckt ist und der Pi nur über SSH betrieben wird und nicht auf den Desktop bootet.
  • Standard Die Standardeinstellung von 64 MB für die Grafikkarte, für den Betrieb im Desktop Modus meistens am Besten.
  • Hoch 128 oder 256 MB für die Grafikkarte. Das benötigt man vor allem dann, wenn Bilder, Anwendungen oder Videos ohne ruckeln über die HDMI-Schnittstelle ausgegeben werden sollen. Es muss darauf geachtet werden das dem System genügend Speicher zum Arbeiten übrig bleibt. Wenn das System nicht genügend Arbeitsspeicher zur Verfügung hat beginnt es Daten auf die SD Karte auszulagern (swapping), der RasPi wird dann sehr langsam!

Grundsätzlich gilt: wird viel Grafik ausgegeben, dann hoch, ist kein Monitor angesteckt, dann niedrig. Ich betreibe meine Server mit 16 MB Grafikkartenspeicher da ich kein Desktop oder Grafikausgabe verwende.

RasPi als Desktop

Hintergrund

Wenn ihr auf den Desktop startet solltet ihr bitte grundsätzlich das Standard Hintergrundbild entfernen, das ist ein echter Performance-Killer.

Alternativ kann die Datei „/home/pi/.config/pcmanfm/LXDE/pcmanfm.conf“ angepasst werden.

Setzt dann eine Raute vor den entsprechenden Wallpaper eintrag und speichert mit STRG+X, Y und Enter.

 

Desktop Preload

Wer seinen RasPi nicht als reinen kommandozeilen basierten Server, sondern mit grafische Desktop-Oberfläche verwendet, kann den Startvorgang durch das Preloaden beschleunigen. Preload beobachtet Anwendungen, die ein Benutzer startet, sagt auf Grund einer Analyse dieser Daten vorher, welche Anwendungen Benutzer starten werden und lädt diese Binärdateien und deren Abhängigkeiten in den Speicher, damit sie schneller gestartet werden. Bitte nicht auf reinen Servern ohne X11 bzw. Desktop verwenden. Die Installation des Preload Paketes erfolgt via

Eine sinnvolle Anpassung der Preload.conf ist die folgende, SED ersetzt hierbei die Sortstrategy in der preload.conf. Die Option „sortstrategy“ definiert, nach welcher Strategie das Vorladen vorgenommen werden soll: 0 = nicht sortieren; 1 = nach Pfad sortieren; 2 = Nach inode sortieren; 3 = nach Datenblock sortieren.

 

RasPi als Server

 

RAM komprimieren

Gerade auf dem RPI mit wenig Arbeitsspeicher kommt es hin und wieder vor, dass dieser knapp wird und das System beginnt, den Swap-Speicher zu nutzen. Da sich dieser auf der SD-Card befindet, ist er im Vergleich zum RAM relativ langsam. Das Modul ZRAM zwackt bei Bedarf einen Teil des Arbeitsspeichers ab, um eine RAM-Disk anzulegen, die als schnellerer Auslagerungsspeicher (swap) bei Engpässen dient. Zudem werden die ausgelagerten Daten komprimiert, um den Speicher möglichst effizient zu nutzen. Die transparente Komprimierung erfordert allerdings CPU-Leistung. Als erstes sollten wir prüfen ob das Kernel Modul „zram“ überhaupt in unserem Kernel existiert. Falls das Modul nicht gefunden wir solltet ihr diese Anpassung nicht durchführen.

Falls das Modul vorhanden ist (bei Raspbian enthalten), richten wir ein Skript ein das zram beim Starten des System immer mit startet

Wir fügen folgenden Code ein

Danach machen wir das Skript ausführbar und aktualisieren via „update-rc.d“ die Starteinstellungen unseres RasPi.

Nach dem Reboot können wir via swapon kontrollieren ob zram seinen Dienst tut. Der Befehl zeigt uns eine Swap-Statistik an, hier sollte natürlich zram auftauchen.

 

Entfernen der grafischen Oberfläche

Viele nutzen den Raspberry Pi als Server, daher reicht eine SSH Verbindung zum Administrieren völlig aus. Eine grafische Oberfläche samt zugehöriger Tools wird also nicht benötigt. Um Ressourcen zu sparen und um mögliche Angriffspunkte zu minimieren, lässt sich solch „unnötiger Ballast“ entfernen. Bevor die Pakete entfernt werden solltet ihr über das Kommandozeilen Tool „raspi-config“ natürlich das Startverhalten unter „boot_behaviour“ von Desktop auf Kommandozeile ändern. Dann können alle X11 relevanten Pakete entfernt werden. Falls Konfigurationsdateien vorhanden bleiben sollen, kann der Parameter “purge” durch “remove” ersetzt werden.

Nach der Aufräumaktion wird noch der Paketmanager “dpkg” bereinigt.

Somit ist der Raspberry Pi von allen Desktop Tools befreit und kann sich auf seine wesentlichen Aufgaben konzentrieren.

Deaktivieren von IPv6

Die meisten Geräte im Netzwerk kommunizieren noch immer über IPv4 bzw. sind keine reinen IPv6 Sprecher und noch immer IPv4 kompatibel. Da in unserem Heimnetzwerk eine IP-Adressierung über IPv6 keinen wirklichen vorteil bringt können wir die IPv6 Unterstützung am RasPi meist problemlos deaktivieren.

 

Anwendungstweaks

Das Tuning des Raspberry Pi und des Raspbian Betriebssystems bringt natürlich schon einen gewaltigen Performanceschub auf dem Mini-Rechner, am wirkungsvollsten kann es allerdings sein die auf dem RasPi laufende Anwendung zu optimieren. Hierbei solltet ihr immer auf den Projektseiten und in der Community Community der einzelnen Projekte nach Tweaks Ausschau halten oder Google befragen.