Arbeitet man mit einem Notebook unterwegs, so will man die maximale Akkulaufzeit aus dem Gerät herauspressen. Ein beliebter „Trick“ ist die Taktrate der CPU auf ein Minimum herabzusetzen. Bei niedrigeren Taktraten wird die CPU mit weniger Spannung versorgt und nimmt so weniger Leistung auf, so der Glaube. Das ist zwar korrekt, doch leider ist es nur die halbe Wahrheit…
Dazu gibt es in GNOME das CPU Frequency Applet, das den Benutzer durch die Option „Powersave“ schnell dazu verleitet diese Einstellung im mobilen Betrieb zu verwenden. Öfters liest man Support-Anfragen in dieser Art…
Ich würde gerne mein Ubuntu 9.04, das auf einem Notebook läuft, so konfigurieren, dass es die CPU-Policy auf „Powersave“ stellt, wenn es per Akku betrieben wird und auf „OnDemand“ schaltet, wenn es an der Steckdose hängt.
Wie Eingangs angesprochen ist die Taktrate der CPU nur ein kleines Zahnrad im Räderwerk des Energiemanagements einer CPU. Viel wichtiger sind die Schlafmodi der CPU, in die ein Prozessor jedoch nur fallen kann, wenn es nichts mehr zu tun gibt. Im Normalfall (d.h. „normaler“ Betrieb: Keine Spiele, keine andauernden Berechnungen) spart man mit „Powersave“ KEINE Energie. Auch wenn diese Option fälschlicherweise „Powersave“ heißt, der Akku geht damit eher schneller zur neige.
Ich zitiere mal Making sure we do power management the right way von Matthew Garrett. Matthew ist ein Angestellter von Canonical und dort unter Anderem für den Kernel zuständig.
Original | Übersetzung |
---|---|
To a first approximation, the Powersave governor will only save you power if you’re playing 3D games. The performance governor will basically never give you extra performance. Don’t use them. Use ondemand instead. Do not make it easy for your users to choose them. They will get it wrong, because it is difficult to explain why this result is true. | Der Powersave-Regler wird nur Energie sparen, wenn du 3D Spiele spielst. Der Performance-Regler wird dir praktisch nie extra Leistung liefern. Verwende diese Einstellungen nicht. Du solltest „ondemand“ verwenden. […] Entwickler sollten es vermeiden diese Optionen zur Auswahl anzubiten, da Enduser diese Begriffe falsch interpretieren werden. |
Weitere Informationen und ein anschauliches Beispiel gibt Arjan van de Ven, der Kopf eines Teams bei Intel, das sich um Power Management und die Performance von Linux auf Intel Hardware kümmert.
Original | Übersetzung |
---|---|
it’s a bit complex to explain, but it’s better to execute the code you need to execute at full speed, and then really quickly go idle, than it is to execute at a much lower speed.
Maybe a simple example (I plucked these numbers out of the air, they don’t represent any real cpu that exists) will help: Say you have a cpu that consumes 40 Watts at full speed, and 30 Watts at half speed, and 4 Watts when idle. You have something to do, lets say mp3 decoding of 1 second of audio, and that takes a full second at half speed, and one second at full speed. At full speed decode + idle, that is half a second at 40 watts (20 Joules) and half a second at 4 Watts (2 Joules); total is 22 Joules. At half speed decode, that is a full second at 30 Watts, so 30 Joules. So, what ondemand does would cost 22 Joules, while a „hit the exact frequency“ governer would cost you 30 Joules….. |
Es ist schwierig zu erklären, aber es ist besser ein Code bei voller Taktrate auszuführen und dann schnell in den Leerlauf zu fallen, als den selben Code bei einer viel niedrigen Taktrate auszuführen.
Vielleicht verdeutlicht ein einfaches Beispiel den Zusammenhang (Die Zahlen repräsentieren keine reale CPU, sie sind aus der Luft gegriffen): Angenommen man hat eine CPU, die 40 Watt bei voller Taktrate, 30 Watt bei halber und 4 Watt im Leerlauf benötigt. Nun lässt man den Rechner arbeiten, beispielsweise decodiert man eine MP3-Datei mit einer Länge von einer Sekunde. Dies dauert bei halber Taktrate eine ganze Sekunde und eine halbe Sekunde bei voller Taktrate [Anmerkung: Hier hat sich der Autor wohl vertippt]. Bei voller Geschwindigkeit benötigt dieser Vorgang 22 Joules (0,5 Sekunden bei 40 Watt und 0,5 Sekunden bei 4 Watt), drosselt man nun die CPU und decodiert bei halber Taktrate dauert der Vorgang eine ganze Sekunde bei 30 Watt, so dass 30 Joules Energie benötigt werden. Ondemand benötigt also 22 Joules, während der „Benutze nur diese eine Taktrate“-Regler dich 30 Jules kosten würde. |
Will heißen, je schneller die CPU wieder in Tiefschlaf fallen kann, desto mehr Energie wird sie sparen. Indem man sie nun zwingt immer mit niedrigster CPU-Rate zu laufen, verhindert man dass sie möglichst schnell wieder Einschlafen kann. Mit Powersave spart man nur dann Energie, wenn die CPU sowieso bei jeder Taktrate voll ausgelastet wäre (also bspw. bei 3D-Spielen oder Berechnungen). Im normalen Betrieb, egal ob Akku oder Netz, sollte man OnDemand benutzen um Energie zu sparen.
Ich persönlich benutze Powersave um den Lärm, den der Lüfter meines Laptops macht, zu kontrollieren. Arbeitet man mit Anderen in einer leisen Umgebung, so ist ein permanent hochdrehender Lüfter doch arg nervig. Weitere interessante Ideen bzgl. Energiesparen bei Computern im Allgemeinen und Laptops im Speziellen findet man auf thinkpad-wiki.org unter Linux Stromsparen und Vista Stromverbrauch senken.
Cool, danke 🙂 Soweit hab ich nie gedacht..
„…ein permanent hochdrehender Lüfter doch arg nervig…“
VIELLEICHT ist aber gerade der Energieverbrauch des Lüfters genau das, was man nicht außer acht lassen darf.
Ich habe keine Ahnung, was ein Notebook-Lüfter an Strom frisst. Aber wäre es nicht denkbar, dass der Powersave-Modus auf einem Notebook gerade wegen dem seltener anspringenden Lüfter doch hilft Energie einzusparen?
Nur so ein Gedanke…
Gruß
Piccolino81
Diese Zusammenhänge sind zwar schon länger gültig und bekannt – Matthew Garrett hat darüber schon vor gut einem Jahr berichtet – aber es ist gut, dass immer wieder darauf hingewiesen wird.
In den Kommentaren wird dort auch auf die Problematik des Stromverbrauchs von Lüftern eingegangen, diese ist jedoch angeblich deutlich zu vernachlässigen.
Insbesondere, wenn man den Unterschied im Verbrauch der CPU unter Volllast und im Tiefschlaf miteinander vergleicht.
Für den Ondemand-Governor gibt es übrigens einen Patch, der auch Wärmeentwicklung und damit Lüfteraktivität mit berücksichtigt. Ob dieser schon im Kernel offiziell enthalten ist weiß ich jetzt nicht.
~jug
Selbst modernste CPUs haben noch eine Leistungsaufnahme von mehreren Watt. So ein Lüftermotor fällt da mit Sicherheit nicht ins Gewicht.
@Jug, ich weiß ich hab die Blog Beiträge damals auch gelesen. In letzter Zeit häuften sich im Forum jedoch mal wieder die Fragen zum „Powersave“-Governor, daher wollte ich die Zusammenhänge nochmal ausführlicher zusammenfassen.
Dann ist also die Frage: Welches Verhalten/welche Einstellungen bringen wirklich was?
Lohnt es sich z.B. im BIOS das WLAN zu deaktivieren, wenn man weiß, dass man eh keinen Empfang haben wird (Bahnfahrt)? Genügt es im Netzwerkmanager das WLAN zu deaktivieren?
Die Beleuchtung meines Laptops fährt bei Akkubetrieb runter – dadurch brauche ich länger um zu Lesen. Gibt es da Untersuchungen, wie viel Zeit es netto bringt oder kostet? 🙂
Bildschirmschoner sollten keine lustigen 3D-Effekte vorzeigen, wenn man gedankenverloren auf den Bildschirm starrt.
Ich lasse immer den OnDemand-Governour laufen, da der Lüfter selten hochdreht. Mein Rechner hat nicht viel zu rechnen. 🙂
Definitiv! Wenn der Chip im BIOS ausgeschaltet wird, dann verbraucht er auch keinen Strom.
Das spart auch Strom, allerdings nicht ganz so viel. Der Chip ist dann zwar inaktiv und sendet keine Signale oder versucht Netze zu finden, allerdings ist der Chip betriebsbereit. Also nicht aus, und verbraucht demzufolge Strom.
Ein ähnliches Problem haben übrigens Ethernet-Karten – ganz egal ob ein Kabel dran ist oder nicht, Strom verbrauchen die immer noch.
Der einzig sinnvolle Bildschirmschoner ist: Bildschirm in Standby!
~jug
Danke für die Aufklärung.
Ich war einer der Nutzer, die den Regler falsch interpretiert haben.
Super gut, aber :
Matthew arbeitet nicht bei Canonical, sondern bei RedHat.
siehe: http://www.advogato.org/person/mjg59/diary/106.html
Regards,
\sh
Ich frage mich woher die Entwickler diese Werte kennen/nehmen. Weil das schon wieder ganz anders aussieht, wenn die CPU weniger als 20W bei halber Taktrate verbraucht.
Bei meinem Laptop ist der Unterschied zwischen Idle und minFreq 3W und zwischen Idle und 2*minFreq 12W.
Aber unabhängig davon ist es egal, wieviel die CPU verbraucht, wichtiger ist das Gesamtsystem. Als Beispiel an meinem Laptop gemessene Werte, die CPU + GraKa + Laptop verbrauchen 23,5W im Idle (Desktop 7% Auslastung), 26,7W bei 800MHz (Volllast) und 35,3W bei 1600MHz (Volllast). Nun wird MP3 gerippt: 1 sec und ne Halbe wie im Beispiel oben.
Bei 800MHz sind es dann 1 sec 26,7W -> 26,7J
Bei 1600MHz 0,5 sec 35,3W und 0,5 sec 23,5W -> 29,4J
Somit habe ich im Powersave dann deutlich weniger Energie verbraucht als im Ondemand. Und ich wette, das ist bei 90% aller Laptops so.
Einfach mal selber Testen, bevor man blind irgendwelchen Theorien irgendwelcher Entwickler glaubt. 😉
So hab ich gemessen:
Asus M6Va, Pentium-M 1,8GHz, FSB 166MHz, DDR2 (533), Radeon x700
Xubuntu 9.04
mprime259 Torturetest 2 (max heat) für Volllast
Als root maxFreq begrenzt: echo „1596000“ > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
watch -n 1 cat /proc/acpi/battery/BAT0/state
Und dann bei Ondemand und Powersave gemessen und gemittelt.
Idle bei Ondemand bestimmt (hat dabei nicht hochgetaktet)
Argh! Zeilenumbruch ist ja wie im Forum 😀
shermann, danke für den Hinweis. Ich hatte aktuelle Infos gesucht, aber keine gefunden. Nur die genannte Info.
Christoph,
btw…du scheinst ja auch in Karlsruhe zu leben 😉
Da sind wir schon zwei 🙂 (wohn zwar in Au/Rhein, aber ist ja nur 12km entfernt)…
Falls Interesse besteht, kann man sich ja mal auf ein Hoepfner Weizen oder sowas treffen 🙂
Regards,
\sh
Dem Artikel nach könnte man den Schluss fassen, den PC der Umwelt zu Liebe auf „performance“ laufen zu lassen.
„ondemand“ würde nach der Energieverbrauchsüberlegung von Arjan van de Ven mehr verbrauchen als „performance“, da der Prozessor für seine Aufgaben länger braucht.
Wie kommst du zu dem Schluß? Die meiste Zeit seines Lebens langweilt sich die CPU, von daher sollte sie sich bei Nichtgebraucht heruntertakten.
Unter der Einstellung „performance“ schläft der Prozessor mehr. Daher auch meine Vermutung, dass man dabei Strom spart.
Macht es jedoch für den Energieverbrauch einen Unterschied auf welcher Taktung der Prozessor schläft, so würde mich interessieren wie groß dieser ist.
Danke für diesen Artikel! Leider finde ich im Netz widersprüchliche Angaben darüber, mit welcher Einstellung man am Besten den Lüfter beruhigen kann. Du schreibst hier „Powersave“, cywhale schrieb vor längerer Zeit „Konservativ“ („Mit dieser Methode werden die CPU-Frequenzen bei Belastung nicht mehr sofort auf Maximum gefahren und dann zurückgesetzt sondern langsam Stück für Stück erhöht und dann wieder Stück für Stück zurückgesetzt“, siehe http://www.cywhale.de/undervolting-amilo-1425-leise-unter-ubuntu/)
Ganz naiv gefragt: Wenn’s mir nicht um’s Energiesparen geht, sondern nur um möglichst wenig Lüfteraktivität, und mir bei meiner Officearbeit auch geringe Performance vollauf genügt, stelle ich dann nicht am Besten statt der Scalingmethode einfach fix die niedrigste Taktstufe ein?
Hallo MB, der Governor „Powersave“ entspricht letztendlich der geringsten CPU-Taktrate. Powersave taktet die CPU nie hoch. Wenn es um tatsächlich darum geht, die maximale Akkulaufzeit aus seinem Gerät zu kitzeln, dann sollte man wie im Artikel beschrieben „Ondemand“ benutzen, da hier die CPU so schnell wie möglich wieder in einen Schlafmodus fällt.
Und Du bist der nächste, der mit irgendwelchen Theorien daherkommt 😉
Nichts für ungut, aber dieser irgendeine Entwickler ist bei Intel fürs Powermanagement zuständig. Ich gehe davon aus, dass er -wenn er Werte aus der Luft greift- weiß wovon er redet und dass es eher darum geht ob es 29,9Watt oder 30,1 sind und nicht 30 oder 40.
Kritisch hinterfragen ist immer gut, bitte nicht missverstehen, aber in dem Fall denke ich dass die Quelle vertrauenswürdig ist 😉