Ein Linux Dämon, um den Prozessortakt unter Linux zu regeln

Mit Einführung des 2.6er Kernels wurde endlich auch mehr Wert auf die Unterstützung von Systemen für den mobilen Einsatz gelegt. Mobile Systeme wie Notebooks müssen einfach für einen geringen und effizienten Stromverbrauch sorgen und können nicht so ohne weiteres die Energie verbrauchen, wie es beispielsweise die Desktop-Pendants machen. Mobile Prozessoren kosten deutlich mehr als herkömmliche Prozessoren, da sie Stromsparmechanismen besitzen, die den Energieverbrauch des Prozessors reduzieren. So wird zum Beispiel der Prozessortakt und die Kernspannung heruntergesetzt, wenn der Prozessor gerade nicht belastet wird. Dies geschieht in der Regel dynamisch, d.h. das System kontrolliert den Bedarf des Prozessors bzw. der jeweiligen Anwendung und reguliert automatisch den Takt.

Unter Linux gibt es mittlerweile zahlreiche Dämonen, die im Hintergrund diese Arbeit übernehmen. In dieser Anleitung wird das Einrichten von Speedfreq beschrieben, einem kleinem und sehr einfach zu bedienenden Tool, das die Taktanpassung des Prozessors übernimmt. Des Weiteren wird ein Mobile Intel Pentium 4-M-Prozessor als Exampel benutzt.

Anleitung

Bevor man mit dem Installieren von Speedfreq beginnt, muss man erst einmal seinen Kernel überprüfen, ob auch die Kernelsourcen und richtigen Features installiert sind. Dazu macht man wie gewohnt folgendes:


   Sind die Kernel-Sources da?
   # ls /usr/src/
   linux linux-2.6.9 //Hier sollte etwas wie linux-2.xxx stehen

   Ist Systemlink zum Kernel da?
   # ls -n /usr/src/
   11 23. Dez 12:22 linux -> linux-2.6.9
 

Wenn die Kernel-Sourcen vorhanden sind, kann man mit dem nächsten Schritt beginnen. Bei denjenigen, wo die Kernel-Sources nicht vorhanden sind, sollten sich entweder einen aktuellen Kernel unter www.kernel.org herunterladen und installieren. Eine Anleitung zum Kernel-Installieren findet man hier. Einen Kernel selbst zu kompilieren erfordert aber Kenntnisse zur kompletten Hardware des jeweiligen Systems. Besitzer einer Distribution wie Suse oder Mandrake können die Kernel-Sources aber bequem per Softwaremanager nachinstallieren.

Der nächste Schritt ist, die entsprechenden Features in dem Kernel zu aktivieren. Seit dem Kernel 2.6 gibt es für das Powermanagement den so genannten Governor, über dem der Takt des Prozessors reguliert werden kann. Speedfreq benutzt die Governor-Features, so dass man diese auch in den Kernel kompilieren muss. Des Weiteren muss man auch die spezifischen Stromsparmechanismen für den jeweiligen Prozessor aktivieren. Hier die Kernelkonfiguration für einen Pentium 4-M und Kernel 2.6.9:


   Kernel-Einstellungen für Speedfreq?
   # cd /usr/src/linux
   make menuconfig

   Folgendes muss aktiviert sein:
Power management options (ACPI, APM)  --->
ACPI (Advanced Configuration and Power Interface) Support --->
[*] ACPI Support
<*> Processor
CPU Frequency scaling --->
<*> /proc/cpufreq interface (deprecated)
<*> 'performance' governor
<*> 'powersave' governor
<*> 'ondemand' cpufreq policy governor
<*> CPU frequency table helpers
<*> ACPI Processor P-States driver
//Folgende Einträge beziehen sich auf den Pentium 4-M
//Diese muss man individuell an den jeweiligen Prozessor anpassen
<*> Intel Enhanced SpeedStep
<*> Intel Speedstep on ICH-M chipsets (ioport interface)
<*> Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)
<*> Intel Pentium 4 clock modulation

