Energiefresser unter Linux mit PowerTOP enttarnen

© Bruce Rolff, 123RF

Auf frischer Tat ertappt

Zahlreiche Anwendungen stören den Prozessor bei seinen Strom sparenden Nickerchen. PowerTOP nennt diese Übeltäter nicht nur beim Namen, sondern liefert auch Hinweise auf ihre Entsorgung. Die damit eingesparten Energiekosten dürften Notebook-Nutzer und Server-Betreiber freuen.
Strom sparender Computereinsatz hilft nicht zuletzt auch Kosten zu senken. ADMIN 02/2011 geht der Frage nach, was Administratoren tun können, damit ihre ... (mehr)

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.

Detektei

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.

Taktstock

Ä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

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019