Es hat sich schnell rumgesprochen, dass man Raspberry Pis übertakten kann und darf. Und speziell beim alten Raspberry Pi 1 war das eine beliebte Übung, um aus dem schmalbrüstigen Board das letzte Quäntchen Leistung herauszupressen. Der neue Raspberry Pi 2 kommt mit wesentlich mehr Power daher, weiter übertakten lässt er sich aber trotzdem. Wie funktioniert das Overclocking beim RasPi, was lässt sich einstellen und wie kann man die Stabilität des Systems überprüfen? Dieser Artikel sucht nach den Antworten.
Die CPU eines Raspberry Pi beherrscht das sogenannte Dynamic Frequency Scaling. Das ist eine Technik, bei der der CPU-Takt jederzeit in Abhängigkeit vom Leistungsbedarf hinauf oder herunter geregelt werden kann. Ein Betriebssystem, das das beherrscht vorausgesetzt. Unter Linux übernimmt diese Aufgabe der Ondemand Governor, eine Funktion des Linuxkernels, die es seit der Version 2.6.9 gibt. Beim Raspberry Pi heißt das, dass die CPU in der Grundeinstellung ohne Last mit 600MHz getaktet wird. Und bei Belastung wird auf 900MHz hochgeschaltet. Diese beiden Werte und einige weitere können geändert werden – und zwar durch Einträge in die Datei config.txt
.
Overclocking Einstellungen in der config.txt
Wo sich die config.txt
befindet und wie sie editiert werden kann, habe ich bereits im letzten Artikel (Stromversorgung) beschrieben, so dass ich mir hier eine Wiederholung spare. In der config.txt lässt sich eine ganze Menge einstellen, hier einige Statements, die für das Übertakten interessant sind:
arm_freq=1000
Erhöht den Takt des Arm-Prozessors auf 1000MHz. (Standard: 900MHz)
arm_freq_min=400
Senkt die Taktfrequenz in Ruhe auf 400MHz. (Standard: 600MHz)
core_freq=450
Erhöht die Taktfrequenz der GPU auf 450MHz. (Standard: 250MHz)
core_freq_min=200
Senkt die Ruhetaktfrequenz der GPU.
sdram_freq=500
Erhöht die Taktfrequenz für den Speicher auf 500MHz. (Standard: 450MHz)
sdram_freq_min=200
Senkt die Ruhetaktfrequenz für den Speicher.
over_voltage=6
Erhöht die Spannungsversorgung für CPU und GPU in Schritten von 0,025 V. (Standard: 0, mehr als Einstellung 6 geht nur mit force_turbo=1)
force_turbo=1
Schaltet die dynamische Übertaktung ab, der Takt bleibt konstant auf den höheren Werten (arm_freq) und geht nicht auf die Minimalwerte (arm_freq_min) zurück. Angeblich soll dabei intern ein Warranty Bit gesetzt werden und der Garantieanspruch erlöschen. Überprüfen kann ich diese Aussage allerdings nicht.
Und dann gibt es noch eine Einstellung, die nur indirekt mit der Taktung zu tun hat:
temp_limit=80
Setzt das Temperaturlimit auf 80 Grad, bei dem Übertaktungen aus Sicherheitsgründen abgeschaltet werden. (Standard: 85 Grad). Sobald die Temperaturschwelle erreicht wird, werden die Taktungen auf die *_min
Werte zurückgeschaltet, bis die Temperatur zurückgegangen ist.
Typische Overclocking-Einstellungen für den Raspberry Pi 2
arm_freq | core_freq | sdram_freq | over_voltage | |
Standard | 900 | 250 | 450 | 0 |
High | 1000 | 500 | 500 | 2 |
Turbo | 1100 | 500 | 500 | 6 |
Alle mit force_turbo=0
. Anhand dieser Werte kann man also beginnen, das Overclocking für den eigenen Raspberry zu optimieren. Der Turbo-Modus mit 1100MHz Arm-Frequenz funktioniert bei meinem RasPi allerdings nicht mehr stabil, ich kann nur bis maximal 1050MHz gehen.
Overclocking testen
Um zu sehen, ob geänderte Einstellungen auch einen stabilen Dauerbetrieb ermöglichen, sind (u. a.) zwei Dinge nötig:
- Zeit, denn eine Taktung, die 10 Minuten läuft, muss dies nicht zwangsweise auch über 24 Stunden tun und
- Last, denn die übertakteten Komponenten müssen schon beschäftigt werden, um ihre Stabilität zu beweisen.
Um Last zu erzeugen können wir natürlich ein anspruchsvolles Programm auf dem Raspberry laufen lassen, oder Kodi ein längeres Video per Software dekodieren lassen. Es gibt aber auch ein schönes Tool, das genau für diesen Zweck gemacht ist, verschiedene Komponenten testen kann und entsprechende Fehlermeldungen ausgibt. Das Tool heißt Stress und genau das macht es auch, es stresst den Raspberry Pi. Installiert wird es per apt-get
, was leider die Nutzer von OpenELEC außen vor lässt. Diese können aber auf einer zweiten Micro-SD-Karte Raspbian oder OSMC für die Dauer des Tests aufspielen und dann auf OpenELEC zurückgehen.
Die Installation des Stresstesttools erfolgt nach einer Anmeldung per SSH wie folgt:
sudo apt-get update
sudo apt-get install stress
Dann können wir über die eingebaute Hilfe von Stress mehr über die Aufrufparameter erfahren:
stress -?
`stress' imposes certain types of compute stress on your system
Usage: stress [OPTION [ARG]] ...
-?, --help show this help statement
--version show version statement
-v, --verbose be verbose
-q, --quiet be quiet
-n, --dry-run show what would have been done
-t, --timeout N timeout after N seconds
--backoff N wait factor of N microseconds before work starts
-c, --cpu N spawn N workers spinning on sqrt()
-i, --io N spawn N workers spinning on sync()
-m, --vm N spawn N workers spinning on malloc()/free()
--vm-bytes B malloc B bytes per vm worker (default is 256MB)
--vm-stride B touch a byte every B bytes (default is 4096)
--vm-hang N sleep N secs before free (default is none, 0 is inf)
--vm-keep redirty memory instead of freeing and reallocating
-d, --hdd N spawn N workers spinning on write()/unlink()
--hdd-bytes B write B bytes per hdd worker (default is 1GB)
--hdd-noclean do not unlink files created by hdd workers
Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s
Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size).
Und dann starten wir gleich einmal einen einminütigen Test:
stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 1m
stress: info: [580] dispatching hogs: 8 cpu, 4 io, 2 vm, 0 hdd
stress: info: [580] successful run completed in 60s
Wenn wir gleichzeitig dazu in einem zweiten SSH-Fenster top
starten, können wir die CPU-Last erkennen und die angestoßenen Test-Tasks.
Overclocking kontrollieren
Es gibt einige nützliche Kommandos, mit denen wir auf Linuxebene im SSH-Fenster Takt- und Temperaturwerte abfragen können. Einige möchte ich hier vorstellen:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
ondemand userspace powersave performance
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
600000 900000
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
600000
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
900000
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
600000
cat /sys/class/thermal/thermal_zone0/temp
49768
Das erste Kommando fragt die verfügbaren Governors ab. Der ondemand-governor besagt, dass das System die dynamische Taktanpassung beherrscht.
Achtung Nutzer von XBian: XBian hat keinen ondemand-governor und läuft fest auf 900MHz, bzw. auf der Frequenz, die mit arm_freq
vorgegeben wurde.
Mit dem zweiten Kommando können dann die beiden Frequenzen abgerufen werden, zwischen denen hinauf- bzw. zurückgeschaltet wird. Die letzten drei Nullen müssen wir bei den Werten abstreichen, um auf MHz zu kommen. Die minimale, die maximale und die aktuell anliegende CPU-Frequenz lassen sich ebenfalls abfragen. Für die aktuelle Frequenz müssen wir vor das Kommando jedoch ein sudo
setzen, hierfür sind Rootrechte erforderlich.
Bei der CPU-Temperatur schließlich müssen wir den ausgegebenen Wert durch 1000 teilen um auf Grad Celsius zu kommen.
Eine andere Möglichkeit an Echtzeit-Informationen über CPU-Takt und -Temperatur zu kommen, ist das Tool vcgencmd
, das wir bereits kennengelernt haben, um die Aktivierung des MPEG2-Codecs zu überprüfen.
vcgencmd measure_clock arm
frequency(45)=600000000
vcgencmd measure_clock core
frequency(1)=250000000
vcgencmd measure_volts core
volt=1.2000V
vcgencmd measure_temp
temp=49.2'C
Die Frequenzen werden hier in Hz ausgegeben, um MHz zu erhalten müssen die Werte durch 1000000 geteilt werden. Spannung und Temperatur haben bereits eine lesbare Formatierung. Mit vcgencmd
lassen sich auch alle gesetzten Konfigurationsparameter auslesen und zwar getrennt für numerische Werte (int) und für Zeichenketten (str):
vcgencmd get_config int
arm_control=0xa5800010
arm_freq=900
avoid_fix_ts=1
config_hdmi_boost=5
disable_commandline_tags=2
disable_l2cache=1
disable_overscan=1
emmc_pll_core=1
force_eeprom_read=1
force_pwm_open=1
framebuffer_ignore_alpha=1
framebuffer_swap=1
hdmi_force_cec_address=65535
hdmi_ignore_cec_init=1
over_voltage_avs=0x1b774
pause_burst_frames=1
program_serial_random=1
sdram_freq=450
sdtv_aspect=1
temp_limit=85
vcgencmd get_config str
decode_MPG2=0xa7fc033d
decode_WVC1=0x6d1f1e7c
device_tree=-
Lohnt sich nun das Übertakten?
Die Antwort darauf ist ein eindeutiges „Jein“.
Dadurch, dass der Raspberry Pi in der Version 2 wesentlich leistungsstärker geworden ist als sein Vorgänger B+, muss nun sicher nicht mehr um das letzte bisschen Leistungssteigerung gerungen werden. Beim RasPi 1 gingen die Meinungen noch auseinander, ob auf eine Kodimaschine mit einem Tvheadend Client noch zusätzlich der Tvheadend Server gepackt werden kann. Beim Raspberry Pi 2 funktioniert das ohne Probleme und ohne jede Übertaktungsmaßnahme.
Mein subjektives Empfinden bei der Bedienung eines Kodi Media Centers merkt keinen Unterschied, ob ein OpenELEC mit standardmäßigen 900MHz getaktet ist, oder auf 1050MHz aufgebohrt wurde. Und auch meine Messungen bei der Datenübertragung zum Raspberry Pi zeigen zwar minimale Unterschiede, die aber nicht wirklich ins Gewicht fallen.
Trotzdem mag es Anwendungsfälle geben, bei denen eine Steigerung der Taktraten signifikante Erfolge bringen kann. Ein Media Center gehört meiner Meinung nach aber nicht dazu.
Wer hier tiefer in die Materie einsteigen möchte, dem empfehle ich einen sehr interessanten Artikel im Linux on Flash blog (englisch), der sich sehr ausführlich mit dem Übertakten eines Raspberry Pi 2 beschäftigt. Hier werden Unmengen von verschiedenen Konfigurationen auf Systemstabilität geprüft und Benchmarkwerte dazu ermittelt.
Weitere Artikel in dieser Kategorie:
- Raspberry Media Center – Teil 1: Vorgeschichte, Idee und Anforderungen
- Raspberry Media Center – Teil 2: Hardware Raspberry Pi 2
- Raspberry Media Center – Teil 3: Hardware Zubehör
- Raspberry Media Center – Teil 4: Softwareübersicht
- Raspberry Media Center – Teil 5: Erste Überraschungen und Enttäuschungen
- Raspberry Media Center – Teil 6: OpenELEC
- Raspberry Media Center – Teil 7: XBian
- Raspberry Media Center – Teil 8: OSMC
- Raspberry Media Center – Teil 9: Tvheadend
- Raspberry Media Center – Teil 10: Tvheadend – Alternative Installation
- Raspberry Media Center – Teil 11: VDR
- Raspberry Media Center – Teil 12: Software Vergleich
- Raspberry Media Center – Teil 13: FTP Server
- Raspberry Media Center – Teil 14: Datenübertragung
- Raspberry Media Center – Teil 15: MPEG-2 Lizenz Schlüssel
- Raspberry Media Center – Teil 16: Stromversorgung
- Raspberry Media Center – Teil 18: CPU-Kühlung
- Raspberry Media Center – Teil 19: Datensicherung
- Raspberry Media Center – Teil 20: Kodi Weboberfläche
- Raspberry Media Center – Teil 21: Kodi Android Apps
- Raspberry Media Center – Teil 22: Raspberry und Kodi Mythen
- Raspberry Media Center – Teil 23: SSH und einige nützliche Linux Befehle
- Raspberry Media Center – Teil 24: Was kostet der Spaß?
- Raspberry Media Center – Teil 25: Kodi 15 Isengard
- Raspberry Media Center – Teil 26: Update OSMC mit Kodi 16
- Raspberry Media Center – Teil 27: LibreELEC 8 mit Kodi 17 Krypton
- Raspberry Media Center – Teil 28: SSH-Zugang absichern
- Raspberry Media Center – Teil 29: Zattoo und weitere DVB-T Alternativen
Guter Beitrag! Ich habe eine ähnliche Anleitung auf meiner Webseite. Dort werden auch Benchmarks gezeigt.
http://maphime.ch/tutorials/raspberry-pi-2-uebertakten.html