Kühlkörperkonstruktionen für den Raspberry Pi 4
Ein Raspberry Pi 4 mit Kupfer/Holz Deckel und Kühlkörpern (StackBT Gehäuse)

Stresstestverfahren für den Raspberry Pi im Vergleich

  • Wie schon in den Blogbeiträgen „Der Raspberry Pi 4 – ein cooler Typ“ und „Ein Kühlturm für den Raspberry Pi 4“ erläutert, kann der Pi 4 im Originalgehäuse nur mit verminderter Taktfrequenz betrieben werden. Inzwischen gibt es jedoch mehrere für eine passive Kühlung gut geeignete Gehäuse. Wer höhere Anforderungen hat, wird das gekaufte oder selbst gebaute Gehäuse einem Belastungstest mit Messung der CPU-Temperatur unterziehen. Eine geringe Temperatursteigerung spricht dabei für ein gutes Kühlsystem.

In ProgPi/pi4cpu (aus ProgPi.zip) finden Sie dafür mehrere Skriptdateien. Aber zunächst eine kleine Auflistung der Programme, die andere Raspberry Pi Nutzer dafür verwendet haben:

  • sysbench ist ein Linuxprogramm, mit dem Sie ihren PC auf Leistungsfähigkeit durchtesten können. Enthalten sind dabei u.a. Tests für die CPU, Daten I/O und MySQL. Der Test für die CPU entspricht einer Primzahlenberechnung bis zu einem vorgegebenen Limit. Das Skript sysbenchplot.sh ist übrigens aufgabenbezogen und würde bei einem übertakteten Raspberry Pi einfach nur kürzere Verarbeitungzeiten liefern.
  • stress ist ein Linuxpaket für die Kommandozeile, das eine vordefinierbare Anzahl an CPU-Kernen mit Berechnungen über eine vordefinierte Zeit beschäftigt.
  • stressberry ist ein Paket von Nico Schlömer, das auf „stress“ aufsetzt und über stressberry-plot bzw. die Python Library matplotlib eine grafische Ausgabe von Temperaturdiagrammen vornimmt. Martin Rowan hat dazu Erweiterungen programmiert.
  • stress-ng  ist weiterer Benchmarktest, der sich auch mit einem Zeitlimit konfigurieren lässt. Dabei ist die CPU-Last höher als bei stressberry-run.
  • cpuburn ist ein Paket, das Sie auf dem Raspberry Pi installieren können. Die ausführbare Datei cpuburn-a53 muß ggf. noch selbst erzeugt werden.
  • glmark2 ist für die GPU des Raspberry Pi vorgesehen. Während des Tests wird z.B. ein sich drehendes Pferd angezeigt.
  • glxgears zeigt drehende Zahnräder über OpenGL an und hält so den HDMI-Ausgang aktiv.

Auf https://wiki.ubuntuusers.de/Benchmarks/ finden Sie eine Übersicht diverser Benchmarkprogramme.

In c’t 26/2019 gibt es einen Artikel „Klüger Kühlen“ und es wird https://ct.de/ywna als Softlink genannt. Unter https://github.com/ingotee/monipi finden Sie Software des c’t Redakteurs Ingo Storm. Dabei werden cpuburn-a53 und glmark2 teilweise gleichzeitig genutzt.

Unter https://github.com/nschloe/stressberry finden Sie nicht nur den Quelltext von stressberry sondern auch einen Temperaturchart für interessante Gehäuse wie „Argon One“ oder „CooliPi„.

Was bringt eine neue Firmware für den Raspberry Pi 4 ?

Beachten Sie bitte, daß die Raspberry Pi Foundation inzwischen die Firmware zum Raspberry Pi 4 optimiert hat. In MagPi88.pdf sind die Verbesserungen ab Seite 66 dokumentiert:

  • Energie ohne Last  : 06/2019 : 2,98 Watt auf  2,10 Watt (BetaFirmware 11/2019)
  • Energie bei Vollast : 06/2019 : 7,28 Watt auf  6,41 Watt (BetaFirmware 11/2019) 

