Sobald es für einen Prozessor nichts mehr zu tun gibt, versetzt er sich automatisch in einen von mehreren Schlafzuständen. Auf modernen Prozessoren passiert das gleich mehrfach pro Sekunde. Je tiefer die CPU dabei einschläft, desto weniger Strom benötigt sie. Folglich sollte man sie nur dann wecken, wenn es auch wirklich notwendig ist. Dummerweise rütteln einige selbstsüchtige Prozesse und Gerätetreiber den Prozessor immer wieder aus seinem Schlaf und treiben so die Stromkosten unnötig nach oben.
Genau diese Störenfriede ermittelt das kleine Werkzeug PowerTOP auf Linux-Systemen. Es beobachtet eine Weile lang alle laufenden Prozesse und Gerätetreiber, schätzt den durch ihren Einsatz verursachten Energieverbrauch und präsentiert dann die mutmaßlich größten Stromverschwender. Obendrauf liefert die eingebaute Datenbank weitere Energiespartipps, die PowerTOP mit einem Tastendruck sogar direkt anwendet. Damit erhöhen insbesondere Notebook-Besitzer die Batterielaufzeit, während Server-Betreiber ihre Energiekosten senken – gerade bei Server-Farmen ein Hauptkostenfaktor. Darüber hinaus können Software-Entwickler schon frühzeitig prüfen, ob ihre Software den Prozessor zu oft unnötig drangsaliert.
PowerTOP wurde 2007 von Intel ins Leben gerufen, läuft mit kleineren Einschränkungen aber auch auf AMD-, ARM- und UltraSPARC-Prozessoren. Das Werkzeug steht unter der freien GPL-v2-Lizenz und liegt mittlerweile jeder größeren Linux-Distribution bei. In den Repositories lagert allerdings häufig nur eine ältere Version. Da neuere grundsätzlich mehr Energiespartipps kennen, sollte man sich im Zweifel das aktuelle Quellcode-Archiv von der PowerTOP-Homepage angeln
[1]
und selbst übersetzen. Dazu benötigt man lediglich den C-Compiler,
»make
«
,
»gettext
«
sowie die Entwicklerpakete zur
»libncursesw
«
. Das
»w
«
ist übrigens kein Tippfehler: Es handelt sich hierbei um die Wide-Character-Version der bekannten
»ncurses
«
-Bibliothek. Unter Ubuntu benötigt man deshalb neben dem Paket
»libncurses5-dev
«
auch noch seinen Kollegen
»libncursesw5-dev
«
, während Open Suse alles Notwendige im
»ncurses-devel
«
-Paket zusammenschnürt. Ein schlichter Aufruf von PowerTOP übersetzt und installiert schließlich
»make
«
, gefolgt von
»sudo make install
«
. Bevor man das fertige Werkzeug starten kann, müssen allerdings noch ein paar Voraussetzungen erfüllt sein.
Ältere Linux-Kernel nutzten bis zur Version 2.6.20 einen festen Herzschlag mit 1000 Hz. Mit jedem Schlag (Tick) weckte der Kernel den Prozessor und prüfte, ob irgendwelche Aufgaben anstanden. Energiesparen war so nur eingeschränkt möglich. Ab dem Kernel 2.6.21 gibt es diese regelmäßigen Ticks nicht mehr. Stattdessen klärt Linux kurz, wann in der Zukunft neue Aufgaben anstehen und stellt dann einfach den in modernen PCs verbauten Hardware-Wecker (in Form des High Precision Event Timers, kurz HPET). Der Prozessor kann sich dank dieser sogenannten "dynamischen Ticks" (kurz Dynticks) endlich für längere Perioden schlafen legen.
PowerTOP setzt deshalb einen solchen "tickless"-Kernel voraus. Ein 32-Bit-Kernel muss folglich mindestens Version 2.6.21 tragen, ein 64-Bit-Kernel hingegen die Versionsnummer 2.6.23. Ob das der Fall ist, verrät etwa
»uname -r
«
. Auf der sicheren Seite ist man ab Open Suse 11.0 und Ubuntu 8.04. Zusätzlich muss im Kernel die Unterstützung für die dynamischen Ticks aktiviert sein. Bei allen großen Distributionen ist dies durchweg der Fall, die dabei vorgenommenen Einstellungen verrät
Kasten "Einstellungssache"
.
Einstellungssache
Wer einen neuen Kernel übersetzen möchte, sollte laut PowerTOP-FAQ folgende Einstellungen aktivieren:
CONFIG_NO_HZ CONFIG_HIGH_RES_TIMERS CONFIG_HPET_TIMER CONFIG_CPU_FREQ_GOV_ONDEMAND CONFIG_USB_SUSPEND CONFIG_SND_AC97_POWER_SAVE CONFIG_TIMER_STATS
und die folgenden (sofern vorhanden) deaktivieren:
CONFIG_IRQBALANCE CONFIG_ACPI_DEBUG