Ein weiteres wichtiges Thema bei Laptops oder TabletPCs ist die Leistungsaufnahme, da hier eine Batterie die Energie liefert und diese nur eine begrenzte Kapazität hat, wird früher oder später der Computer seine Dienste einstellen und warten bis man ihn wieder mit der Steckdose in Verbindung bringt.

Der erste Schritt ist herauszufinden, wieviel Leistung der Computer überhaupt braucht, und wodurch diese benötigt wird. Ein Werkzeug welches genau für diesen Zweck geschrieben wurde ist Powertop, es stellt dar wielange der Prozessor in welchem Zustand verbracht hat, dabei wird zwischen C und P States unterschieden. C-States sind Klassen wie „wach“ ein Prozessor ist, C0 – C4 sind derzeit von aktuellen Prozessoren unterstützt. wobei C0 für „wach“ steht und C4 eine Art Tiefschlaf darstellt. Die P-States sind die Taktstufen in denen der Prozessor takten kann. Außerdem wird die aktuelle Leistungsaufnahme angezeigt, mein unoptimiertes System bezieht bei voller Helligkeit etwa 17-22 Watt während ich den Artikel schreibe.

Nun habe ich derzeit GKrell aktiviert welches mir ein paar Informationen zu meinem System ausgibt, es aktualisiert sich recht häufig, ebenso ein kleines Applet welches mir Prozessor und Netzwerkauslastung ausgibt. Beenden dieser beiden nicht wirklich nützlichen Programme bringt immerhin fast 0,2-0,3 Watt Einsparung mit sich.

Powertop schlägt nun einige Maßnahmen selbst vor:

  • USB autosuspend einschalten
  • Writebacktime erhöhen
  • SATA ALPM aktivieren
  • Nicht genutzte Bluetoothschnittstelle abschalten
  • Laptop Modus einschalten

Es gibt auch eine Wikiseite welche sich sehr ausgiebig mit dem Thema befasst, sowie die Intel-Seite lesswatts.org. Das Powertop Werkzeug stammt auch von Intel.

Ein Bug in Powertop meint jedoch dass USB Autosuspend nicht standardmäßig aktiv ist, mit Ubuntu 8.10 wurde dies jedoch eingeführt, also kann der Punkt schonmal aus der Liste gestrichen werden.

Laptop-Mode-tools ist ein eigenständiges mächtiges Werkzeug welches Unterstützung bieten um eine lange Batterielaufzeit zu erhalten. Dabei wird auf den von Powertop angesprochenen Laptop_Mode zurückgegriffen, es sind also hauptsächlich Werkzeuge die automatisch den Laptopmode ein und ausschalten sowie die gewünschten Parameter einstellt.

Man muss das ganze nur dem Acpi-Dämon mitteilen, man kann prüfen ob laptopmode bereits aktiv ist indem man in der Konsole folgendes eintippt:

1
cat /proc/sys/vm/laptop_mode

Erhält man einen Wert von 0 so ist der Laptopmode deaktiviert.

Um den Laptopmode zu aktivieren müssen wir Datei /etc/default/acpi-support editieren und dabei:

1
ENABLE_LAPTOP_MODE = true

In die entsprechende Zeile schreiben.

Nun sollte man noch die Einstellungen von laptop_mode-tools entsprechend den eigenen Bedürfnissen anpassen.
Dazu editiert man die Datei /etc/laptop_mode/laptop_mode.conf:

1
nano /etc/laptop_mode/laptop_mode.conf

Die wichtigste Einstellung hier ist vielleicht:
LM_BATT_MAX_LOST_WORK_SECONDS=600

Je nach dem wie sicher das System ist kann man diesen Wert vergrößern und so die Festplatte länger schlafen lassen.

Das Problem ist jedoch, dass manche Funktionen erzwingen, dass der Schreibcache auf die Festplatte gebracht wird, dies fürht dann zu häufigerem aufwachen der Festplatte was sich negativ auf die sogenannten Load Cycle Counts auswirkt. Daher muss man schon darauf achten inwiefern diese Optionen sinnvoll sind. Um Schreibzugriffe auf die Festplatte zu verhindern gibt es auch Dämon der die Logs in eine Ramdisk umlenkt, was dazu führt dass bei einem Systemabsturz alle Logeinträge verloren gehen, aber auch die Schreibzugriffe auf die Festplatte verhindert. Das ganze nennt sich Ramlog
Von der Seite lädt man einfach das Paket herunter installiert es und freut sich.

