TuxMobil: Linux und Laptops

Seit dem Kernel 2.6 wurden die zahlreichen bekannten Stromspaarfunktionen in Linux integriert, so dass das Open Source Betriebssystem nun auch fit für den Einsatz in Notebooks und anderen mobilen Systemen ist. Damit vor allem die mobilen Prozessoren ihre ganzen Fähigkeiten ausspielen können, bedarf es einem Betriebssystem, das die Funktionen der mobilen Prozessoren auch unterstützt. Unterstützt ein Betriebssystem die entsprechenden Features nicht, so rennt der Prozessor immer auf Maximaltakt und -spannung und verbraucht somit (unnötig) mehr Strom.

Mobile Prozessoren unterscheiden sich im Vergleich zu deren Desktop-Pendants vor allem in der Möglichkeit, den Prozessortakt und die Spannung während des Betriebs anzupassen. Im Hintergund wird automatisch überwacht, wie hoch der Prozessor belastet ist und innerhalb von Mikrosekunden wird entschieden, ob der Takt des Prozessors angehoben oder gesenkt wird. Arbeitet der Anwender beispielsweise an einem Office-Dokument, surft im Internet oder schreibt ein E-Mail, so wird ein Prozessor nahezu gar nicht belastet, so dass das System diesen automatisch heruntertaktet, was natürlich positiv für den Stromhaushalt ist. Benötigt der Prozessor aber plötzlich Leistung, weil der Benutzer eine rechenintensive Anwender gestartet hat, so schaltet sich der Prozessor automatisch auf die Standard-Taktfrequenz. Je nach Prozessormodell gibt es verschiedene Zustände. Beim Intel Pentium 4-M 2,2 Ghz taktet sich der Prozessor bei wenig Belastung auf 1,2 Ghz runter. Neben der Taktregelung gibt es aber noch einige Features mehr, auf die hier im Artikel aber noch genauer eingegangen wird.

Desktop-Prozessoren hingegen "rennen" durchweg auf dem Standardtakt und -spannung und können nicht beliebig getaktet werden. Aus diesem Grund sollte man auch beim Kauf eines Noteboks darauf achten, dass dort keine herkömmliche Desktop-CPU verbaut ist.

Viele Features: Speedstep, Suspend S1-S4, Sleep C1-C3

Die Hard- und Software-Industrie haben sich einige nützliche Mechanismen ausgedacht, um den Stromverbrauch eines Prozessors bzw. des gesamten Systems zu reduzieren. Aber wie es einmal so ist, schlagen die Hersteller mit zahlreichen Marketingnamen und Fachwörtern um sich, so dass man "vor lauter Bäumen den Wald nicht mehr sieht". Ein Haufen von Schlagwörtern wie beispielsweise SpeedStep, PowerNow!, Cool'n'Quiet, Suspend-To-RAM, C1, C2, C3, usw. verleiten doch dazu, sich erst einmal nicht mit der Materie Stromsparmechanismen zu beschäftigen. Doch hinter diesen Featuren stecken meistens einfache Routinen dahinter, die unter anderem den Prozessor in Takt und Rechenleistung beeinflussen.

ACPI - Zuständig für das komplette Powermanagement eines PCs


ACPI (Advanced Configuration and Power Interface) heißt die allgemeine Schnittstelle eines PCs, über die sämtliche Aktivitäten in Bezug zu Strom-, Power- und Energie-Features, Ein- und Ausschalten des PCs, Systemanzeigen (bsp. Batterie), und vieles mehr verwaltet werden. ACPI ist somit das Feature in einem PC, dass über das komplette Verhalten des PCs bestimmt, wenn der Anwender den Rechner startet bzw. herunterfährt, Energiefunktionen und eben die Strommechanismen von Prozessoren festlegt. Voraussetzung ist, dass das BIOS eines PCs zu ACPI kompatibel ist, was die meisten ab einem Pentium 1 sind.

Intel Speedstep und Enhanced Speedstep

