Grundlagen
Jeder Prozessor arbeitet mit einem gewissen Takt in dem er Befehle abarbeitet. Je höher der Takt, desto höher die Arbeitsgeschwindigkeit der CPU. Mit Übertaktung lässt sich ggf. etwas Geschwindigkeit aus der CPU herauskitzeln.
Aktuelle Frequenz
Um die aktuelle Frequenz festzustellen rufst das Programm neofetch
auf, dass wir bei der Einrichtung des Raspberry Pi installiert haben. Es zeigt die Daten über die CPU an.
Du erkennst schnell, dass es sich um eine CPU mit vier Kernen handelt, die alle mi t 1,5 GHz takten. Dies ist die übliche Frequenz für einen Raspberry Pi 4B, der vor April 2021 in den Handel kam (neuere Modelle takten ab Werk mit 1,8 GHz).
Temperatur
Es ist einfach zu merken, je höher ein Prozessor taktet, desto mehr Wärme gibt er ab.Meine 486DX4 in meinem PC in den 1990ern benötigte bei 100MHz Takt keine besondere Kühlung, der Luftstrom innerhalb des Gehäuses reichte völlig aus. Eine aktuelle Intel CPU der Core Reihe bei benötigt bei 5,3 GHz fette Kühlkörper mit schnell drehenden Lüftern, um die Abwärme vom Chip abzuleiten.
Die aktuelle Temperatur deines Raspberry Pi kannst du mit folgendem Befehl feststellen:
sudo vcgencmd measure_temp
Bei meinem Raspi, der auf der Bauanleitung des Homeservers basiert, erhalte ich ohne große Systemlast einen Wert von 46,7°C.
Mit Hilfe des Programms Stressberry habe ich den Raspi mal richtig unter Last gesetzt, um eine Temperaturkurve zu bekommen.
Bis etwa 60°C (blaue Linie) ist die Taktfrequenz (orange Linie) stabil, dann regelt die CPU den Takt auf etwa 700 Mhz runter, bis sie kühl genug ist, den Takt wieder hochzufahren. Das Argon One Gehäuse ist hier so konfiguriert, dass bei 60°C der Lüfter in Betrieb geht.
Dieser Schutzmechanismus soll eine Beschädigung des SoC verhindern. Daher hier ein Warnhinweis: Die Übertaktung des Raspi kann dazu führen, dass er bestenfalls nicht mehr bootet, schlimmstenfalls zerstört wird.
Benutze für solche Experimente einen Raspberry Pi, der in einem Gehäuse mit guter Kühlleistung sitzt.
Übertaktung des Raspberry Pi
Die Frequenz der CPU wird bei Raspberry Pi OS in der Datei /boot/config.txt
konfiguriert. Zunächst sicherst du die Datei und editierst sie danach.
cd /boot
sudo cp config.txt config.txt.bak
In config.txt findest du eine Zeile
#arm_freq=700
Darunter schreibst du folgende Zeilen:
arm_freq=1700
over_voltage=6
Damit setzt du die Taktfrequenz auf 1,7 GHz und regelst die Spannung des Systems hoch, da die CPU mit einer höheren Frequenz auch mehr Strom benötigt. Der Wert von over_voltage
erhöht die Spannung in 0,025V Schritten, d.h. 6* 0,025 macht insgesamt um 0,15V. Dazu benötigst du aber auch ein Netzteil, dass das verkraftet. Für den nächsten Testlauf habe ich den Lüfter des Gehäuses auf Dauerbetrieb gestellt.
Bei 1,7 Ghz erhalte ich von Stressberry folgendes Belastungsdiagramm
Du erkennst, dass der Raspberry Pi die 1,7GHz gut verkraftet, wenn die Kerntemperatur etwa 70°C erreicht, riegelt der SoC automatisch ab (das sog. Throtteling), um sich zu schützen und die Temperatur zu senken. Ebenso wird klar, dass das Argon One M.2 Case fürs Übertakten nur bedingt geeignet ist, da es die warme Luft nicht gut genug herausführt. Immerhin sitzt die Platine mit der M.2 SSD noch unter dem Raspi.
1800 Mhz
Für die nächste Stufe, setze ich arm_freq
auf 1800
, was der Frequenz entspricht, mit der neuere Raspi 4B ausgeliefert werden.
Die Kurve ist der von 1,7 GHz sehr ähnlich. Allerdings setzt das Throtteling öfter ein und dauert länger an.
2000 MHz
In der Königsklasse habe ich den Raspi dann noch auf 2,0 GHz getaktet, was dann etwa 33% mehr ist als ursprünglich.
Die Temperatur geht hier sehr viel schneller hoch und sogar bis 73°C hoch, bis das Throtteling einsetzt.
Ich habe Aussagen gefunden, die belegen, dass der Raspi auch bei 2100 MHz noch stabil lief, bei 2300 MHz gab es dann aber die ersten Aussetzer des Systems wegen Überhitzung.
Benchmarks
sysbench
ist ein Programm, mit dem du die Leistungsfähigkeit deines Raspberry Pi gut messen kannst. Es kann nicht die Leistung der CPU, sondern auch von Dateisystemen und RAM messen.
Für die CPU-Messung benutze ich in jeder Frequenzstufe dieses Skript, zu dem ich von Chris Barnatt von explainingcomputers.com inspiriert wurde. Zunächst gibt es die aktuelle Temperatur und die CPU Frequenz aus und berechnet dann mit sysbench die ersten 1000 Primzahlen mit 4 simultanen Threads und gibt zum Schluss die Zeit für den Durchlauf aus. Danach werden nochmal 50.000 Primzahlen berechnet und danach wieder die Temperatur ausgegeben.
#! /bin/bash
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
vcgencmd measure_temp
sysbench --test=cpu --cpu-max-prime=1000 --num-threads=4 run >/dev/null 2>&1
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
sysbench --test=cpu --cpu-max-prime=50000 --num-threads=4 run
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
vcgencmd measure_temp
Hier sind die Ergebnisse, für jede Frequenzstufe wurde der Raspi für mind. 10 Minuten auf der Fensterbank (ca. 5°C Außentemperatur) abgekühlt.
Frequenz (MHz) | Zeit(s) | Temperatur (°C) Start/ Ende |
---|---|---|
1500 | 10.0974 | 18,9/20,4 |
1700 | 10.0787 | 21,9/26,7 |
1800 | 10.0836 | 25,3/28,7 |
2000 | 10.0702 | 24,3/31,1 |
Du erkennst, dass sich die Stufe 1800 MHz wegen des längeren Throtteling nicht wirklich auszahlt.
Fazit
Die Übertaktung des Raspberry Pi kann unter den richtigen Umständen etwas mehr Power aus dem Rechner rausholen, allerdings ist eine gute Kühlung dabei unerlässlich, damit das Abriegeln des SoC den Geschwindigkeitszuwachs nicht auffrisst. Du solltest dir genau überlegen, ob du wirklich ein dauerhaft übertaktetes System benötigst und ggf. eine Alternative zum Raspberry Pi 4 benutzen, die von Haus aus schon mehr „unter der Haube“ hat.
Troubleshooting
Sollte dein Raspi nicht mehr booten, hast du zwei Möglichkeiten: Zum einen kannst du den Datenträger auf einem anderen Computer mounten und die config.txt auf den alten Stand zurückstellen oder du schließt eine USB-Tastatur an und hältst beim Start die Shift-Taste gedrückt, dadurch wird die Übertaktung nicht wirksam.
Update vom 15.02.24, die Dateien config.txt und cmdline.txt sind seit einem Upgrade von Raspberry Pi OS 5 nach /boot/firmware verschoben worden.