Durch das Firmware-Update entsteht eine deutliche Senkung der CPU-Temperatur. Und damit sollten Sie auch festhalten, welche Temperaturkurve mit welcher Version gemessen wurde. Wie lang bleibt ihr Raspberry Pi 4 ohne jede Kühlung und bei Vollast unter der 80°C Grenze? Ab wann eine Drosselung der Taktfrequenz eintritt, hängt auch vom verwendeten Stresstest ab. In MagPi88 wird dafür stress-ng genutzt und es werden Zeiten für unterschiedliche Entwicklungsstände der Firmware genannt:

Bemerkenswert ist dabei, daß ein hochkant gestellter Raspberry Pi 4 ganze 427 Sekunden Vollast aushält ohne die Taktfrequenz zu drosseln (throttling). Flach auf dem Tisch liegend sind es nur 177 Sekunden und es entsteht ein Hitzestau unter der Platine. Bei vertikaler Lage kann die natürliche Konvektion doppelseitig einwirken. Aber irgendwann „gewinnt“ stress-ng und zwingt die CPU zur Drosselung. Trotzdem soll die Beta-Firmware gut genug sein, um den Linux-Kernel auf einem Raspberry Pi 4 in unter 45 Minuten (bei 1500MHz) und ohne „throttle“ durch den Compiler zu jagen. Nach MagPi88, Seite 75 geschieht dies als „Real World Testing“ und mit einer CPU-Temperatur knapp unter 80°C im Diagramm. Die Testverfahren werden auch hier beschrieben: https://www.raspberrypi.org/blog/thermal-testing-raspberry-pi-4/

Temperatur/Zeit Diagramme bei unterschiedlicher Prozessorlast

Sie wollen ihr Gehäuse durchtesten? In ProgPi/pi4cpu (bzw. pi4cpu.zip) finden Sie u.a. folgende Skripts:

  • inst-stressberry.sh # Installation von stress,stressberry,matplotlib
  • inst-stressng.sh # Installation von stress-ng und glxgears (mesa-utils)
  • sberry-run.sh # stressberry-run mit einstellbarer Dauer + Plot
  • sysbenchplot.sh # Tests mit sysbench + Plot
  • plotrun.sh # Plot über matplotlib
  • plotrun.cfg # Konfigurationsdatei mit *.dat Dateien
  • sysbench.sh  # Messung ohne Erzeugung von Plotdateien
  • stressng-plot.sh # Ein 30 Min. Test über stress-ng mit glxgears

Dabei erzeugt sysbenchplot.sh zunächst eine *.log Datei (ASCII) mit den Temperaturdaten (siehe auch hier). Diese *.log Datei wird dann gefiltert und daraus eine  *.dat Datei erzeugt, die automatisch an plotrun.cfg angehängt wird. Exemplarisch:

#  plotrun.cfg
#  Dateien die nicht in den Chart sollen mit führendem # auskommentieren
525_20191216_195833_CuZyl36i_HolzCuPl_60mmKK_28mmKK.dat
486_20191216_215753_CuZyl50i_HolzCuPl_60mmKK_50mmKK_28mmKK.dat

Über sberry-run.sh entsteht ebenfalls eine *.dat Datei die für matplotlib bzw. plotrun.sh
vorgesehen ist. Auch hier wird plotrun.cfg um jeweils eine Zeile pro Messung erweitert. Das Skript sysbenchplot.sh ermittelt übrigens die maximale CPU-Temperatur und setzt den Wert als Prefix im Dateinamen. Sie sehen das auch an den zugehörigen Kurven:

Temperaturkurven für zwei Kühlsysteme am Raspberry Pi 4

