howto:performance-optimierung_des_raspberry_pi
no way to compare when less than two revisions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | howto:performance-optimierung_des_raspberry_pi [2013/10/06 18:28] (aktuell) – angelegt chrisma | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ==== Performance-Optimierung des Raspberry Pi ==== | ||
+ | |||
+ | Der Start eines unkonfigurierten Raspberry Pi VZ-Images ist in der Regel noch problemlos, weil nur wenig IO-Last auf dem System liegt. | ||
+ | Das ändert sich aber wenn der vzlogger konfiguriert wird, und dieser dann die Daten an " | ||
+ | |||
+ | |||
+ | === Messung === | ||
+ | |||
+ | Mit dem Kommando | ||
+ | |||
+ | < | ||
+ | |||
+ | kann man einige wichtige Parameter abfragen und erste Erkenntnisse zur aktuellen Systemauslastung zu erhalten. Zusätzliche Pakete müssen dazu | ||
+ | nicht installiert werden, erst für weitergehende Analysen muss man dann das " | ||
+ | aber auf alle folgenden. Wenn " | ||
+ | |||
+ | < | ||
+ | procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Die Spalten ganz rechts beachten: | ||
+ | |||
+ | * " | ||
+ | * " | ||
+ | * " | ||
+ | |||
+ | Die Messung oben stammt vom meinem Raspberry Pi mit der SD-Karte als root-Filesystem - das ist der Standardfall | ||
+ | wenn man den Installations-Anweisungen [[raspberry_pi_image]] folgt. | ||
+ | |||
+ | Die Messwerte zeigen eindeutig, dass das System den Großteil seiner Gesamtkapazität mit der IO-Ansteuerung (der SD-Karte) verbringt. | ||
+ | Freie Kapazität ist gar nicht mehr vorhanden (Idle = 0). Nun gibt es ja diverse SD-Karten in verschiedenen Klassen und Geschwindigkeiten, | ||
+ | ich habe mir im Computerladen eine Auswahl zusammengestellt - allerdings ohne Erfolg, dieser IO-Bottleneck war immer vorhanden. | ||
+ | Erschwerend kommt noch dazu, dass nicht alle Karten / Typen zuverlässig im Raspberry Pi funktionieren - und einige Karten schon nach wenigen | ||
+ | Stunden Betrieb dauerhaft zerstört waren. | ||
+ | |||
+ | == weiterführende Info == | ||
+ | |||
+ | * http:// | ||
+ | |||
+ | === Boot via SD-Karte, root auf USB-Stick === | ||
+ | |||
+ | Leider kann der Raspberry Pi nicht direkt vom USB Stick booten - das Boot-Device ist immer die SD-Karte. Allerdings kann man den Bootstring leicht abändern, | ||
+ | so dass man schnell auf den USB Stick schalten und von dort den restlichen Boot-Vorgang fortsetzen kann. | ||
+ | |||
+ | Gehen Sie so vor: | ||
+ | |||
+ | * Erzeugen Sie sich eine SD-Karte mit einem kompletten Image - wie in [[raspberry_pi_image]] beschrieben | ||
+ | * Machen Sie genau dasselbe mit einem USB-Stick >= 4GB | ||
+ | * Stecken Sie nun SD-Karte und USB-Stick und Starten Sie die Stromversorgung des Rapberry Pi | ||
+ | * Nun startet der Raspberry Pi komplett von SD-Karte | ||
+ | * Sie können einloggen und mit | ||
+ | |||
+ | < | ||
+ | |||
+ | alle Startmeldungen ansehen und prüfen, ob der USB-Stick erkannt wurde (als Gerät /dev/sda ). Probeweise können Sie /dev/sda2 mounten - und unmounten. | ||
+ | |||
+ | Mit | ||
+ | < | ||
+ | ändern Sie nun | ||
+ | < | ||
+ | in | ||
+ | < | ||
+ | |||
+ | und dann einfach mit | ||
+ | |||
+ | < | ||
+ | |||
+ | das System neu starten - falls der USB-Stick eine LED hat können Sie schon am " | ||
+ | |||
+ | Die Boot-Partition der SD-Karte bleibt auf /boot gemountet. | ||
+ | |||
+ | == weiterführende Info == | ||
+ | |||
+ | * http:// | ||
+ | |||
+ | === root-Partition auf USB-Stick erweitern === | ||
+ | |||
+ | Leider läßt sich mit einem root-Filesystem auf dem USB Stick der ungenutzte Platz nicht einfach wie bisher mit " | ||
+ | raspi-config merkt leider, dass das root-FS nun keine SD Karte ist und verweigert die Arbeit (don't know what to do). Ist aber kein großes Problem: | ||
+ | |||
+ | Hier die Ersatzprozedur (Unglaublich, | ||
+ | |||
+ | < | ||
+ | sudo fdisk / | ||
+ | |||
+ | p ## (print) | ||
+ | |||
+ | ## Startsektor von P#2 merken (sollte 122880 sein) | ||
+ | |||
+ | d ## (delete) | ||
+ | |||
+ | 2 ## Partition Nummer 2 | ||
+ | |||
+ | n ## (new) | ||
+ | |||
+ | p ## primary | ||
+ | |||
+ | 2 ## Partition Nummer 2 | ||
+ | |||
+ | Start: <gemerkt von vorhin, hier: 122880) ## hier den vorher gemerkten Wert eingeben, NICHT den Vorschlag übernehmen | ||
+ | |||
+ | End: ## Vorschlag übernehmen | ||
+ | |||
+ | p ## (print) | ||
+ | |||
+ | ## nun nochmal alles konkrollieren | ||
+ | |||
+ | w ## (write) | ||
+ | |||
+ | reboot | ||
+ | |||
+ | </ | ||
+ | |||
+ | Nach (hoffentlich) erfolgreichem reboot | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | |||
+ | Dateisystem-Strukturen werden nun auf die neue Partitionsgröße angepasst - geht online auf der lebenden root Partition - kein reboot nötig | ||
+ | |||
+ | |||
+ | |||
+ | Schließlich mit | ||
+ | |||
+ | < | ||
+ | |||
+ | überprüfen. | ||
+ | |||
+ | === VZ Konfigurieren === | ||
+ | |||
+ | Nun wie gehabt vzlogger entsprechend einrichten (ist natürlich abhängig vom Zählertyp und den Kanälen die man auswerten möchte). Dann starten | ||
+ | |||
+ | === IO Last überprüfen === | ||
+ | |||
+ | Mit dem Kommando | ||
+ | |||
+ | < | ||
+ | |||
+ | wie oben die Gesamtlast des Systems betrachten. | ||
+ | |||
+ | < | ||
+ | procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | In meinem Fall haben die Werte jetzt so ausgesehen - wie man sieht (Spalte " | ||
+ | und reagiert auch schnell und störungsfrei auf Anfragen des " | ||
+ | |||
+ | |||
+ | === Empfehlungen === | ||
+ | |||
+ | Idealerweise legt man sich _zwei_ SD-Karten a 4GB und einen USB-Stick zurecht. Alle drei werden erst einmal mit dem Standard VZ-Raspberry Image beschrieben (und getestet). | ||
+ | |||
+ | * Auf der ersten SD-Karte modifiziert man den Boot-String wie oben beschrieben | ||
+ | * die zweite SD-Karte hinterlegt man an einem sicheren Ort - sie kommt dann zum Einsatz, wenn das System nicht mehr startet. Dann zieht man die SD-Karte (die mit dem | ||
+ | modifizierten boot-String) | ||
+ | So hat man für diesen Fall gleich ein recovery System zur Hand. | ||
+ | |||
+ | Als USB-Stick habe ich einen 32GB USB3.0 für wenig Geld eingesetzt. Natürlich hat der Raspberry Pi keinen USB3.0 Port, aber ich wollte sichergehen dass die im Stick | ||
+ | verbauten Flash-Chips keine allzugroße Geschwindigkeitsbremse darstellen. | ||
+ | |||
+ | Aktuell liegen noch keine Erfahrungswerte über die Lebensdauer des USB Sticks vor, sicher ist nur, dass früher oder später die max Anzahl Schreibzyklen erreicht sein | ||
+ | wird und dann Probleme auftreten - und der Stick getauscht werden muss. Das sollte man von vornherein einplanen, alle Daten regelmäßig sichern, ebenso alle | ||
+ | config files und andere nachträglich vorgenommene Anpassungen. | ||
+ | |||
+ | Denkbar wäre auch der Einsatz einer kleinen USB Festplatte (was aber wohl den Stromverbrauch erhöht) oder eine USB Sticks mit " | ||
+ | darin sind die in SSD Festplatten verwendeten Chipsätze verbaut, was sich deutlich im Preis bemerkbar macht | ||
howto/performance-optimierung_des_raspberry_pi.txt · Zuletzt geändert: 2013/10/06 18:28 von chrisma