Linux Stromsparen: Unterschied zwischen den Versionen
Pibach (Diskussion | Beiträge) |
Pibach (Diskussion | Beiträge) |
||
Zeile 177: | Zeile 177: | ||
== Zusammenspiel Laptop Mode Tools und Gnome Power Manager == | == Zusammenspiel Laptop Mode Tools und Gnome Power Manager == | ||
Dummer Weise überschreibt der Gnome Power Manager beim Wechsel Akku/AC die Dirty Writeback Time, siehe auch [http://forum.ubuntuusers.de/topic/166821/?p=1428216#1428216 diesen Thread] auf ubuntuusers. Hierzu ist bisher keine Lösung bekannt (außer den Gnome Power manager zu deaktivieren). Leider funktionieren im 2.6.24 Kernel die Fakekey propagates durch den kernel nicht mehr, siehe [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/217504 Bugreport], und irgendwie gehen ohne GPM die HotKeys dann nicht mehr. Temporäres Workaround sind setkeycode Befehle für jede Taste, die der | Dummer Weise überschreibt der Gnome Power Manager beim Wechsel Akku/AC die Dirty Writeback Time, siehe auch [http://forum.ubuntuusers.de/topic/166821/?p=1428216#1428216 diesen Thread] auf ubuntuusers. Hierzu ist bisher keine Lösung bekannt (außer den Gnome Power manager zu deaktivieren). Leider funktionieren im 2.6.24 Kernel die Fakekey propagates durch den kernel nicht mehr, siehe [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/217504 Bugreport], und irgendwie gehen ohne GPM die HotKeys dann nicht mehr. Temporäres Workaround sind setkeycode Befehle für jede Taste, die der Kernel durchlassen soll, diese kann man in rc.local persistent machen. | ||
Zum Debugging hilfreich: | Zum Debugging hilfreich: |
Version vom 4. Juni 2008, 12:31 Uhr
Stromverbrauch Linux im Vergleich zu Windows
Linux lag bezüglich des Stromverbrauchs lange Zeit 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). Dank optimierter Kernel-Interrupts und verbesserter Übergänge der P- und C-States konnte die Stromaufnahme der CPU unter Linux deutlich reduziert werden, siehe Grafik von lesswatts.org, der Intel-Seite zum Stromsparen unter Linux.
Aber die CPU macht nur einen kleinen Anteil des Gesamtstromverbrauchs aus. So entfallen etwa auf Grafikkarte und Display oft mehr als die Hälfte des Stromverbrauchs des Gesamtsystems. Und ohne aktivierte Stromsparmechanismen verpulvert die WLAN-Schnittstelle unnötig Leistung. Der Stromverbrauch hängt also stark von der spezifischen Hardware und den Treibern ab.
Für ältere Hardware sind stromeffiziente Treiber oft nur für Windows vorhanden. Auf einem T40 beispielsweise hat man 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. Die integrierte Intel-Grafik oder auch die gängigen Grafikkarten von ATI und NVIDIA werden ab der Generation des ThinkPad T43 gut unterstützt.
Da Linux durch das effektivere Paketmanagement (bessere Wiederverwendung von Software-Teilen) weniger Speicher benötigt und auch die CPU geringer belastet, liegt der Verbrauch von Linux etwas unter dem von Windows. Zudem eröffnet Linux mehr Möglichkeiten zum Stromsparen: Abschalten der Fesplatte, des DVD-Laufwerks und USB sowie optimieren der CPU-Wakeups gestaltet sich unter Windows deutlich schwieriger. Dank PowerTOP wird unter Linux auch stärker auf die Stromsparoptimierung von Anwendungen geachtet. Als Daumenregel gilt daher, dass man unter Linux mit einem etwa 10% niedrigeren Stromverbrauch im Vergleich zu Windows rechnen kann.
Allerdings erreichen beide Betriebssysteme ihr Stromsparpotenzial nicht out-of-the-box, stattdessen bedarf es einiger optimierender Einstellungen. Unter Linux sind dazu nachfolgende Tipps zu berücksichtigen (für Windows siehe Vista Stromverbrauch senken).
Einfluss der CPU-States auf den Stromverbrauch
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 steigt der Verbraucht des Prozessors in den Bereich der spezifizierten Thermal Design Power (TDP), für einen Mobile Core-2-Duo liegt die TDP beispielsweise bei 35 Watt. In der Praxis liegt die Stromaufnahme des Prozessors aber meist deutlich unter dieser Maximalangabe.
Entscheidende Einsparungen beim Stromverbrauch erreichen die C-States Deep Sleep (C3) und Deeper Sleep (C4). Hier ist der Prozessor untätig und es werden bestimmte Bereiche der CPU abgeschaltet. Im Prinzip sollte der Prozessor bei Untätigkeit immer in den tiefsten C-State schalten, also in C4. Im C4-State werden die CPU-Kerne, die Level-1 Caches und auch der Level-2 Cache abgeschaltet und die Versorgungsspannung reduziert, so dass der Stromverbrauch der CPU unter 2 Watt geht. Das Abschalten dauert aber etwas Zeit. Wenn die CPU zu oft durch Arbeitsanforderungen unterbrochen wird, erreicht sie demzufolge nur die höheren Sleep-Zustände C1 bzw. C2 die weniger Bereiche der CPU von der Stromzufuhr abkoppeln und demzufolge nur geringe Einsparungen bringen. Um den Stromverbrauch der CPU zu minimieren gilt es daher, die Ursache für CPU-Wakeups aufzuspüren. Hierzu hat Intel ein Tool entwickelt: PowerTOP. Dies ermittel die Zeitanteile der CPU in den aktiven P-States und in den stromsparenden C-Sleep-States und zeigt an, welche Prozesse die CPU durch Wakeup-Interrupts aus den C-Sleep-States aufwecken.
Stromsparen durch Deeper Sleep C4
Im Office/Surf-Betrieb wird eine moderne CPU kaum ausgelastet und verbringt über 95% im C4-Sleep-State.
Abhängig vom BIOS lässt sich der C4-State "Deeper Sleep" für den Akkubetrieb aktivieren bzw. deaktivieren. Bei ThinkPads macht das BIOS ein "transparentes Remapping" des C4-State auf den C3-State, d.h. PowerTOP sieht dann den C4-State nicht, obwohl dieser aktiviert wird. Stattdessen werden die C4-States mit bei den C3-States zusammengefasst. Leider lässt sich durch dieses transparente Remapping nicht feststellen, ob der besonders stromsparende C4-State sauber läuft bzw. zu welchem Zeitanteil er erreicht wird. Nur das typische C4-Fiepen liefert dann einen Hinweis. Aktivieren des C4-States bringt jedenfalls etwa 1,5 Watt Einsparungen beim Stromverbrauch.
CPU-Wakeups optimieren
Die meisten Wakeups gehen auf Kosten des TouchPads bzw. des Trackpoints, bis zu 400 Interrupts sind hier normal. Ansonsten sollte die Zahl der Wakeups pro Sekunde bei unter 50 liegen. Instant-Messenger wie Skype sorgen dabei für circa 20 Wakeups/s, WLAN, ACPI und animierte Taskbar-Icons sind weitere Aufwecker. Stromschlucker die oft übersehen werden sind auch Webseiten mit Java, Flash oder Ajax. Ein nackter Desktop läuft mit unter 20 Wakeups/s. Hierbei unterscheiden sich Gnome, KDE oder XFCE übrigens kaum.
Neu seit Kernel 2.6.24 gibt es zudem "Rescheduling Interrupts" auf Mehrkern-CPUs. Hierbei wird die Verarbeitung der Wakeup-Interrupts auf die Kerne verteilt, so dass die CPU insgesamt trotzdem länger in den Sleep-Zusatänden verweilen kann. Dieses Power Aware IRQ Balancing ist im 2.6.24er-Kernel allerdings noch nicht ganz ausgereift.
USB Autosuspend
USB ist ein Polling-basierter Bus, d.h. die CPU muss ständig aufwachen, um auf dem Bus nach Daten zu schauen, selbst wenn dort gar nichts passiert. Dies verhindert auch im Leerlauf, dass die CPU ordentlich in C3/C4-Sleep wechseln kann. Hierzu kann man USB auf Autosuspend stellen, d.h. wenn keine USB-Geräte angeschlossen sind bzw. keine Daten anliegen, können die USB-Chipsätze in einen Stromsparmodus schalten bzw. die Polling-Rate kann reduziert werden. Da viele ältere Geräte (z.B. Drucker, Scanner und auch einige Kameras gehen dann nach wenigen Sekunden Untätigkeit aus) hiermit Probleme haben, ist USB-Autosuspend bei manchen Distributionen per default deaktiviert. Neuere Geräte funktionieren damit aber problemlos und man kann USB-Autosuspend getrost aktivieren. Hot-Pluging, also das Einstecken von USB-Geräten im laufenden Betrieb mit automatischer Erkennung, funktioniert dabei trotzdem. Mit:
cat /sys/bus/usb/devices/*/power/level cat /sys/bus/usb/devices/*/power/autosuspend
kann man die USB-Konfiguration abfragen (korrekte ausgabe ist "auto" bzw. Zeit bis Autosuspend aktiviert wird).
Powertop mach hier leider falsche Angaben (Versionen 1.8 und 1.9). Zum einen sind die Stromspar-Vorschläge zu USB nur relevant, wenn USB-Treiber im Kernel integriert sind, aber nicht, wenn sie wie in Ubuntu als Kernel-Module konfiguriert sind (CONFIG_USB=m). Zum anderen beruht die Erkennung auf der Abfrage autosuspend=0, was aber ab Kernel 2.6.22 lediglich bedeutet, dass 0 Sekunden bis zum Autosuspend gewartet wird (vorher bedeutete es, dass Autosuspend abgeschaltet ist, siehe Bugreport). Folgende ansonsten oft vorgeschlagene Methode hat daher keinen Effekt:
for i in `find /sys -name autosuspend -exec echo {} \;` ; do echo "1" > $i ; done
bzw.
for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $i; done
Jedenfalls ist in Ubuntu Hardy usbcore als Modul konfiguriert und per default ist autosuspend bereits aktiviert.
Bei anderen Distributionen ist ggf. das usbcore Module auf Autosuspend zu stellen, am besten über Module-Optionen in /etc/modprobe.d/options (Debian/Ubuntu):
options usbcore autosuspend=1
Folgende ebenfalls oft vorgeschlagene Alternative funktioniert nur, wenn Autosuspend bei der Compilierung des Kernels aktiviert wurde (in Ubuntu Gutsy und Hardy ist dies nicht der Fall): Bootoption "usbcore autosuspend=1" an die Kernel-Kommandozeile oder in der GRUB Konfiguration
Dennoch verbringt die CPU bei einer Out-of-th-Box Installation von Ubuntu Hardy etwa die Hälfte der Zeit in C2-Sleep, statt in C3/C4 zu gehen. Ursache ist ein Fehler im USB 1.1 Modul (uhci_hcd), das permanent Busmaster-Zugriff (DMA) erzeugt, selbst ohne angeschlossene USB-Geräte. Dies verhindert, dass die CPU in tiefere Schlafzustände gelangt (im DMA-Betrieb musst die CPU die Cache-Kohärenz mit dem RAM gewährleisten und kann daher nicht schlafen). Entladen des USB-Moduls sorgt dafür, das die CPU nicht mehr am Schlafen gehindert wird:
rmmod uhci_hcd
Der Anteil von C1 und C2 sollte damit auf 0% fallen und der Anteil an C3/C4-Sleep sollte im Niedriglastbereich dann über 95% liegen, was etwa 1-2 Watt reduzierten Strombedarf bringt. Bei Bedarf lässt sich das USB-Modul wieder laden (wird für USB 1.1-Geräte benötigt, USB 2.0-Geräte laufen auch ohne dieses Modul):
modprobe uhci_hcd
Leider sind sowohl der Fingerprint Reader als auch Bluetooth über USB 1.1 angebunden und lassen sich ohne das Modul uhci_hcd nicht nutzen. Hierfür ist bisher keine Lösung bekannt.
Grafikkarten
Integrierte Intel-Grafikkarten und NVIDIA Grafikkarten werden i.d.R. bei der Installation von Ubuntu Hardy automatisch erkannt und die Stromsparfunktionen aktiviert. Bei ATI-Karten muss man hierzu unter System/Hardware Treiber den "Beschleunigten Grafik-Treiber von ATI" aktivieren und rebooten. Abfragen des Modus mit:
aticonfig --lsp
Aktivieren der Stromsparfunktion bringt etwa 3 Watt:
aticonfig --set-powerstate=1
siehe auch:
- http://wiki.ubuntuusers.de/Strom_sparen
- http://wiki.cchtml.com/index.php/Ubuntu_Hardy_Installation_Guide
Festplatte abschalten
- Festplatte mit Laptop Mode kontrollieren und zum Stromsparen abschalten (wird bei Office-Arbeiten oder zum Web-Surfen nicht benötigt)
- dazu muss man die Dirty Writeback Time des RAM-Caches für die Festplatte hochsetzen, z.B. auf 30 Minuten (Default ist 5 Sekunden), das sind 180000 Centisecs
- die Spindown on idle Zeit, also wie lange die Platte untätig bleibt, bevor sie abschaltet, entsprechend runter setzen, z.B. auf 1 Sekunde (mehr ist nicht nötig)
- Zusätzlich sind einige Log-Zugriffe abzuschalten syslog, noatime (siehe Doku zu Laptop Mode Tools)
- Problem: Cache-flush-Bug in Firefox-3: Firefox keeps forcing disk to spin up when browsing because its sqlite storage calls fsync() for every recorded entry
- Änliches Problem besteht in Firefox-2: https://bugs.launchpad.net/ubuntu/+source/firefox/+bug/160513
- Man kann nun das ständige Flushen des RAM Write Caches in Firefox 3.0 durch die SQLite Voreinstellung "Pragma Syncronous off" abschalten, oder die Datenbank in eine RAM-Disk verlegen. Oder einen anderen Browser benutzen, Epiphany oder Opera erzeugen z.B. keine Festplattenzugriffe (am Write Cache vorbei).
- die Platte bleibt damit solange aus, bis man wieder auf sie explizit zugreift. Mehrere Stunden Surfen ohne einen einzigen Plazzenzugriff ist kein Problem (lediglich Writeback Zeit entsprechend einstellen).
Lüftersteuerung mit ThinkPad_Fan_Control
- Homepage ThinkPad_Fan_Control
- Funktioniert einwandfrei mit Ubuntu Hardy
- Lässt den Lüfter bis zu einer einstellbaren Temperatur aus, darüber wird auf Hardwaresteuereung (BIOS) umgeschaltet
Dadurch erhält man kein weiches Anlaufen des Lüfters und oberhalb der eingestellten Schwelle zu hohe Drehzahlen, was sich leider nicht ändern lässt. Allerdings benötigt dieser Ansatz vergleichsweise wenige CPU Wakeups. In Ubunty Hardy gehen die ACPI Wakeups lediglich von circa 5 pro Sekunde auf etwa 10-25 pro Sekunde hoch. Dies entspricht (bei geringer Last) etwa einem Mehrverbrauch von 0,1 Watt (bei hoher Last haben diese Wakeups keinen Einfluss auf den Stromverbrauch).
Siehe auch Lüftersteuerung
Diverse Linux Stromspar-Tipps
- Kernel >=2.6.24 (Standard in Ubuntu Hardy Heron)
- 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), 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.
- Firefox Disk Cache disablen (über about:config), das reduziert die Festplattenzugriffe (dies spielt bei aktiviertem RAM Write Caching aber keine Rolle)
BIOS & Stromsparen
- Spezifisch für T61: Bios Version 1.26 ist scheinbar die sparsamste, macht ~2Watt aus im Vergleich zu 2.10. Bios Version. Siehe auch Vista, BIOS & Stromsparen.
WLAN Stromsparen
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 # WLAN Stromsparen bei intel2200 (z.B. T43) # iwpriv eth1 set_power 5 # Sound stromsparen nach 10 sec echo 10 > /sys/module/snd_hda_intel/parameters/power_save # Sound stromsparen auf AC97 Chipsätzen (z.B. T40 - T43) # echo 1 > /sys/module/snd_ac97_codec/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 # Falls CD Laufwerk vorhanden das Polling abschalten # hal-disable-polling --device /dev/cdrom # Dirty Writeback Time vergrößern für weniger Festplattenaktivität # 180000 Centisecs entspricht 30 Minuten Ruhe echo 180000 > /proc/sys/vm/dirty_writeback_centisecs # Bluetooth abschalten hciconfig hci0 down ; rmmod hci_usb exit 0
Unnötige Kernel-Module in die Blacklist /etc/modprobe.d/blacklist (späteres manuelles Nachtladen der Module ist kein Problem):
# folgende Module nicht laden wegen Wakeups/Stromverbrauch 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 -u
Zusammenspiel Laptop Mode Tools und Gnome Power Manager
Dummer Weise überschreibt der Gnome Power Manager beim Wechsel Akku/AC die Dirty Writeback Time, siehe auch diesen Thread auf ubuntuusers. Hierzu ist bisher keine Lösung bekannt (außer den Gnome Power manager zu deaktivieren). Leider funktionieren im 2.6.24 Kernel die Fakekey propagates durch den kernel nicht mehr, siehe Bugreport, und irgendwie gehen ohne GPM die HotKeys dann nicht mehr. Temporäres Workaround sind setkeycode Befehle für jede Taste, die der Kernel durchlassen soll, diese kann man in rc.local persistent machen.
Zum Debugging hilfreich: Überprüfen der Dirty Writeback Zeit geht mit:
cat /proc/sys/vm/dirty_writeback_centisecs
Ob Laptop Mode aktiviert ist, prüft man mit:
cat /proc/sys/vm/laptop_mode
(0 bedeutet aus; >0 bedeutet an)
Links
- lesswatts - Stromsparen-auf-Linux-Projekt von Intel
- Idle Watt Tabelle für alle Thinkpad-Modelle unter Linux
- Power Management - Stromspar-Seite im englischen Ubuntu-Forum
- Stromspar-Anleitung im englischen ThinkWiki
- Aktivieren von Stromsparfunktionen - sehr detaillierte deutsche Anleitung im Gentoo-Wiki