SDB:Energiesparmanagement

(Weitergeleitet von Energiesparen)
Wechseln zu: Navigation, Suche
Der folgende Abschnitt gibt einen Überblick über die Energieverwaltung in SUSE Linux-basierten Produkten und bietet eine Übersicht über die Maßnahmen, die zur Steigerung der Batterielaufzeit von Mobilcomputern ergriffen werden könnten.
Getestet mit openSUSE Empfohlene Artikel Verwandte Artikel
Icon-checked.png

Icon-manual.png Icon-help.png

Einführung

Die dafür maßgeblichen Rahmenwerke für die Energieverwaltung, sind 'laptop-mode-tools' wie beispielsweise bei der KDE Arbeitsumgebung: PowerDevil. Allgemeine Energiesparfunktionen die beim Abziehen des Netzsteckers in Kraft treten, erledigen diese Werkzeuge automatisch, können jedoch auch per Skripte (/usr/lib/pm-utils/power.d) manuell aktiviert werden.

Im Gegensatz zu früheren Zeiten, empfehlen die Entwickler i.d.R. die automatischen Konfigurationsanpassungen der Anwendungen wie PowerDevil ihre Arbeit tun zu lassen und nicht mehr mit eigenen "Eingriffen" dazwischen zu funken. Diese Anwendungen sind so gut, das Anwender deren Job auch nicht besser können!

Was gemacht wird

CPU-Frequenzskalierung (ACPI P-States)

Die Performanzstaaten einer CPU (gemäß der ACPI-Spezifikation) regeln die Taktfrequenz, mit der der Prozessorkern arbeiten kann. Das heißt, wie viele Instruktionen er pro Sekunde ausführen kann. Diese Funktion ist allgemein als CPU-Frequenzskalierung bekannt. Beispiele für diese Technologie sind Intel SpeedStep oder AMD PowerNow. Moderne Betriebssysteme nutzen dies, um die Frequenz bei Bedarf anzupassen, sie wird erhöht, wenn es viel zu tun gibt, und gesenkt, sobald Aufgaben abzuarbeiten sind, die nicht so viel CPU-Unterstützung brauchen.

Dies geschieht bei SUSE-basierten Produkten wie openSUSE 11.1, Factory oder SUSE Linux Enterprise Desktop/Server standardmäßig. Der Standard-CPU-Frequenzskalierungsregulator im Kernel heißt 'ondemand', er kümmert sich dynamisch um die Anpassung der Frequenz. Es bedarf dafür keiner Interaktion aus dem Nutzerraum.

Warum gibt es keine grafische Oberfläche zum Ändern der CPU-Richtlinie (CPU-Regulatoren)?

Meiner Erfahrung nach, suchen Kunden und openSUSE-Nutzer nur nach dieser Option, weil sie in der Vergangenheit (Testpläne, usw.) verfügbar war. Dies ist erstmal ein Fehler unsererseits.

Wir sollten unseren Kunden und Nutzern wirklich klar machen, dass es keinen Sinn ergibt, einen statischen CPU-Frequenzskalierungsalgorithmus wie powersave oder performance zu wählen.

Die Nutzung des Regulators 'powersave' würde nicht zum Energie sparen führen. Wenn die CPU auf ihre niedrigste Frequenz limitiert wird, dauert die Ausführung von Aufgaben nur länger, was durch die Verlängerung zum gleichen Energieverbrauch führt. Moderne Notebook-Komponenten wie CPUs sind auf eine sehr geringe Leistungsaufnahme optimiert, wenn sie nichts zu tun haben. Das Hauptziel sollte also sein, dass System so lange und so oft wie möglich nichts tun zu lassen. Wenn eine Aufgabe länger braucht, können auch alle anderen Komponenten wie Bildschirm, Festplatte und Netzwerkkomponenten in dieser Zeit nicht in den Ruhemodus versetzt werden.

