Intel P-States – Frequenzregulierung anpassen

Dieser Tipp gilt für: Ubuntu 14.04 und neuer

Intel P-states ist in Ubuntu 14.04 nicht von Haus aus aktiviert. Anders sieht dies unter anderen Distributionen wie Fedora, Arch Linux oder OpenSUSE aus wo P-States bereits standardmäßig aktiviert ist. Unter Ubuntu wurde pstate aufgrund einiger Probleme, die nun aber behoben wurden, deaktiviert. Um den Tipp anwenden zu können benötigen sie eine Intel Sandy Bridge CPU (Core 2xxx) oder neuer.

Was ist ein CPU-Governor

Linux bietet die Möglichkeit, die Taktfrequenz des Prozessors auszulesen und den Takt an die aktuellen Bedürfnissen anzupassen. Während die Taktfrequenzstufen und -grenzen durch die Hardware vorgegeben sind, entscheidet ein Governor des Betriebssystems, wie die Taktfrequenz automatisch geregelt wird. Anders als unter Windows gibt es nicht nur einen festen Governor sondern viele verschiedene, um so den Bedürfnissen bei Servern, Desktop oder Mobile gerecht zu werden. P-States ist somit eine Auswahl unter vielen.

Vorteile von P-States

Der standardmäßig eingestellte Ondemand-CPU-Governors nutzt den Cpufreq-Treiber, der in einem Thread laufen muss. Daher müssen CPUs zunächst aufgeweckt werden bevor überprüft werden kann ob sie wieder schlafen gelegt werden können. Sollte der Scheduler aber feststellen, dass ein Prozessor wegen den Context-Switches überlastet ist, kann er die Prozesse auf einen zweiten Kern verlagern, der dafür wiederum aus dem Schlafmodus geweckt werden muss und dann zunächst mit einer niedrigeren Taktfrequenz läuft. Diese Problematik erhöht die Stromaufnahme und sorgt somit für eine verringerte Effizienz.
P-States nutzt stattdessen die Register der CPU, um die Taktfrequenz zu regulieren.

P-States aktivieren

Editieren sie die Datei grub unter /etc/default/ mit einem Text-Editor:

sudo gedit /etc/default/grub

Fügen sie nun in der Zeile GRUB_CMDLINE_LINUX_DEFAULT=" intel_pstate=enable hinzu:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_pstate=enable"

Speichern sie nun die Datei und updaten sie Grub:

sudo update-grub

Überprüfen

Starten sie ihr System neu. PStates sollte nun aktiv sein. Um dies zu überprüfen führen sie den folgenden Befehl aus:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver

es sollte nun die Ausgabe "intel_pstate" erscheinen.

Falls die Ausgabe nicht erscheint bedeutet dies, dass ihre CPU intel_pstate nicht unterstützt und sie es deaktivieren sollten (entfernen sie einfach "intel_pstate=enable" von /etc/default/grub und führen sie "sudo update-grub" aus).

Konfigurieren

Für intel_pstate gibt es nur 2 cpufreq governors: performance und powersave. Einige Benchmarks und Reviews können sie unter Prononix finden. Falls sie TLP verwenden, so können sie die Konfiguration auch darüber abändern. Den aktuell verwendeten cpufreq governor können sie über folgenden Befehl (in einem Terminal) herausfinden:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

Um den Governor permanent zu ändern installieren sie zunächst cpufrequtils:

sudo apt-get install cpufrequtils

und editieren sie die Datei /etc/init.d/cpufrequtils.
Um den Governor automatisch auf powersave zu ändern führen sie folgenden Befehl in einem Terminal aus:
sudo sed -i ’s/^GOVERNOR=.*/GOVERNOR="powersave"/‘ /etc/init.d/cpufrequtils

Um den Governor auf performance zu ändern:
sudo sed -i ’s/^GOVERNOR=.*/GOVERNOR="performance"/‘ /etc/init.d/cpufrequtils

und falls sie pstate nicht mehr verwenden wollen und zurück zum Standard Governor verwenden wollen:
sudo sed -i ’s/^GOVERNOR=.*/GOVERNOR="ondemand"/‘ /etc/init.d/cpufrequtils

Weiterführende Links

Automatisches Power-Management mit TLP
Mit thermald eine Überhitzung vermeiden