Linux Stromsparen: Unterschied zwischen den Versionen

Aus ThinkPad-Wiki
Zeile 7: Zeile 7:
== Stromverbrauch analysieren mit PowerTOP ==
== Stromverbrauch analysieren mit PowerTOP ==


[[Bild:Powertop_Screenshot.png|thumb|Powertop Screenshut unter einem frisch installierten Xubuntu Hardy. Wie man sieht verbringt die CPU zu viel Zeit in C2 statt in C3/C4]]
Maßgeblich für den Stromverbrauch des Prozessors ist der Zeitanteil, den er in den unterschiedlichen Zuständen verbringt. Es gibt die P-States, in denen der Prozessor läuft, diese States unterscheiden sich durch unterschiedliche Taktung. Im höchsten Takt verbraucht der Prozessor etwa die spezifizierte TDP (Thermal Design Power), in der Praxis liegen die Prozessoren aber meist deutlich darunter, da TDP eine Maximalangabe ist.
Daneben gibt es die C-States. Hier ist der Prozessor untätig und es werdn bestimmte Bereiche der CPU abgeschaltet. Im Prinzip sollte der Prozessor immer in den Tiefsten C-State, gegenwärtig ist dies C4, bei dem alle Kerne, die einzel Caches sowie der gemeinsame Cache abgeschaltet werden und der Stromverbrauch unter 2 Watt geht. Das Abschalten dauert aber etas. Wenn die CPU zu oft unterbrochen wird, erreicht sie demzufolge nur die höheren Sleep-Zustaände C1 bzw. C2. Daher gilt es die Ursache für Unterbrachungen - CPU Wakeups - aufzuspüren. Hierzu hat Intel ein Tool entwickelt: PowerTOP.
 
[[Bild:Powertop_Screenshot.png|thumb|Powertop Screenshot unter einem frisch installierten Xubuntu Hardy. Wie man sieht, verbringt die CPU zu viel Zeit in C2 statt in C3/C4]]


== Linux Stromspar-Tipps ==
== Linux Stromspar-Tipps ==

Version vom 2. Mai 2008, 09:59 Uhr

Stromverbrauch Windows versus Linux

Linux lag bezüglich des Stromverbrauchs lange abgeschlagen hinter Windows. Daher war Linux auf Notebooks nicht besonders verbreitet. Diese Situation hat sich seit stromsparenden Änderungen am Linux-Kernel umgekehrt (insbesondere durch "dynticks" seit Kernel 2.6.21 vom April 2007). Linux hat die Zahl der Kernel-Interrupts und Übergänge in CPU-Sleep-States deutlich optimiert. Im Office-Betrieb erreicht man bei <100 CPU-Wakeups >95% C3-/C4-Sleep-States (dies lässt sich Dank PowerTOP ermitteln. Leider gibt es kein Tool für Windows, um dort vergleichbare Werte zu ermittel und Linux gegenüberzustellen).

Aber die CPU macht nur einen kleinen Anteil des Gesamtstromverbrauchs aus. Dieser hängt auch stark von der spezifischen Hardware und den dazugehörigen Treibern ab. Für ältere Hardware sind stromeffiziente Treiber oft nur für Windows vorhanden. Auf einem T40 beispielsweise hat man also schlechte Chancen, den Stromverbrauch mit Linux auf die Verbrauchswerte von Windows zu drücken. Für die neueren Modelle sind die Linux-Treiber aber recht stromsparoptimiert. Hier hat Linux in den letzten Monaten enorm aufgeholt. Insbesondere die NVIDIA-Grafikkarten werden gut unterstützt. Auf T60 und T61 bzw. den entsprechenden Modellen der R-Serie mit NVIDIA Karten verbraucht Linux daher etwas weniger als Windows (rund 1-2 Watt, je nach Last). Auch auf den ThinkPads mit Intel-Grafik, beispielsweise den Modellen der x-Serie, liegt der Stromverbrauch leicht unterhalb von Windows (siehe hierzu auch Vista Stromverbrauch senken). Allerdings sind dazu nachfolgende Tipps zu berücksichtigen.

Stromverbrauch analysieren mit PowerTOP