Mit dieser Aktivierung reduziert sich der Energiebedarf bereits auf etwa 15 Watt.

Zusätzlich kann man den Prozessor auch manuell dazu bringen nur mit der niedrigsten Taktfrequenz zu arbeiten, inwiefern dass sinnvoll ist ist ebenfalls nicht genauer geklärt, da es Theorien gibt welche besagen dass ein Prozessor schneller wieder schläft wenn er kurz mit voller Geschwindigkeit gearbeitet hat. Ob jedoch das kurzzeitige schnelle arbeiten oder längerandauernde langsame arbeiten mehr Energie benötigt ist eine Frage die sich ähnlich der ob man besser durch Regen geht oder rennt (um weniger nass zu werden) so einfach nicht lösen lässt.

Weiteres Enegiesparpotenzial bietet der Lüfter, ebenfalls etwas kritisch zu betrachten, da hier quasi die Hardwaretemperatursteuerung umgangen wird, dies kann zu Überhitzung und somit Verringerung der Lebensdauer der Komponenten führen. Für mich ist derzeit auch unklar welcher Sensor welche Temperatur darstellt, deswegen ist eine Risikobewertung auch recht schwierig.
Für die Temperaturregelung empfiehlt sich das Paket ThinkPad Fan Control.
Die Installation ist denkbar einfach. In Synaptic fügt man die Paketquelle hinzu:

1
deb http://ppa.launchpad.net/surban/ubuntu intrepid main

Danach aktualisiert man die Paketinformationen und kann die Anwendung tpfan-admin installiert werden, diese richtet sich unter System->Systemverwaltung ein.
Dort kann man nun mit den Grenzwerten experimentieren, ich gebe keine Anhaltswerte weil ich selbst nicht weiß welche Temperatur was bedeutet. Damit kann man das Laptop auch sehr leise betreiben, was schon angenehm sein kann.

Der nächste Punkt ist das sogenannte SATA Aggressive Link Power Management (ALPM) da bei mir keine ATAPI Laufwerke vorhanden sind spielt Asynchronous Notification (AN) keine Rolle für mich.
Das geschätzte Einsparpotenzial von ALPM ist mit 0,5-1,5 Watt recht hoch.
Wichtig dabei ist, dass der SATA Controller im AHCI Modus und nicht im Compatibility Modus betrieben wird. Durch:

1
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy

Aktivieren wir den Stromsparmodus. Die Option min_power sorgt bei manchen wohl für ein sehr langsames Suspend to Ram. Hier wird stattdessen ein medium_power empfohlen. Einfach testen, da ich eh so gut wie nie Suspend to Ram einsetze werde ich wohl min_power belassen.
Dieser Schritt reduzierte die Leistungsaufnahme laut Powertop um 0,5-0,7 Watt, erstaunlich für eine einzige Zeile oder? Damit bin ich bei 14,3 Watt bei eingeschaltetem WLAN und voller Bildschirmhelligkeit.

Die Idee die nichtgenutzte Bluetoothschnittstelle zu deaktivieren löst leichte Schwierigkeiten aus, das Modul welches Powertop vorschlägt (hci_usb) wird nicht verwendet. Stattdessen habe ich ein Modul namens btusb entdeckt, Bluetooth-USB? Klingt schonmal vielversprechend, tatsächlich handelt es sich wohl um den Nachfolger von hci_usb, welcher derzeit (kernel 2.6.17-11) noch kein autosuspend unterstützt, dies ist für die Kernel Version 2.6.28 geplant, dieser ist bereits vefügbar aber nicht in den Ubuntu Quellen verfügbar, ob autosuspend nun funktioniert oder nicht ist mir nicht klar hervorgegangen.
Um nun die Bluetoothschnittstelle zu deaktivieren müssen wir als erstes die Schnittstelle deaktivieren und dann das Modul aus dem Kernel entfernen (nicht löschen, wir wollen ja eventuell mal wieder Bluetooth haben oder?)
Ähnlich zu Netzwerkschnittstellen gibt es hciconfig welches ohne Parameter aufgerufen eine Liste der aktiven Bluetoothschnittstellen ausgibt. Mit:

1
hciconfig hci0 down