Dieses Bild sollte automatisch im Unterverzeichnis pi4cpu entstehen, wenn Sie dort plotrun.sh starten. Lediglich die Beschriftung ist rechts neben den Kurven. Dabei wird die vorherige Paketinstallation über inst-stressberry.sh allerdings vorausgesetzt. Die beiden schon vorhandenen *.dat und *.log Dateien beziehen sich auf einen Raspberry Pi 4 im StackBT Gehäuse und dem jeweils verwendeten passiven Kühlsystem aus Kupferzylinder (36mm oder 50mm hoch) sowie Kühlkörpern und Deckel. Beachten Sie bitte, daß nicht alle Raspbian Buster Versionen von der selben Taktfrequenz ohne Last ausgehen. Die derzeitige Begrenzung auf 600 MHz bewirkt, daß der Pi 4 weitgehend ohne vorherige „thermische Hypothek“ in den Stresstest gehen darf.  

Welche „Aufbauten zur Kühlung“ der Pi 4 dabei hat (bzw. einfach nur den Gehäusetyp mit Raumtemperatur), geben Sie als Kommentar beim Aufruf von sysbenchplot.sh an:

0 2 2 2 2 2 2 0 # CuZyl50i+HolzCuPl+60mmKK+50mmKK+28mmKK 21.7°

Dies entspricht dann einer CPU-Last in 6 Blöcken zu 10 Minuten bei einem Vorspann/Nachspann von jeweils 10 Minuten ohne Last. Der Text „avg3“ besagt, daß sysbenchplot.sh die Kurven etwas geglättet hat (Gewichtung 25% 50% 25%). So entsteht ein übersichtlicheres Bild, wenn die Kurven nahe aneinanderrücken.Vergessen Sie bitte nicht die Raumtemperatur mit anzugeben.

Das Skript sysbench.sh ist ein vereinfachtes Skript ohne Erzeugung einer graphischen Darstellung und als einzelne Datei im Downloadbereich verfügbar.

Anmerkungen:

Wenn Sie über 0 2 2 0 eine CPU-Last von lediglich 20 Minuten Dauer auslösen, dann werden sich die CPU, die Kühlkörper und das Gehäuse weniger aufheizen. Anhand schon vorhandener Messungen können Sie ein wenig extrapolieren zu welchen Temperaturen eine Dauerlast über mehrere Stunden führen wird. Auch die Starttemperatur (nach 1 h Pause) im RPi-Desktop ist ein gutes Indiz für die Effizienz der vorhandenen Wärmeableitung. Jeden Startwert unter 43°C darf man bei rein passiver Kühlung des Raspberry Pi 4 als gut betrachten.  Bei einem Aluminiumgehäuse mit Säulen auf der CPU und lediglich 3,0 cm Höhe sind 65°C nach einer Stunde Vollast ein durchaus akzeptabler Wert. Über einen selbstgebauten Kühlturm erreichen Sie zwar Temperaturen unter 50°C müssen aber über 7 cm Bauhöhe akzeptieren.

Wenn Ihr käuflich erworbenes Passivkühler-Gehäuse über diesen Werten liegt, dann kann das z.B. an mangelndem Anpressdruck des Metallblocks über der CPU liegen. Oder aber das Gehäuse ist einfach zu dicht und die Warmluft kann kaum entweichen. Wenn Sie einen Lüfter einsetzen, dann genügen meist schon 10 Minuten Vollast um die finale Temperatur bei Dauerlast zu bestimmen. Die Eingabe „0 2 2 2 2 2 2 0“ in sysbenchplot.sh führt zu einer Temperaturabtastung im Takt von 10 Sekunden.  Bei sberry-run.sh wird die Temperatur dagegen im Sekundentakt gemessen. Dies mag eine Ursache für die bei sysbenchplot.sh um etwa 1°C niedrigeren Temperaturen sein. Die über sysbench und  stressberry-run ausgeübte CPU-Last ist vergleichsweise gering. Eine Messung über stressng-plot.sh führt zu erheblich höheren Temperaturen:

Über die Frage welches Testverfahren nun das Beste ist, kann man lange Diskussionen führen. Wichtig ist, daß man mehrere Gehäusetypen immer nach dem gleichen Verfahren testet und dabei wirklich alle Parameter festhält. Vor allem sollte die CPU-Last hinreichend lang andauern und in der Phase davor sollten alle Temperaturen möglichst stabil sein –  also auch die Raumtemperatur.

Die Stresstestverfahren sysbench, stressberry und stress-ng im Vergleich (Pi4 im JoyIT-AluCase)
Die Stresstestverfahren sysbench, stressberry und stress-ng im Vergleich (Pi4 im JoyIT-AluCase)

Ein JoyIt Aluminiumgehäuse für den Pi 4 im Test

Dankenswerterweise hat mir die Firma SIMAC Electronics GmbH zwei Joy-IT Gehäuse (RB-AlucaseP4+08) zum Test bei Vollast auf dem Pi 4 überlassen. Das dunkelbraun eloxierte Aluminiumgehäuse mit 180 gramm sieht sehr solide aus und wird zugeschraubt geliefert. Man besorgt sich zuerst einen Inbus-Schraubendreher für 2 mm Sechskant innen. Dann legt man das JoyIT-Alugehäuse kopfüber auf den Tisch und dreht 2 kurze und zwei lange Schrauben heraus. Die langen Schrauben gehören zur GPIO-Seite, die einen schmalen Schlitz für das Flachbandkabel im Gehäuse hat.

Ein Aluminiumgehäuse von JoyIt für den Pi 4
Ein Aluminiumgehäuse von JoyIt für den Pi 4

In der Gehäuseoberschale werden nun drei rechteckige Aluminiumquader sichtbar, die zur Wärmeableitung dienen. So werden die CPU, der Speicherchip und der Spannungswandler passiv gekühlt. Zusätzlich sind in einem kleinem Beutel drei elastische Wärmeleitpads von etwa 1,5 mm Dicke beigefügt. Die Beschriftung 3M9448A spricht allerdings für ein Doppelklebeband. Und die Wärmeleitwerte an allen Grenzflächen sind extrem wichtig.

Kupferstreifen auf den Kühlkörpersäulen des JoyIt-Gehäuses
Kupferstreifen auf den Kühlkörpersäulen des JoyIt-Gehäuses

Glücklicherweise habe ich noch etwas 0,5 mm dickes Kupferblech. Aus diesem Blech schneidet man sich mit einer Blechschere einen 1,4 cm breiten und ca. 5 cm langen Streifen zurecht. Das Kupferblech muß jetzt ggf. mit einem Hammer ein wenig glattgeklopft werden. Der Kupferstreifen wird dann mit Hilfe geeigneter Zangen so geformt, daß er über die quaderförmigen Säulen passt. Wenn das geschehen ist, sollte man das Kupferblech mit vorsichtigen Hammerschlägen auf den Quadern liegend glattklopfen. Es sollte kein Luftspalt unter dem Kupferblech sein. Überprüfen Sie nun an welchen Stellen das Kupferblech eventuell zu groß ist und deshalb einen Kurzschluß auf der Platine des Rasbperry Pi 4 verursachen könnte.

Der Kupfersteifen darf keinen Kurzschluß verursachen
Der Kupfersteifen darf keinen Kurzschluß verursachen

Dann kann man das Kupferblech wieder abnehmen, ggf. etwas kürzen und ein wenig Wollwachs auf die Quader auftragen. Danach auch auf die CPU des Raspberry Pi 4. Der Quader für den Spannungswandler wird nun noch mit einem Wärmeleitpad versehen. Dabei muß die Folie von beiden Seiten abgezogen werden.

Platinenunterseite des Raspberry Pi 4
Platinenunterseite des Raspberry Pi 4