Beim Regulator 'performance' würden Nutzer überhaupt keinen Geschwindigkeitszuwachs bemerken. Moderne CPUs und die CPUFreq-Implementation des Kernels können Frequenzen sehr schnell umschalten. Wenn Sie das System immer auf der höchsten Frequenz laufen lassen, wird in Wartezeiten massig Energie verschwendet.

Es gibt Nischen, in denen das obige nicht zutrifft, die aber hauptsächlich im Server-Bereich zu finden sind. Es ist nicht gut, dem normalen Nutzer einfache Kontrolle über etwas zu geben, das wie "jaa, wenn ich das wähle, dann habe ich mehr Leistung oder spare Energie" aussieht, ohne dass er die Hintergründe zu all den Auswirkungen auf das System kennt. Deshalb haben wir entschieden, solche CPU-Frequenzeinstellungen aus den grafischen Werkzeugen zu entfernen. Sehr erfahrene Nutzer können immer noch Kommandozeilenwerkzeuge wie die cpufreq-utils nutzen.

Im Endeffekt heißt dies nicht, dass wir nichts für die Energieverwaltung unternehmen. Es ist nur so, dass die meisten Dinge heutzutage dynamisch angepasst werden. Wenn eine bestimmte Komponente arbeitslos ist, sollte sie so wenig Energie wie möglich verbrauchen. Wenn es etwas zu tun gibt, sollte die Aufgabe so schnell wie möglich erledigt werden, um sich nachher wieder schlafen legen zu können. Ein weit verbreitetes Schlagwort für diese Strategie ist "Race to Idle".


Hürden im Nutzerraum überwinden

Während der letzten Jahre wurden viele verschwenderische Anwendungen aus dem Nutzerraum verbessert. Verschwenderischer Nutzerraum meint Prozesse/Anwendungen, die die CPU unnötig aufwecken, wodurch sie nicht so oft in den Ruhemodus versetzt werden und Energie sparen kann. Dies ist natürlich ein laufender Prozess.. Schuldige Anwendungen können meisten mit Powertop erkannt werden.

Mehrkernfähige CPU-Aufgabenplaner

Der Linux-Kernel hat einen Prozessor-Mehrkern fähigen CPU-Aufgabenplaner (scheduler). Einfach gesagt heißt das, dass die CPU-Last so verteilt wird, dass möglichst nur eine CPU aufgeweckt wird. Weitere nachzulesen unter cpufreq.

Bildschirme

Die Energierichtlinien des Bildschirms werden unter GNOME vom gnome-power-manager Applet und unter KDE4 von power-devil durchgesetzt.

DPMS-Methoden werden genutzt, um den Bildschirm nach einer bestimmten Zeit auszuschalten, wenn das System nichts zu tun hat.

Die Bildschirmhelligkeit wird passend zum Status des Systems angepasst. Wenn es auf Batteriebetrieb läuft wird die Helligkeit verringert, läuft es im Netzbetrieb wird sie erhöht.

Weiterhin dimmen gnome-power-manager und power-devil den Bildschirm sogar nach einer bestimmten Ruhezeit, und erhöhen sie wieder, wenn der Nutzer aktiv ist.


Speichergeräte

SATA: Aggressive Verbindungsenergieverwaltung (pm-utils)

Wenn es keine E/A gibt, wird die SATA-Verbindung zur Festplatte in einen Energiesparmodus versetzt. Sie wird automatisch wieder aufgeweckt, wenn Anfragen ankommen. Dies kann pro Festplatte 1 Watt sparen.

Dateizugriffszeit (atime)

Wie bei der CPU ist auch hier das Ziel, die Festplatte so selten wie möglich aufzuwecken. Um das zu erreichen, werden Dateisysteme mit der Option 'relatime' eingebunden. Diese Option aktualisiert die letzte Zugriffszeit einer Datei nur, wenn die allte Zugriffszeit (atime) älter als die Modifizierungs- (mtime) oder die Änderungszeit (ctime) ist. Den Grund, warum wir nicht die Option 'noatime' verwenden, finden Sie weiter unten..

