English version: here Wer einen Raspberry Pi für Kamera-Projekte oder als RTMP-Streamer nutzt, kennt das Problem: Plötzlich ruckelt das Bild, der Stream bricht ab oder die Kamera-App verweigert den Dienst mit kryptischen Fehlermeldungen. Ein Blick
English version: here
Wer einen Raspberry Pi für Kamera-Projekte oder als RTMP-Streamer nutzt, kennt das Problem: Plötzlich ruckelt das Bild, der Stream bricht ab oder die Kamera-App verweigert den Dienst mit kryptischen Fehlermeldungen. Ein Blick in htop zeigt oft: Die CPU langweilt sich bei 40%, und der Arbeitsspeicher scheint auch noch Luft zu haben. Warum also crashed das System?
Die Antwort liegt in der Architektur des Raspberry Pi, speziell im CMA (Contiguous Memory Allocation) und den DMA-Buffern. Standard-Tools ignorieren diese Hardware-Metriken komplett. Genau hier setzt mein neues Dashboard an: stream_top.
Warum Standard-Monitoring bei Video-Apps versagt
Moderne Pi-Kamera-Apps (basierend auf libcamera) und Hardware-Encoder wie h264_v4l2m2m reservieren einen speziellen Bereich des Arbeitsspeichers, der physikalisch zusammenhängend sein muss (CMA). Wenn dieser Bereich voll ist, kann die GPU keine neuen Frames mehr verarbeiten – auch wenn du noch 4 GB normalen RAM frei hast.
stream_top macht diesen “unsichtbaren” Speicherverbrauch endlich sichtbar.
Die Highlights von stream_top:
- Echtzeit-CMA-Analyse: Sieh sofort, wie viel von deinem reservierten Video-Speicher noch übrig ist.
- DMA-Buffer Deep Dive: Welche Komponente krallt sich den Speicher? Die Kamera-App? Die GPU? Der Kernel? stream_top schlüsselt es auf.
- Netzwerk-Health (Delta-Modus): Statt riesiger Summen zeigt das Tool die Fehler pro Sekunde. Perfekt, um instabiles WLAN während des Streams zu entlarven.
- Hardware-Sensoren: Behalte VPU-Spannung, H.264-Takt und den Throttling-Status (Überhitzung/Unterspannung) im Auge.
- Integrierte Logs: Verfolge die Ausgaben deines
stream.servicedirekt im Dashboard, ohne ein zweites Terminal zu öffnen.
Praxis-Check: Pi Zero 2 W vs. Pi 4B
In der Entwicklung hat sich gezeigt, wie unterschiedlich die Boards reagieren. Während der Pi 4B meist massig Ressourcen hat, aber oft an falsch konfigurierten CMA-Größen scheitert, kämpft der Pi Zero 2 W mit seinen 512 MB RAM an vorderster Front.
In meinem Tool siehst du sofort, ob dein Zero 2 noch “atmen” kann oder ob die DMA-Buffer den gesamten RAM auffressen. Das ist die Information, die du brauchst, um Parameter wie --buffer-count oder die Bitrate präzise zu tunen.
Pro-Tip: Keine Panik bei vollen CMA bars!
Ein wichtiger Hinweis zum CMA-Speicher: Wer rpicam-apps nutzt, wird feststellen, dass der CMA-Speicher oft fast vollständig belegt ist. Es macht jedoch selten Sinn, diesen Wert in der /boot/config.txt ständig nach oben zu korrigieren, nur um “grüne Balken” zu sehen. Die Kamera-Apps reservieren sich diesen Platz sehr großzügig und aggressiv vorab. Das ist kein Bug, sondern ein Feature: Diese Reservierung garantiert, dass der Stream auch bei hoher Last oder schwankenden Frameraten stabil bleibt und keine Frames aufgrund von Speichermangel verworfen werden. Ein voller Speicher ist hier also ein Zeichen für ein sicher konfiguriertes System.
Installation: In 60 Sekunden startklar
Ich habe einen Installer geschrieben, der alle Abhängigkeiten (gawk, vcgencmd, etc.) automatisch prüft und das Tool systemweit installiert.
Bash
git clone https://github.com/axeljerabek/stream_top.git
cd stream_top
sudo ./install.sh
Danach kannst du das Dashboard einfach mit sudo stream_top von überall aus starten.
Fazit & Open Source
stream_top ist von einem Pi-Nutzer für Pi-Nutzer. Es ist das Tool, das ich mir selbst immer gewünscht habe, um meine Streaming-Server stabil zu bekommen. Es ist komplett Open Source und ich freue mich über Feedback, Issues oder Pull Requests auf GitHub!

One thought on “Raspberry Pi Streaming am Limit: Schluss mit “Blindflug” dank stream_top”