Nun ist es Zeit, den neuen Kernel mit make && make modules zu kompilieren und anschließend von dem neuen Kernel zu booten. Anschließend muss man sich die aktuelle Speedfreq-Version von http://www.goop.org/~jeremy/speedfreq/

herunterladen. Die Installation von Speedfreq verläuft wiefolgt:


   Installation von Speedfreq:
   # cd /pfad_zum_Speicherort
   # tar -xvvzf speedfreq-0.7.2.tar.gz
   # cd speedfreq-0.7.2/
   # make
   # make install
 

Nach der Konfiguration des Kernels und der Installation kann man nun den Speedstep-Dämon starten. Dies macht man mit dem Befehl "/etc/init.d/speedfreq start" (es kann von Distribution zu Distribution verschieden sein, wo sich die Init-Skripte befinden). Sinnvollerweise sollte man den Dämon auch automatisch beim Booten starten. Dies macht man mit dem Befehl "rc-update":


   Starten von Speedfreq:
   # /etc/init.d/speedfreq start
   Automatisch beim Booten laden:
   # rc-update add speedfreq default
 

In der Regel bevorzuge ich eine grafische Oberfläche, um Programme oder Dämonen zu steuern, und freunde mich eher ungern mit konsolenbasierten Eingaben an. Doch bei Speedfreq mache ich eine Ausnahme, denn es geht wirklich schneller und außerdem muss man eigentlich nur einmalig die Einstellung vornehmen. In der folgenden Auflistung sieht zuerst die Optionen, die man sich anzeigen lassen kann. So kann man sich beispielsweise mit speedfreq -c die CPU-Informationen anzeigen lassen. Diese Optionen sind aber eher unwichtig. Interessant werden die Einstellungen für die "Policy". Möchte man, dass Speedfreq im Hintergrund automatisch den Takt reguliert, so tippt man einmalig speedfreq -p dynamic in die Tastatur.

In der Regel bevorzuge ich eine grafische Oberfläche, um Programme oder Dämonen zu steuern, und freunde mich eher ungern mit konsolenbasierten Eingaben an. Doch bei Speedfreq mache ich eine Ausnahme, denn es geht wirklich schneller und außerdem muss man eigentlich nur einmalig die Einstellung vornehmen. In der folgenden Auflistung sieht zuerst die Optionen, die man sich anzeigen lassen kann. So kann man sich beispielsweise mit speedfreq -c die CPU-Informationen anzeigen lassen. Diese Optionen sind aber eher unwichtig. Interessant werden die Einstellungen für die "Policy". Möchte man, dass Speedfreq im Hintergrund automatisch den Takt reguliert, so tippt man einmalig speedfreq -p dynamic in die Tastatur.

Einrichten des Speedfreq:

# speedfreq

Usage: speedfreq [-cmqsDV] [-p policy]

-c CPU-Informationen auslesen

-m Zeigt Takt und Policy an

-p P Policy setzen

-q Speedfreq-Server stoppen

-s Aktuellen Speedfreq-Status ermitteln

-D Messages zum Debuggen ausgeben

-V Information zum Speedfreq-Version

Beispiel: speedfreq -c

Available policies:

powersave Speefreq auf Stromsparen setzen

performance Speedfreq auf Leistung setzen

dynamic Speedfreq dynamisch regeln lassen

NNN CPU auf NNN Mhz setzen

Beispiel: speedfreq -p dynamic

Das war eigentlich auch schon alles, denn Speedfreq wird nun nach jedem Start des Rechners automatisch geladen und überwacht nun leise im Hintergrund den Takt des Prozessors und passt diesen automatisch. Wie man anhand des obigen Screenshots sehen kann, lässt sich die Taktregelung mithilfe von Gkrellm (in Verbindung mit dem cpuspeed-Plugin) nachvollziehen. Wird die CPU nicht beansprucht, so wird der Takt meines Pentium 4-M 2200 Mhz auf 1,2 Ghz herabgesetzt. Benötigt eine Anwendung mehr Leistung, so schaltet Speedfreq den Takt automatisch auf 2,2 Ghz an.