Für die mobilen Intel-Prozessoren gibt es das Stromsparfeature "SpeedStep" (in der Regel nur die Pentium-Modelle ab dem P3-M,die Celeron-CPU's unterstützen kein SpeedStep). Der Stromsparmechanismus senkt die Taktfrequenz und Core-Spannung des Prozessors, sobald das Notebook im Akkubetrieb ist. Reicht die Performance nicht mehr, kann der Benutzer den Prozessor auch mit voller Taktfrequenz laufen lassen. Bei SpeedStep gibt es zwei Taktzustände (Intel legt diese fest), nämlich die normale und dann die gesenkte Taktrate, zwischen denen der Prozessor je nach Bedarf getaktet wird. Ein Pentium 4-M 2,2 Ghz wird beispielsweise auf 1,2 Ghz heruntergetaktet, wenn nicht die volle Prozessorleistung benötigt wird.

Die Erweiterung zu SpeedStep lautet Enhanced SpeedStep und regel automatisch im Hintergrund den Takt des Prozessors. Bei SpeedStep wird der Takt nur verändert, wenn das Notebook vom Netz getrennt bzw. wieder ans Netz angeschlossen oder der Anwender explizit den Takt einstellt (Performance oder Battery Optimzed Mode). Bei Enhanced Speedstep überprüft das System in regelmäßigen Abständen, wieviel Leistung von der CPU gefordert wird und dementsprechend wird die CPU auf Normal- oder gesenktem Takt eingestellt. Dazu kommt noch, dass Enhanced SpeedStep die Modi "Quick Start" und "Deep-Sleep" untersützt. Was diese Modi bedeuten, wird in diesem Artikel unter "Sleep Modi C0 bis C3" beschrieben.

Processor Maximum Performance Mode Battery Optimized Mode
Processor Frequency Voltage Watts Processor Frequency Voltage Watts

Intel Pentium 4

2.60 GHz 1.3V 35.0 1.20 GHz 1.2V 20.8
2.50 GHz
2.40 GHz
2.20 GHz
2.0 GHz 32.0
1.90 GHz
1.80 GHz 30.0
1.70 GHz 24.5
1.60 GHz 30.0
1.50 GHz 26.9
1.40 GHz 25.8
Intel Pentium III 1.33 GHz 1.4 V 22.0 800 MHz 1.15 V 9.8
1.26 GHz
1.2 GHz
1.13 GHz 21.8 733 MHz 9.3
1.06 GHz 21.0
1.0 GHz 20.5
933 MHz 20.1
866 MHz 19.5 667 MHz 8.9
Intel Pentium III
LV
(Low Voltage)
1.0 GHz 1.15 V 10.9 533 MHz 1.05 V 6.1
933 MHz 10.5
866 MHZ 10.1
850 MHz 10.0 500 MHz 5.9
800 MHz 9.8
750 MHz 9.4 450 MHz 5.7
733 MHz 9.3 466 MHz 5.8
600 MHz 1.35 V 14.4 500 MHz 1.10 V 8.1
Intel Pentium III
ULV
(Ultra Low Voltage)
866 MHz 1.1 V 7.0 400 MHz 0.95 V 3.4
850 MHz
800 MHz
750 MHz 350 MHz 3.1
733 MHz 400 MHz 3.4
700 MHz 300 MHz 3.0
600 MHz 9.7 300 MHz 0.975 4.5
500 MHz 8.1 300 MHz 0.975 4.5

AMD PowerNow! und Qool'n'Quiet

PowerNow! erschien mit den erten mobilen K6-2+ Prozessoren und ist vergleichbar mit Intels Enhanced SpeedStep. PowerNow! regelt die Spannung und den Takt des Prozessors im laufenden Betrieb und hat gegenüber Intels Enhanced Speedstep den Vorteil, dass der Takt in bis zu 32 Stufen geschaltet werden kann, also deutlich mehr als Enhanced Speedstep mit 2 Stufen. Dabei überlässt AMD den Herstellern von Notebooks und Mainboards, wie viele Stufen der Prozessor zur Auswahl hat, in die dieser getaktet werden kann. PowerNow! funktioniert selbstverständlich nur mit AMD-, Speedstep und Enhanced SpeedStep nur für Intel-Prozessoren.

Qool'n'Quiet!: Ist eigentlich dasselbe wie PowerNow!, nur dass es für Desktop-Prozessoren gedacht ist. Mit den Athlon 64-Prozessoren hat AMD erstmals an den stetig steigenden Stromverbrauch und die daraus folgende Wärmeentwicklung gedacht. Mit Cool'n'Quiet, welches im Groben dieselben Features wie PowerNow! besitzt (AMD sagt selbst, dass Cool'n'Quiet keine Neuentwicklung sei). Bei Cool'n'Quiet werden die einzelnen Taktraten als P-Zustände definiert, die festlegen, mit welchem Takt und Spannung der Prozessor momentan überprüft wird. Cool'n'Quiet überprüft dabei in Bruchteilen einer Sekunde, wie stark der Prozessor ausgelastet ist und setzt dementsprechnend den P-Zustand an. Bei einem mobile Athlon 64 mit einer Taktrate von 2400 Mhz sehen die P-Zustände wiefolgt aus:

P0 = 2400 MHz at 1.2 V
P1 = 1600 MHz at 1.1 V
P2 = 800 MHz at 1.0 V

Sleep Modi C0 bis C3 - Die CPU geht schlafen

Das Ändern der Taktrate ist die eine Möglichkeit, den Prozessor zum Stromsparen zu bringen. Doch es gibt noch eine weitere Möglichkeit, dass eine mobile CPU noch weniger Strom verbraucht: Oftmals kommt es vor, dass der Prozessor in den so genannten IDLE-Zustand verfällt. D.h. der Prozessor ist im Leerlauf und wartet auf den nächsten Befehl. Und hier kommen die Sleep-Modi zum Einsatz, die Teil bzw. die komplette CPU ausschalten können und diese somit in eine Art "Schlafzustand" versetzen. Durch das Ausschalten von CPU-Bereichen wird zusätzlich Strom eingespart. Je "tiefer" der Prozessor "schläft", desto länger benötigt dieser wieder zu "erwachen".

Zustand C-Modus Beschreibung
Normal C0 Der Zustand, wenn der Prozessor Instruktionen ausführt.
AutoHALT C1 Der Prozessor wird in den AutoHalt-Status gesetzt. Während des AutHALT-Status stoppt der Prozessor den internen Takt und gibt das HLT-Signal aus.
Quick Start C2 Der Quick-Start-Modus besitzt folgende Features:
  • Der Prozessor schaltet den internen Takt aus und gibt das STPCLK-Signal an die Southbridge des Mainboards.
  • Der Prozessor hält den L2-Cache aufrecht.
 
Deep Sleep C3 Der Deep Sleep Status:
  • Die Southbridge schaltet den External Clock (FSB) zur CPU aus.
  • Das System übernimmt die Cache-Verwaltung.
  • C3 beste Sleep-Modus mit längster Aufwachphase.
 

Suspend S1 bis S5 - PC auschalten mal anders

Die Suspend-Zustände sagen aus, wie der Rechner heruntergefahren wird. Jetzt wird man sich fragen, was das Ausschalten vom PC mit dem eigentlichen Stromsparen zu tun, denn wenn der Rechner aus ist, kann man ja auch nicht mehr Arbeiten. Stimmt schon, aber das gilt nur für das klassische Herunterfahren des Rechners. Es gibt aber auch noch andere Möglichkeiten des Ausschaltens, wenn man unterwegs ist. So ist es möglich, den kompletten Rechner in einen Ruhezustand zu setzen. Dabei wird der komplette PC-Zustand, dessen Daten sich im Arbeitsspeicher und im Prozessor selbst, also alle Programm- und Speicherzuständer, auf einem Speichermedium gespeichert. Als Speichermedium kommen Festplatte oder Arbeitsspeicher in Frage.

S1 (POS)

Der Schlafzustand S1 entspricht einem Schlafzustand mit niedriger Reaktivierungslatenz. In diesem Zustand geht kein Systemkontext (CPU oder Chipsatz) verloren, und die Hardware hält den gesamten Systemkontext aufrecht.

S3 (STR)

STR ist die Abkürzung für Suspend-To-Ram und bedeutet, dass alle Zustände und Daten in dem Arbeitsspeicher gespeichert werden. Das Netzteil versorgt die nötigen Komponenten mit einem Ruhestrom, so dass die Daten auch im Arbeitsspeicher gehalten werden können. Festplatten, Laufwerke, Prozessor, etc sind komplett ausgeschaltet, so dass das komplette PC-System nur noch ca. 1 Watt verbraucht. Der Zustand S3 ist ein Schlafzustand mit niedriger Reaktivierungslatenz, bei dem der gesamte Systemkontext mit Ausnahme des Systemspeicherkontextes verloren geht. CPU-, Cache und Chipsatzkontext geht in diesem Zustand verloren. Die Hardware hält den Speicherkontext aufrecht und stellt bestimmte Teile des CPU- und L2-Konfigurationskontextes wieder her. Der Vorteil von S3 ist, dass man den Rechner in einen extrem stromsparenden Betrieb hat, ihn zwar nicht benutzen, dafür aber sehr schnell wieder aufwecken kann. Dabei sind alle Programme, Dokumente, etc in dem Zustand, wie man sie nach dem Herunterfahren in den S3-Zustand verlassen hat.

S4 (STD)

Steht für Suspend-To-Disk und ist vergleichbar mit S3 (Suspend-To-Disk), nur dass hier nicht alle Daten und Zustände in den Arbeitsspeicher, sondern auf einen bestimmten Bereich auf der Festplatte geschrieben werden. Hierbei wird auch der komplette Arbeitsspeicher auf der Festplatte geschrieben. S4 dauert länger zum Hochfahren wie S3, hat aber den gleichen Vorteil, denn der Rechner befindet sich in dem gleichen Zustand wie vor dem Herunterfahren.

S5 (Soft-Halt)

Dieser Zustand entspricht eigentlich einem kompletten Ausschalten des Rechners, nur dass man den Rechner noch per Netzwerk oder USB starten kann.

Throtteling

Eine etwas umstrittene Methode, um den Stromverbrauch des Prozessors ist das so genannte Throtteling. Beim Throtteling wird je nach Einstellung nach einem bestimmten Rythmus der Takt ausgesetzt. Wenn man das Throtteling auf 50% einstellt, so wird jeder zweite Prozessortakt ausgesetzt. Dies spart zwar Strom, aber es verlängert natürlich auch die Zeit zum Berechnen, also beispielsweise beim Rendern von Videos, was sich wiederum negativ auf die Akkulaufzeit niederschlägt.

echo 4 > /proc/acpi/processor/CPU0/throttling
cat /proc/acpi/processor/CPU0/throttling
state count: 8
active state: T4
states:
T0: 00%
T1: 12%
T2: 25%
T3: 37%
*T4: 50%
T5: 62%
T6: 75%
T7: 87%

Hierbei heißt 100%, dass der Prozessor bei normalen Takt betriben wird.

Linux auf Laptops einrichten

In dem Verzeichnis /proc/acpi/ befinden sich alle ACPI-Daten, die man benötigt, um den Prozessor und andere Systemspezifischen Einstellungen vorzunehmen. Mit dem Befehl "cat" kann man sich die entsprechenden Information zu Batterie, Takt, Prozessor-Zustand, Temperatur, uvm. anzeigen lassen. Vorraussetzung ist, dass man ACPI und dessen Komponenten in den Kernel kompiliert hat.

Bei dem 2.6er Kernel hat die Linux-Community verstärkt auf den Einsatz auf Notebooks geachtet und die entsprechenden Stromsparfeatures implementiert. SpeedStep, Enhanced SpeedStep, PowerNow!, Transmeta Longrun und wie sie alle heißen kann man im Kernel aktivieren und diese einbinden. Auch die diversen Suspend-Modi sind im Kernel vorhanden, man muss also nur die entsprechenden Module im Kernel aktivieren. Wer noch mit dem 2.4er Kernel arbeitet, muss den Kernel noch ein wenig erweitern, also die Kernel-Source-Dateien patchen. So fehlt dem 2.4er Kernel sowohl Speedstep und PowerNow! als auch Suspend. Hier muss man ein wenig googeln, denn es gibt zahlreiche Anleitungen im Internet, die beschreiben, wie man die jeweiligen Module in den 2.4er Kernel einbindet.

echo 1 > /proc/acpi/processor/CPU0/performance
cat /proc/acpi/processor/CPU0/performance

state count: 2
active state: P0
states:
P0: 2200 MHz, 22000 mW, 250 uS
*P1: 1200 MHz, 10000 mW, 250 uS

Mit dem Befehl echo "x" > /proc/acpi/processor/CPU0/performance kann man den Prozessortakt manuell steuern, man übernimmt also die Aufgabe von SpeedStep. Zum Testen ist diese manuelle Methode ganz praktisch, doch auf Zeit lästig, denn wer möchte jedes Mal diesen langen Code in die Konsole tippen, wenn der Takt geändert werden soll. Damit dies automatisch passiert, benötigt man einen Dämon, also einen Dienst, der dies im Hintergrund steuert. Solche Programme bzw. Dämonen lauten cpuspeedy oder cpudynd, es gibt aber noch zahlreiche andere. Wer einen solchen Dämonen im Hintergrund laufen lassen möchte, der benötigt zum einen den ACPI-Support und zum anderen das Modul cpufreq im Kernel, ansonsten verweigern diese Dämonen zum Steuern der Taktfrequenz den Dienst. Anwender des 2.4er Kernels müssen diesen noch nachträglich in die Kernel-Sources patchen, Anwender ab dem 2.6er müssen lediglich das Modul im Kernel aktivieren.

cat /proc/acpi/processor/CPU0/power
active state: C2
default state: C1
bus master activity: ffffffff
states:
C1: promotion[C2] demotion[--] latency[000] usage[00114000]
*C2: promotion[C3] demotion[C1] latency[090] usage[01285494]
C3: promotion[--] demotion[C2] latency[250] usage[00000001]

Mit cat /proc/acpi/processor/CPU0/power kann man sich anzeigen lassen, welchen Sleep-Modus der jeweilige Prozessor unterstützt. Dies ist aber nicht der aktuelle Zustand, in der sich die CPU gerade befindet, sondern dies zeigt lediglich an, in welchen Zustand der Prozessor gesetzt wird, wenn er nicht beansprucht wird. Die Werte in den eckigen Klammern zeigen an, in welchen Zustand geschaltet wird (promotion/demotion).

Mit einem Tool wie cpuspeedy kann man dem System sagen, wie die Taktraten des Prozessors zu wählen sind. Einmal im Hintergrund gestartet, sorgt ein solches Tool für die automatische Taktanpassung des Prozessors, wie sie momentan benötigt wird.