Laptop-Modus

Im Batteriebetrieb nutzen wir auch eine Art Laptop-Modus, um über die laptop-mode-tools Zwischenspeicher zu nutzen. Um die inaktive Zeit zu verlängern, speichert der Kernel Daten so lange wie mögliche zwischen, um zu verhindern, dass die Festplatte zu oft aufwacht und los dreht. Allerdings bringt dies die Gefahr des Datenverlusts durch Abnutzung mit sich. In Arbeitsplatzrechnern zum Einsatz kommende Festplatten sind oft nicht dafür ausgelegt, regelmäßig anzuhalten und anzulaufen, wodurch ihre Lebensdauer verkürzt werden kann. Die gleiche Gefahr besteht auch bei Laptop-Festplatten, wenn auch nicht im selben Ausmaß. Hersteller konstruieren ihre mobilen Festplatten oftmals so, dass sie auf häufiges Wechseln zwischen Schlafen und Arbeiten ausgelegt sind. Demgegenüber bringen Laptop-Festplatten im Energiesparmodus oftmals nicht so viel Energiesparpotential mit, da sie meistens schon auf niedrige Energieaufnahme optimiert sind.


Drahtlos Netzwerk

Als der drahtlose LAN-Standard IEEE 802.11 entworfen wurde, hatte die zuständige Arbeitsgruppe bereits Energieverwaltung eingeplant. Das ermöglicht es, Drahtlos-Chips schlafen zu legen. Zur Zeit unterstützen die Intel-Chips IWL3945 und IWL4965 diese Funktion.

Als erstes müssen Sie dabei wissen, dass Drahtlos Karten die meiste Energie bei der Übertragung von Daten verbrauchen. Als logische Konsequenz sollte das Ziel darin bestehen, kurz aber massiv Daten zu übertragen, so dass sich verbundene Clients schnell wieder schlafen legen können, nachdem die Daten übertragen wurden. Clients finden sich so in zwei Staaten wieder. In einem für die Datenübertragung, dem aktiven Status, und einem zum Schlafen. Clients wachen periodisch auf, um zu prüfen, ob für sie Daten bereitstehen. Umgekehrt kennen die Zugriffspunkte (die es unterstützen) den Status aller verbundenen Clients, egal ob sie schlafen oder aktiv sind. Wenn es Datenpakete für einen bestimmten Client gibt, der gerade aktiv ist, werden diese Pakete sofort übertragen. Wenn der Client schläft, werden die Pakete so lange zwischengespeichert, bis der Client das nächste Mal aufwacht.

Dies kann bis zu 2 Watt sparen! Aus dem Nutzerraum kann man das Verhalten anpassen:

$ echo 6 > \
  /sys/bus/pci/drivers/iwl*/000*/power_level

In SUSE Linux-basierten Produkten wird dies beim Übergang in den Batteriebetrieb automatisch erledigt.


Audiokarten

Audiokarten können heruntergefahren (in einen Energiesparmodus versetzt) werden, wenn keine Töne ausgegeben werden. Dies geschieht, wenn eine Zeit lang nichts zu tun ist.

Energieersparnis: ≈ 0.5Watt

Die Auszeit kann aus dem Nutzerraum über die pm-utils angepasst werden:

$ echo 10 > /sys/module/snd_hda_intel/parameters/power_save

Warum erzeugt das auf meinem System manchmal ein klickendes Geräusch?

Beim Aufwachen aus dem Energiesparmodus produzieren manche Geräte ein klickendes Geräusch. Dies kann entweder passieren, wenn das Netzkabel entfernt/eingesteckt wird oder kurz bevor ein Ton abgespielt wird.

Falls dies zu nervig ist, kann es deaktiviert werden:

$ echo SOUND_PM= > /etc/pm-utils/sound-pm


Was besser gemacht werden kann

Energieverwaltung der Grafikkarte

Das Potential in diesem Bereich ist ziemlich groß, allerdings sind die Möglichkeiten geringer.

  • Intel:
 Für die Chips, für die ein quelloffener Treiber existiert, wie es
 bei Intel der Fall ist, ist der Chip in Bezug auf Energieverwaltung
 recht intelligent. Hier muss nicht mehr viel gemacht werden.
  • ATI:
fglrx: aticonfig exportiert für solche Grafikkarten Funktionen zum
  Anpassen der Energieverwaltungsmodi. Allerdings nutzen wir es nicht,
  da wir noch zögern, ob wir sollen.
radeonHD: Da der Treiber noch sehr neu ist, hat er noch keine
  Energiesparfunktionen. Das wird sich in Zukunft hoffentlich ändern.
  • NVIDIA: TODO


Dateisystemoption 'noatime'

Im Batteriebetrieb binden wir Dateisysteme neu mit der Option relatime ein. Allerdings gibt es mit der Option 'noatime', die das Schreiben der Zugriffszeit komplett abschaltet und die Festplatte so länger im Ruhemodus belässt, eine noch bessere Möglichkeit zum Energie sparen. Wir setzen sie allerdings standardmäßig nicht ein, weil es einige Anwendungen gibt, die eine gespeicherte Zugriffszeit brauchen, um richtig zu funktionieren. Tatsächlich kenne ich aber nur eine Anwendung, nämlich den E-Mail-Leser "mutt". Wenn Sie ihn also nicht nutzen, weil Sie bspw. Evolution oder so einsetzen, können Sie auf ihrem System wahrscheinlich ruhig die Option 'noatime' nutzen. Dazu müssen Sie die folgenden Einstellungen in /etc/laptop-mode/laptop-mode.conf anpassen:

CONTROL_NOATIME=1
USE_RELATIME=0 # (Standard in SUSE-basierten Produkten ist USE_RELATIME=1)


cpufreq

Weitere Möglichkeiten die Prozessor Taktung und damit auch die Energieverwaltung zu beeinflussen ist, mit:

$ cpufreq-info

die Standardeinstellung auszulesen, und mit:

$ cpufreq-set
"Es muss mindestens ein Parameter aus -f/--freq, -d/--min, -u/--max oder -g/--governor angegeben werden."

die gewünschte Parameter zu definieren. Als Standardisierte Basiseinstellung, ist ondemand vordefiniert. Mit ondemand werden die Prozessor(en) mit so viel Leistung versorgt, wie diese zur Abarbeitung zugeteilter Aufgaben benötigen.

Die Einstellung ondemand bildet den Standard beim Energie sparen zu helfen und dennoch genug Leistung für Aufgaben zu liefern.

Sollte dies alles nicht ausreichen, stehen mit den Reglern:

  • conservative, userspace, powersave, ondemand, performance

weitere Möglichkeiten bereit.

Es lassen sich bei Mehrkernprozessoren auch einzelne Prozessorkerne mit der gewünschten Einstellung versehen.

Mögliche werte könnten dann so aussehen:

# cpufreq-set -g conservative --cpu0 für Prozessor 1
cpufreq-set -g conservative --cpu1 für Prozessor 2
Bei Prozessoren wird mit "0" der Kern "1" gezählt. Auch muss beim versuch Energie zu sparen ein herabsetzen von ondemand auf conservative oder weitere, nicht zwingend zu dem Ergebnis führen was erwünscht ist. Am besten ist ein Test, der überzeugt welche Einstellung die bessere Wahl darstellt.

Wenn andere Werte als der Standard gesetzt werden sollen, müssen diese wenn dauerhaft ausgeführt, in ein entsprechendes Script gepackt werden weil bei jedem neu Start des Systems der Standard (ondemand) wieder aktiv ist.