Jetzt wird der Raspberry Pi auf seine „Kühlblöcke“ gelegt und das Gehäuse verschraubt. Sie legen nun die microSD-Karte ein und warten nach dem Booten etwa 30 Minuten, bevor das Skript sysbenchplot.sh gestartet wird.

Mit sysbenchplot ist es recht einfach Gehäusekonfigurationen zu beurteilen, da alle Vorgänge automatisch ablaufen und am Ende alle Messungen in plotrun.png enthalten sind. Man muß allerdings vor jeder Messung ein paar Dinge beachten, die vielleicht nicht ganz offensichtlich sind:

  • Das Öffnen eines Fensters entspricht dem zeitweiligen Einsatz eines Lüfters
  • Muß der Raspberry Pi den HDMI-Ausgang bedienen? LAN/WLAN aktiv?
  • Welche Hardware (z.B. Maus, Tastatur, USB-Hub, USB-Sticks, …) ist angeschlossen?
  • Welche Raspbian Version verwenden Sie ? 600MHz ohne Last?
  • Auf welcher Unterlage steht das Gehäuse mit dem im Stresstest laufenden Raspi 4 ?
Beim ersten Test mit dem JoyIT-Alugehäuse liegt ein Papierblock unter dem Gehäuse. Der Test soll insgesamt 80 Minuten dauern und die mittleren 60 Minuten sind wie gehabt in 6 Blöcke eingeteilt:
 
0 2 2 2 2 2 2 0 # JoyIt_CuStreifen_Papierunterlage 22.8°C
Temperaturkurven ProgPi-Kühlturm und JoyIT-AluCase
Temperaturkurven: ProgPi-Kühlturm und JoyIT-AluCase

Überraschend positiv fällt der zweite Test mit dem JoyIT-Alugehäuse aus: Die grüne Kurve liegt glatte 5°C niedriger und der einzige Unterschied ist die Ablage auf einem 0,2 mm dünnen Kupferblech. Im Mittelfeld (orange) liegt das Kühlsystem mit einem 36mm hohen Kupferzylinder. Am allerbesten schneidet der ProgPi-Kühlturm im Vollausbau mit 3 Kühlkörpern ab.

Die MicroSD-Karte kann nur mit einer Pinzette aus dem Pi 4 entnommen werden
Die MicroSD-Karte kann nur mit einer Pinzette aus dem Pi 4 entnommen werden

Fazit: Das JoyIt Alugehäuse (RB-AlucaseP4+08) ist hervorragend verarbeitet. Während das hier nicht getestete JoyIt Armor Case alle GPIO-Kontakte frei zugänglich hält, und auch ein Schlitz für das Kabel des Kameramoduls vorhanden ist, umschließt das hier abgebildete JoyIt-Alugehäuse den Raspberry Pi4 vollständig. Der Staubschutz ist damit fast perfekt, aber warme Luft kann sich im Gehäuseinneren stauen. Damit die microSD-Karte auch ohne Öffnung des Gehäuses mit einer Pinzette entnehmbar bleibt, müssen Sie mit einem 7 mm Bohrer das Gehäuseunterteil überarbeiten. Die Temperatur der  Raspberry Pi 4 CPU bleibt nach 60 Minuten Dauerlast im JoyIT Gehäuse unter 55°C (auf Cu-Blech). Weitaus günstiger als die Messungen von Martin Rowan für das FLIRC Gehäuse. Beim RB-AlucaseP4+08 ist es eben massives Aluminium und kein Hohlstempel der die CPU kühlt. Das FLIRC Gehäuse hat dünnere Wände, wiegt nur die Hälfte und besteht nicht auf allen Seiten aus Aluminium. Genau deshalb dürfte das FLIRC Gehäuse etwas bessere WLAN Eigenschaften haben.

Welche Lösungen zur Kühlung des Raspberry Pi 4 setzen Sie ein? Welche CPU-Temperatur kommt dabei heraus? Kommentare sind willkommen….

Schreibe einen Kommentar