myavr.CHKRonline.de

Informationen und Projekte Rund um die Mikrocontroller-Programmierung
von myAVR (ATmega8), STM32 (Cortex-M3/4) und Raspberry Pi (ARM11)

Der Autor

Christian KrügerChristian Krüger, ursprünglich aus dem Altenburger Land stammend, wohnt heute in Nürnberg. Nach seinem Studium der Informations­technik an der West­sächsischen Hochschule in Zwickau, ist er heute Software Entwickler für ein­gebettete Systeme. Seine Berufung fand er im Dienst für seine Kollegen als Teamleiter bei ISCUE.

Die größte Leidenschaft Christians ist es, die Schönheit unserer Welt einzufangen und weiter­zuerzählen. Dies gelingt ihm mit Hilfe seiner Kamera. Seine Fotos und Videos sind auf Instagram und seiner Webseite zu betrachten.

Für seine Zukunft freut sich Christian auf erinnerungs­würdige Reisen, begeisterungs­fähige Menschen und viele neue Erfahrungen.

CHKRonline.de

Facebook Profil

Twitter Profil

XING Profil

Hardware Guide

Übertaktung

Achtung die Angaben in diesem Artikel sind potentiell in der Lage, eueren Raspberry Pi zu beschädigen. Daher an dieser Stelle mein Ratschlag: Erst denken, dann handeln. Ich übernehme keinerlei Haftung für mögliche Schäden.

Im Auslieferungszustand arbeitet der BCM2835 ARM11 Mikroprozessor des Raspberry Pi mit 700 MHz Taktfrequenz. Dieser Wert kann durch Eingriffe in die Taktversorgung erhöht oder reduziert werden. Dadurch ist es möglich die zur Verfügung stehende Rechenleistung zu erhöhen (Overclocking) oder auch die entstehende Abwärme und den Energieverbrauch zu reduzieren (Underclocking). Da der Raspberry Pi vor allem bei grafischen Anwendungen schnell ins Stocken gerät, ist die Vergrößerung der Rechenleistung ein interessanter Punkt. Natürlich hat dieser Vorgang auch Nachteile. Wird der Prozessor auserhalb der Spezifikationen betrieben, steigen Energieverbrauch und Abwärme exponentiell an. Gleichzeitig riskiert man dadurch eine Beschädigung der Hardware oder zumindest ein instabiles Verhalten.

Die Entwickler der Linux-Distributionen haben zu dem Zweck der Übertaktung einfache Mechanismen eingebaut, welche sich durch die Datei /boot/config.txt und den Linux-Kernel verwenden lassen. Bis September 2012 ging das Übertakten des Raspberry Pi immer mit einem Garantieverlust einher. Durch die Einführung des "Turbo Mode" ist es seither aber möglich, den Raspberry Pi in Grenzen auch ohne Garantieverlust und damit recht sicher mehr Leistung zu entlocken. Erreicht wird dies durch eine dynamische Übertaktung, die durch das Linux-Betriebssystem gesteuert wird. Der Kern wird dabei nur dann übertaktet, wenn er vollständig ausgelastet wird. Gleichzeitig wird der Chiptemperatur überwacht, sodass notfalls der Takt wieder reduziert werden kann.

Die Übertaktung selbst wird wie bereits erläutert über die Datei /boot/config.txt des Linux-Systems durchgeführt. Es stehen eine ganze Reihe von Parametern zur Verfügung, die das Übertakten von Hauptprozessor, Grafikkern, Speicher und anderen Komponenten zulassen. Zudem ist es möglich die Kernspannung anzupassen. Dies ist für das Übertakten über bestimmten Grenzen hinweg notwendig - wie dargelegt, Rechenleistung und Abwärme steigen, irgendwo muss die Energie dann auch herkommen. Vor allem diese Steigerung der Spannung ist neben der Abwärme ein Risikofaktor beim Übertakten. Daher ist bei dem manuellen Übertakten ab einer gewissen Steigerung der Taktrate vorsichtiges Herantasten und viel Testen notwendig. Eine gute Kühlung kann die Erfolge beim Übertakten erhöhen. Die Temperatur lässt sich mit folgendem Kommando in in Milligrad ausgeben:

cat /sys/class/thermal/thermal_zone0/temp

Schneller ist das Übertakten durch das Programm raspi-config möglich. Es stellt eine Reihe von Übertaktungsoptionen zur Verfügung, die sich durch einfache Auswahl und einen Neustart des Systems aktivieren lassen.

raspi-config Main

raspi-config Overclocking

Da Overclocking gerne auch als eine Art Wettkampf betrachtet wird, finden sich auch immer wieder neue Übertaktungsrekorde im Internet. So ist es teilweise möglich, den Raspberry Pi auf über 1150 MHz zu takten. Welche Vorteile das Übertakten in Anwendungen bringt, ist in einem Artikel auf memtic.org ausführlich ergründet.

Ich selbst verwende eine verhaltene Übertaktung meines Raspberry Pi auf 900 MHz. Abweichend von den aktuellen Voreinstellungen der raspi-config erhöhe ich jedoch auch Kern-Frequenz und Speicher-Takt signifikant. Sie tragen wesentlich zur Gesamtperformance des Systems bei.

# uncomment to overclock the arm. 700 MHz is the default.
arm_freq=900
core_freq=333
sdram_freq=500
over_voltage=2

# for more options see http://elinux.org/RPi_config.txt
gpu_mem=128

Ein wichtiger Partner bei der Übertaktung des Raspberry Pi ist der CPU-Governor. Es handelt sich um das Linux-Modul, welches die automatische Übertaktung steuert. Der Governor implementiert seine Schnittstelle unter /sys/devices/system/cpu/cpu0/cpufreq/. Dort können verschiedene Werte ausgelesen und geändert werden, beispielsweise maximal und minimale Taktfrequenz und der aktuelle Systemtakt. Mit dem Programm /opt/vc/bin/vcgencmd measure_temp kann zudem die aktuelle Temperatur überwacht werden. Der Governor ist standardmäßig auf ondemand eingestellt, also so, dass er bei Systemlast sehr schnell den Takt auf das Maximum erhöht, ihn in Ruhe aber auch sehr schnell wieder reduziert. Das führt in den meisten Situationen zu einem ausgewogenen Systemverhalten. Der aktuelle Modus lässt sich wiefolgt ausgeben:

cd /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Geändert wird er durch Eingaben in diese Datei:

sudo nano /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Schwierig wird es jedoch, wenn man beispielsweise den minimalen Systemtakt deutlich reduziert. Um Energie zu sparen habe ich einmal die Option arm_freq_min auf 300 Mhz verringert. Im Ergebnis führte dies jedoch zu einem deutlich trägeren System, da bei jedem Aufruf zunächst der Takt erhöht werden musste. Dies erledigt der Governor offenbar nicht gänzlich ohne Wartezeiten. Andersherum kann man sein System aber auch künstlich beschleunigen, indem man den Takt dauerhaft auf ein höheren Niveau zwingt. Entweder, indem man arm_freq_min auf denselben Wert stellt wie arm_freq, oder und viel besser, indem man den Governor in den Modus performance versetzt. Erstere Variante birgt dabei die Gefahr der Überhitzung, da der Prozessor gar nicht mehr herunter getaktet werden kann, wenn er zu heißt läuft. Letztere Option sollte dies nach wie vor erlauben.