Weitere Energiesparfunktionen bieten die meist in Arbeitsumgebungen enthaltenen eigenen Power-Manager wie zB. PowerDevil, welche Basierend auf ondemand zusätzliche Anpassungen bieten Strom zu sparen und die Stromrechnung zu senken, und damit auch im Notebook Bereich die Akku Laufzeit zu verlängern.

USB-Energieverwaltung

Eine bisher noch nicht implementierte Funktion ist die USB-Energieverwaltung. Diese befindet sich zur Zeit noch in Arbeit. Mit dieser Funktion werden aktive USB-Geräte automatische deaktiviert, wenn sie nicht genutzt werden. Ein gutes Beispiel, bei dem dies Sinn ergibt, könnte eine Webcam sein. Allerdings kann dies nicht auf allen Systemen und allen Geräten automatisch gesetzt werden. Es wird eine Weißliste benötigt, die die Implementation zu einem Mehrzeiler macht.

Um es zu aktivieren, kann aus dem Nutzerraum für jedes USB-Gerät in die sysfs-Dateien unter /sys/bus/usb/devices/*/power/level geschrieben werden, etwa so:

for dev in /sys/bus/usb/devices/*/power/level; do
        echo auto > $dev
done

Dies kann abhängig von der eingesetzten Hardware bis zu 2 Watt einsparen.


Drahtgebundenes Netzwerk (LAN)

Bei einigen Netzwerkkarten gibt es die Möglichkeit, die Verbindungsgeschwindigkeit bei niedrigem Netzverkehr zu senken. Allerdings muss eine eine korrekte Implementierung für eine dynamische Anpassung erst noch erstellt werden.

Beachten Sie bitte außerdem: Es wurde von uns noch nicht getestet, ob dadurch überhaupt Energie gespart wird. Es kann auch sehr stark von der eingesetzten Hardware abhängen.

Bei Treibern, die die Erweiterung 'ethtool' haben, kann es so gemacht werden:

$ ethtool -s <Schnittstellenname> speed <Geschwindigkeit>

Beispiel:

ethtool -s eth0 speed 10


Besser Killswitch-Verwaltung

Moderne Laptopt exportieren oftmals eine Auswahl von killswitches für Bluetooth, WLAN oder WWAN. Im Batteriebetrieb ergibt es oftmals nur Sinn, wenn nur einer davon aktiviert ist. Die meisten aktivierten Geräte verbrauchen auch dann Batterieenergie, wenn sie nicht genutzt werden. Der zur Zeit problematischste Teil sind Bluetooth-Geräte. Sie verbrauchen auch dann noch 1 Watt wenn Sie sie stundenlang nicht brauchen. Sie sollten sie dann also über das jeweilige Bluetooth-Kontrollprogramm deaktivieren!

In Zukunft wäre es schön, den Status von killswitches abhängig von den Nutzereinstellungen oder sogar dynamisch zu aktivieren/deaktivieren, wenn sie genutzt/ungenutzt sind. Aber so weit sind wir noch nicht.


Was nicht gemacht wird

CPU-Drosselung (ACPI T-States)

Während dies bei Systemen die zur Überhitzung tendieren nützlich sein kann, ist es keine Option um Energie zu sparen. Die meiste Hardware (CPUs) verfügt selber über eine gute Überhitzungserkennung und drosselt sich selbst, wenn eine bestimmte Temperatur erreicht ist.

Der Hauptgrund, warum dies nicht vom Betriebssystem (Kernel/Nutzerraum) erledigt wird ist, dass die Drosselung keine Energie spart. Die CPU übergeht nur einige Takte, ohne dabei die Frequenz zu reduzieren. Es verlangsamt lediglich das System, was dazu führt, dass Aufgaben nicht so schnell abgearbeitet werden und dadurch das ganze System in Betrieb halten. Aktivieren Sie sie also nicht selbst!


Externe Links