Um die Stromrechnung zu „minifizieren“ verwende ich zumindest zum „Programmieren, Surfen und Mailen“ einen Raspberry Pi 4 Model B Rev 1.5 mit Armbian (Ubuntu) 22.04 . Im Netz gefundene Anleitungen zum Tunen haben entweder nicht funktioniert oder Bedenken vor einer Überhitzung geweckt.
Mit ein wenig Frickeln hab ich es aber hinbekommen:
Unumgängliche Vorarbeit: Für Kühlung sorgen!
Wer auch immer meint, das probieren zu wollen, sollte sich Gedanken um die Kühlung machen. Auch an einer 5-Watt Birne vom Fahrradlicht kann man sich die Finger verbrennen. Bei mir tut es ein Metallgehäuse, welches sich unter dem Stichwort „Raspberry Pi 4 Gehäuse, Pi 4 Heavy Duty Aluminium Passive Kühlung Gehäuse nur für Raspberry Pi 4B Silber“ um die 13 € findet. Das sieht zwar toll aus, allerdings strahlen schwarze Geräte die Wärme angeblich besser ab. Eine Lösung mit einem rotierendem Lüfter wollte ich „par tout“ nicht. Bisher - mit dem hier vorgestelltem Tuning - hat die Temperatur die Marke von 70′C noch nicht „gerissen“. Wie das wird, wenn im Sommer die Temperaturen in der Wohnung steigen, wird sich zeigen.
Die Einstellungen:
Um den Raspberry Pi 4 Model B Rev 1.5 mit Armbian (Ubuntu) 22.04 effektiv und sicher zu auf die oben angezeigten Werte tunen wird auf vielen Webseiten vorgeschlagen, eine Datei '/boot/config.txt' zu bearbeiten. Das führt jedoch auf meinem Rechner zu keinem Ergebnis.
Die richtige Datei ist ganz einfach '/boot/firmware/config.txt' .
Dort sind folgende Einstellungen hinzufügen bzw. zu aktivieren:
[pi4] max_framebuffers=2 over_voltage=8 arm_freq=2275 gpu_freq=750
Danach muss der Raspi einmal neu gebootet werden. Nicht wundern, das dauert etwas länger. Allerdings zeigt mein kleines Pythonskript nicht an, das der Raspi tatsächlich mit der höheren Taktfrequenz läuft.
Der Grund ist einfach:
Im Verzeichnis '/sys/devices/system/cpu/cpu0/cpufreq' finden sich (unter anderem) folgende Dateien
- cpuinfo_max_freq → Diese Datei zeigt an, welche Taktfrequenz maximal genutzt werden kann und wurde beim Booten vom Kernel mit dem neuen Wert (übrigens '2300000') gefüllt.
- cpuinfo_minfreq → Diese Datei zeigt an, welche Taktfrequenz minimal genutzt werden kann und wurde beim Booten vom Kernel dem Default-Wert (übrigens '600000') gefüllt.
- scaling_max_freq → Diese Datei zeigt an, welche Taktfrequenz vom Skalierer maximal genutzt werden kann und wurde beim Booten vom Kernel nicht(!) mit dem neuen Wert (soll '2300000' sein) gefüllt.
- scaling_min_freq → Diese Datei zeigt an, welche Taktfrequenz minimal genutzt werden kann und wurde beim Booten vom Kernel nicht mit dem von mir gewünschtem Wert (übrigens '1500000') gefüllt. Klar, Den hab ich ja bisher auch nirgendwo angegeben
Tunen und vor Überhitzung schützen
Um die neuen Frequenzen einzustellen und gleichzeitig einer Überhitzung (mit einer gewissen Reserve bei einer Prozessortemperatur über 70′C) vorzubeugen habe ich folgendes Bash-Skript geschrieben:
#!/bin/bash # File:/opt/setCpuSpeed maxTemp=70000; #′C *1000 tmp=$(cat /sys/devices/virtual/thermal/thermal_zone0/temp); maxFreqAkt=$(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq); if [ -n "$tmp" -a $tmp -lt $maxTemp -a ! -e /dontSetCpuSpeed ]; then if [ -n "$maxFreqAkt" -a $maxFreqAkt -ne 2300000 ]; then cpufreq-set -r --cpu 0 --min 1500000 --max 2300000; echo "Frequenz der CPU erhöht" | logger -t 'TUNING'; fi else cpufreq-set -r --cpu 0 --min 600000& --max 1500000 echo "Temperatur über 70′C: Frequenz der CPU verringert" | logger -t 'TUNING'; fi
Das muss jetzt nur noch regelmäßig gestartet werden, Minütlich sollte reichen.
Also habe ich mit dem Befehl
sudo crontab -e -u root
und folgendem Eintrag:
* * * * * /opt/setCpuSpeed
genau dafür gesorgt. Wer das Skript angeschaut hat wird schnell merken, dass das Erzeugen einer Datei namens /dontSetCpuSpeed, also auf dem Dateiystemroot, z.B. mit
sudo touch /dontSetCpuSpeed
das Hochsetzen abschaltet und sogar das Tuning zurück setzt. Löscht man diese Datei oder benennt sie um wird das Tuning wenig später (binnen 1 Minute) wieder automatisch wirksam. Noch schneller geht beides, wenn man nach dem Erzeugen oder Löschen der Datei
/opt/setCpuSpeed
einmal manuell ausführt.
Kontrolle
Die mache ich mit dem bereits angesprochenen Python-Skript, welches ich in einem Terminal mit
watch -n1 -t cpufreq.py
starte.
watch -n1 -t cpufreq-info -fmund
watch -n1 -t cat /sys/devices/virtual/thermal/thermal_zone0/tempgänge auch, ist aber weder so bequem noch, „äh“, hübsch wie mein Skript.
3 Kommentare:
Super, Herr Reinholz. Aber zum Glück bin ich nicht so abgebrannt wie Sie, so daß ich nicht sparen muß.
Mein lieber Andeas Skriepietz,
da ich Dich ja ein wenig kenne, glaube ich fest daran, dass Du in mehrerer Hinsicht „abgebrannt“ bist. Eine der Hinsichten ist die geistige.
Du hast keinen blassen Schimmer, um was ein in dem Artikel überhaupt geht.
Grüße nach Hannover.
"Du hast keinen blassen Schimmer, um was ein in dem Artikel überhaupt geht."
Stimmt.
Kommentar veröffentlichen