Maßgeblich für den Stromverbrauch des Prozessors ist der Zeitanteil, den er in den unterschiedlichen Zuständen verbringt. Es gibt die P-States, in denen der Prozessor läuft, diese States unterscheiden sich durch unterschiedliche Taktung. Im höchsten Takt verbraucht der Prozessor etwa die spezifizierte TDP (Thermal Design Power), in der Praxis liegen die Prozessoren aber meist deutlich darunter, da TDP eine Maximalangabe ist. Daneben gibt es die C-States. Hier ist der Prozessor untätig und es werdn bestimmte Bereiche der CPU abgeschaltet. Im Prinzip sollte der Prozessor immer in den Tiefsten C-State, gegenwärtig ist dies C4, bei dem alle Kerne, die einzel Caches sowie der gemeinsame Cache abgeschaltet werden und der Stromverbrauch unter 2 Watt geht. Das Abschalten dauert aber etas. Wenn die CPU zu oft unterbrochen wird, erreicht sie demzufolge nur die höheren Sleep-Zustaände C1 bzw. C2. Daher gilt es die Ursache für Unterbrachungen - CPU Wakeups - aufzuspüren. Hierzu hat Intel ein Tool entwickelt: PowerTOP.

Powertop Screenshot unter einem frisch installierten Xubuntu Hardy. Wie man sieht, verbringt die CPU zu viel Zeit in C2 statt in C3/C4

Linux Stromspar-Tipps

  • Kernel >=2.6.24 (Standard in Ubuntu Hardy Heron)
  • Festplatte mit Laptop Mode kontrollieren und zum Stromsparen abschalten (wird bei Office-Arbeiten oder zum Web-Surfen nicht benötigt)
  • PowerTOP starten und Stromspar-Vorschläge ausführen sowie die laufenden Tasks auf Wakeup-Übeltäter durchforsten und ggf. beenden
  • Optional: Undervolting (bringt Reduzierung des Stromverbrauchs bei höherer Last)
  • zugehöriger Thread im Thinkpad-Forum
  • Stromfresser sind vor allem USB 1.* (uhci_hcd idR), der _alte_ Bluetooth Treiber (leider sind die Broadcom Chips in den TPs per legacy USB angeschlossen), der CardBus für pcmcia etc., Musikapplikationen, Animationen, grafische Spielereien wie Compiz etc. pp.

Spezifisch für T61

  • Bios Version 1.26 ist scheinbar die sparsamste, macht ~2Watt aus im Vergleich zu 2.10. Bios Version

Spezifisch für Intel PRO/Wireless 3945ABG

Stromsparmodus der WLAN-Karte aktivieren bei ipw-Treibern:

iwpriv eth0 set_power 5

Für iwl-Treiber:

echo 5 > /sys/bus/pci/drivers/iwl3945/*/power_level

WLAN Stromsparmodus spart etwa 0,25-0,5 Watt (je nach Belastung) und sorgt zudem für eine kühlere WLan Karte (liegt bei vielen Thinkpad-Modellen - z.B. x-Serie - unter der rechten Handballenauflage).

Stromspar-Änderungen persistent machen

Im Startupscript etc/rc.local kann man die Einstellungen persistent machen, hier eine Beispieldatei (x61t):

# By default this script does nothing.
# Trackpoint sensibler (empfohlen für Trackpoint-Experten)
echo -n 250 > /sys/devices/platform/i8042/serio1/sensitivity
# und schneller
echo -n 250 > /sys/devices/platform/i8042/serio1/speed
# Wake-on-Lan aus
ethtool -s eth0 wol d
# PCI Geräte stromsparen
for i in /sys/bus/pci/devices/*/power_level ; do echo 5 > $i ; done
#WLAN stromsparen, hier 3945agb mit iwl-treibern
echo 5 > /sys/bus/pci/drivers/iwl3945/*/power_level
# Sound stromsparen nach 10 sec
echo 10 > /sys/module/snd_hda_intel/parameters/power_save
# xbacklight aktivieren (Workaround für einen Bug in Hardy-Alpha-6)
# xrandr --output LVDS --set BACKLIGHT_CONTROL native
# USB autosuspenden
for i in `find /sys -name autosuspend -exec echo {} \;` ; do echo "1" > $i ; done
# Laptop Mode aktivieren
laptop_mode start
# governor auf ondemand
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# Stromsparenden Scheduler aktivieren
echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
# AHCI Link Power Management. Auskommentiert wenn statt AHCI
# "Compatibility Mode" im Bios aktiviert ist
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy 
exit 0

Unnötige Kernel-Module in die Blacklist /etc/modprobe.d/blacklist (späteres manuelles Nachtladen der Module ist kein Problem):

# module nicht laden wegen Wakeups
blacklist pcmcia
blacklist yenta_socket
blacklist ehci_hcd
blacklist uhci_hcd
blacklist usbcore
blacklist ohci1394
blacklist sbp2
blacklist ieee1394

Einige Module werden schon während der initramfs-Phase geladen. Die blacklist auch dort durchsetzen durch:

update-initramfs

Links