können wir die Schnittstelle deaktivieren. Dieser Schritt alleine bringt noch keine wirklich messbare Verminderung, eventuell 0,1 Watt, aber das ist ein Wert der durchaus auch innerhalb der Schwankungen liegen kann. Mit:

1
2
/etc/init.d/bluetooth stop
modprobe -r btusb

Sollte sich jetzt das Modul entfernen lassen, der Effekt: auch nicht mehr als durch die Deaktivierung, tendenziell also wohl nur eine Einsparung von 0,1 Watt.

Als nächstes kommen die Netzwerkkarten dran. Dazu installieren wir das ethtool. Mit ihm können wir Einstellungen an der Netzwerkhardware vornehmen, wie beispielsweise Wake on Lan ausschalten oder die Geschwindigkeit drosseln.
Ein Aufruf von:

1
ethtool eth0

Lieferte mir folgende Ausgabe:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised auto-negotiation: Yes
    Speed: Unknown! (65535)
    Duplex: Unknown! (255)
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    <strong>Supports Wake-on: pumbag
    Wake-on: g</strong>
    Current message level: 0x00000001 (1)
    Link detected: no

Hier wird deutlich, die Karte unterstützt Wake on Lan und hat es vermutlich auch aktiviert. Dadurch verbringt die Karte ihre Zeit in einer Art halbschlaf (auch wenn der Computer läuft). Deaktivieren bringt vermutlich ebenfalls nicht viel aber jedes Bisschen hilft:

1
ethtool -s eth0 wol d

Und Powertop zeigt uns: irgendwie hat sich nichts getan.
Auf zum Drahtlosnetzwerk, WLAN. Ein relativ bekannter Stromfresser. Ganz abschalten bringt natürlich viel, aber oft möchte man ja doch im Internet surfen oder ähnliches, daher ist es viel interessanter ob man den Stromhunger auch im Betrieb drosseln kann. Es geht, allerdings hat eine Methode auch Nachteile:

The downsides to this power saving technique:

  • network latencies increase, due to the „save up and check once in a while“ behavior. This is generally not noticable when you’re browsing the web and such. In situations where lower network latency is important (for example online gaming, voice and media streaming, etc.), we don’t recommend enabling PS-Poll.
  • a second potential problem is that not all access points (APs) support this technology. While most newer access points support this technique, some older APs may not support it very well. The effect of having an AP that doesn’t support the technique is that network connectivity may be lost. If, after enabling PS-Poll you find you are losing network access, check and see if your AP has newer firmware available from the manufacturer.

Zumindest mit dem ersten Punkt kann ich leben, ob mein Router das unterstützt werde ich gleich herausfinden.
Also schauen wir mal, es gibt ein Werkzeug namens iwconfig, komisch oder? Es ist wie das ethtool nur für Intel WLAN Adapter.
iwconfig gab folgendes aus:

1
2
3
4
5
6
7
8
9
wlan0     IEEE 802.11abgn  ESSID:""  
          Mode:Managed  Frequency:2.427 GHz  Access Point: MAC
          Bit Rate=54 Mb/s   Tx-Power=14 dBm  
          Retry min limit:7   RTS thr:off   Fragment thr=2352 B  
          Encryption key:blubber   Security mode:fu
          <strong>Power Management:off</strong>
          Link Quality=100/100  Signal level:-40 dBm  Noise level=-95 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
1
iwconfig wlan0 power 3

Sollte uns den Stromsparmodus einschalten, mal sehen was wir erreichen: ebenfalls bestenfalls 0,1 Watt eher nichts.
Aaber: eine andere Methode hat einen deutlichen Effekt:

1
echo 5 > /sys/bus/pci/drivers/iwlagn/*/power_level

Damit reduzierte sich die Leistungsaufnahme um ein beachtliches Watt (also 1 Watt),ohne dass sich die Verbindung merklich verlangsamt hätte.
Nun lässt sich das ganze eigentlich auf alle über PCI angeschlossenen Geräte übertragen. Also aufgehts:

1
for i in /sys/bus/pci/devices/*/power_level ; do echo 5 > $i ; done

Bringt nicht mehr so viel, der Übeltäter Wlan ist erschlagen. Ganz abschalten (netter Schalter am Gehäuse) bringt weitere 0,2-0,3 Watt. Also dringen abschalten wenn mans grade nicht braucht.

—-
Teil 1 endet hier, weil der Artikel sonst zu lang wird (!)