battery_log_combined

Improve energy consumption with Ubuntu and Lenovo IdeaPad Z370 (sandy bridge-chipset)

I use my laptop (Lenovo Z370, with Ubuntu 11.10) a lot in the college. Unfortunatly there aren’t enough plugs in the wall for all students and I’m not willing to bring a plug board with me every time. So my approach to the problem was to improve the energy consumption of my laptop. I already had an energy plan with display dimming after two minutes and deactivate bluetooth by default (I don’t have any bluetooth gadget, so why bother).

There are some rumors that Ubuntu 11.04 and 11.10 consume a lot more energy than the previous versions and slightly more than windows (see for example here). So I looked for a way to improve my battery life.

Down with the power consumption!

While I was google-ing I found this post (Linuxundich.de, German) in which the author suggested to use the “i915.i915_enable_rc6=1″-Kernel parameter (if you have a sandy bridge chipset). Based on his suggestions I made my own test cases and logged everything with a script.

I looked for some different Kernel-parameter setups to test and decided to test the default kernel parameter, the recommended kernel parameters and not reccommended but suggested kernel parameters:

1) quiet splash
2) quiet splash pcie_aspm=force acpi=noirq i915.i915_enable_rc6=1
3) quiet splash pcie_aspm=force acpi=noirq i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1

A test

My target was to read the current power consumption from the battery every five seconds and save this in a file for later analysis. Here is my test setup: (test_setup) It’s my typical college idle setup. Thunderbird, dropbox, Firefox with facebook and so on.

Scripting and gnuplot

With my script (it’s here battery_log) I was able to read the current consumption and write it in a file. Afterwards the script generated a chart with the command line tool gnuplot (here my article about gnuplot). The chart looked like this:

After the third graph I created another one, based on the three logfiles for comparison. (The source files and gnuplot commandfiles are at the bottom, in a zip file).

The new combined graph looked very interesting, because you could see the difference between the three parameters clearly:

By default my laptop used around 13 Watt with backlight lit and around 11 Watt when backlight is off. With the new Kernel-Parameter the usage went down to around 9 Watt with backlight and 7,5 without. So, It’d be clever to use one of the kernel-parameter sets. But which one?

Who is the fairest of them all?

You can easily distinguish the two sets, by their middlevalue and amplitudes: The green line is a little bit higher than the red one on average but the red one has higher amplitudes… So which on used the least amount of energy? With which set does my battery last the longest?

To answer that question I modificated my script (see in the zip files) and read the remaining battery capacity every 5 seconds till the laptop shut down because of low energy. I did this again three times, one for every set of parameters with the same test_setup as above (obiviously the laptop was loaded every time before the test).

Again a made a graph:

Battery life with different set of kernel-parameter:

1) 3 hours, ten minutes (100 %)
2) 5 hours (158 %)
3) 5 hours, ten minutes (163 %)

Conclusion:

I will use the set 3) because of the bonus battery life. In the aforementioned post the authos spoke about grafic-glitches, but they didn’t happen to me so everything is fine. I would suggest that everyone with a sandy bridge chipset at least give it a try.

Links:

battery_capacity_log, battery_log (all my files from the test)
linuxundich.de (gave me teh initial idea)
williambrownstreet.net (some additional information)
stackoverflow.com (how to intepret the battery file in linux)

19 thoughts on “Improve energy consumption with Ubuntu and Lenovo IdeaPad Z370 (sandy bridge-chipset)”

  1. Ich vermute du beherrscht die deutsche Sprache und kannst mir weiterhelfen. Ich besitze ebenfalls den Lenovo Z370 mit Ubuntu und bin mit der Akkuleistung derzeit nicht zufrieden. Um den Kernel-Parameter einzustellen muss ich erstens zu.
    sudo gedit /etc/default/grub

    und hier die Zeile umändern:

    GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash pcie_aspm=force acpi=noirq i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1″

    habe bisher keine großartige Veränderung bemerkt, aber etwas verbessert hat sich die Leistung. Ist diese Einstellung richtig? Hoffentlich kannst du mir weiterhelfen
    PS: Guter Artikel

    1. Hallo Victor,

      Danek für das Lob :-)
      Dein Problem betreffend:
      Du musst nach dem Einstellen der Kernel-Parameter in dem Grub Konfigurations-File noch folgenden Befehl ausführen:
      sudo update-grub
      Erst danach werden die Einstellungen beim nächsten Starten genutzt. Das sollte eigentlich schon helfen. Wenn das nicht geholfen hat kann man noch mit dem Programm powertop ein bisschen was rausholen (z.B. am Bluetooth-Adapter wenn der nicht genutzt wird)…

      Hast du sonst ähnliche Probleme wie ich mit dem Laptop?

      MfG Torben

  2. Erstmal Danke für die schnelle Antwort!
    Hatte vergessen zu schreiben, dass ich sudo update-grub natürlich ausgeführt habe.
    Werde Powertop auf jeden Fall probieren, vielleicht verbessert sich die Akku Leistung noch etwas. Das IdeaPad Driver Package werde ich auch noch installieren. Die Zusatztasten Volume Up and Down funktionieren bei mir nicht optimal. Meiner Meinung nach ist auch der Lüfter etwas laut, aber auf keinen Fall sehr störend.

    Mfg Victor

    1. Hmm, wenn update-grub schon gemacht wurde… Also die gemessenen Akkulaufzeiten bezogen sich auf “ich lasse den Laptop in Ruhe”, die Programme laufen zwar, aber ich mache in dem Sinne nichts. Was für Laufzeiten hast denn du? Bzw, was gibt deine Battery an Verbrauch aus? (lässt sich mit powertop auch einfach auslesen, oder eben meine Skripte ausführen)

  3. Verbesserungen sind schon zu erkennen. Weiters habe ich jetzt Jupiter installiert.
    Powertop hab ich auch schon drauf ,aber leider kann ich den Stromverbrauch nirgends auslesen. Ich werde eins von deinen Skripten probieren.

    1. Ich habe gerade noch mal rumgeschaut: Es gibt eine noch einfachere Möglichkeit den aktuellen Verbrauch auszulesen: Such mal im Unity-Dashboard (Also die Windows-Symbol Taste) nach “Energiestatistiken” Die zeigt ziemlich genau das an, was ich auch ausgelesen habe. Vielleicht hilft dir das weiter?

  4. Hab Powerstatistics probiert und hab herausgefunden, dass die Rate bei ausgeschalteten Wlan und Bluetooth zwischen 11-13 W liegt. Diese Werte sind doch etwas über deinen. Aber es hat mir auf jeden fall witergeholfen. Danke!

  5. Hi,
    Ich schreibe auch mal auf deutsch, weil ich grad in ner Vorlesung sitze;) Also: Ich habe mal deine parameter ausprobiert und komme auf keine wirklich große Veränderung. Das kann denke ich an meiner Ubuntu Version liegen – 12.04. Ich habe gelesen, dass dieses mit rc6 da mittlerweile default ist. Mich wundert aber, dass ich trotzdem nur maximal 3:20 h Akkulaufzeit habe. Unter Windows, was ich auch noch aufm Notebook habe, hab ich bis zu 5.30 h. Unter powertop entlädt sich mein Akku mit um die 16 Watt.

    Zu meiner Frage: Kriege ich auch unter 12.04 den Laptop dazu genauso wenig zu ziehen, wie ihr das geschafft habe.

    Ansonsten super blog, war sehr lehrreich.

    Würd mich auf ne Antwort freuen, Vielen dank.

    1. Hallo Burne,
      Danke für das Lob. Zu deiner Frage:
      Der unterschiedliche Stromverbrauch kann von der Hardware her kommen. Als ich den Eintrag geschrieben habe wusste ich nicht, dass es so viele Unterschiedliche Versionen des Laptops gibt.
      Mein Laptop hat eine SSD (die weniger Strom verbraucht als eine HDD), “nur” einen Core i3 und keinen i5 oder i7. Außerdem (und dass kann viel Einfluss haben) nur die interne Intel HD Grafikkarte.
      Ubuntu und die mobilen Nvidia Chips kommen nicht so gut zusammen klar, zumindest bisher.

      Ich hatte gerade die Möglichkeit einen Lenovo T520 (mit Nvidia Grafikchip) mit riesigem Akku zu testen: Windows 7 -> 7 Stunden Laufzeit. Ubuntu(12.04)-> Ganz knapp 1,5 Stunden…

      Was hast du für eine Hardware Konfiguration?

  6. Hi,
    wow super schnelle Antwort.
    Also ich habe einen i5 drin und eine nvidia 540m und leider gottes noch eine recht langsame HDD. Ich hoffe ja, dass ich bald mir eine schicke SSD zulegen kann und dafür auf mein Laufwerk verzichten kann. Ansonsten wie du auch 4GB DDR3 Ram, ob es jetzt DDR3 ist weiß ich nicht genau, ich geh mal davon aus ;)

    Aus deiner Antwort schließe ich mal, dass es größtenteils an Ubuntu 12.04 liegt, weil man darf ja nicht vergessen 3:20h ist ja jetzt nicht soooo schlecht.

    Vielen Dank für die schnelle Antwort nochmal.

    1. Hmm, ich weiss nicht. Leider habe ich gerade nicht die Möglichkeit Ubuntu 12.04 auf dem Ideapad z370 auszuprobieren, nur dann hätte man sprechende Werte…
      Was ich bisher gelesen habe ist auf jeden Fall, dass Ubuntu mit dem Nvidia Mobil-Chip nicht gut klar kommt (Stichwort “optimus”). Vielleicht ist das Projekt “Bumblebee” ja für dich interessant

  7. Hello man,

    you are truly great and your howto really helped me (i mean your post in here http://ubuntuforums.org/showthread.php?t=1999543), but i have a problem with the step 6. copy z370Power to /usr/lib/pm-utils/power.d. Well it seems there is not such file in this directory….am i supposed to create a new one or something? I am quite a noob as far as computers are concerned. Anyway I very appreciate your help and my battery suddenly has 4 hours of life (what a change! before it was only about 1,5 hour) and of course the volume keys finally works as they are supposed to.
    Thanks for reply.

    Daniela

    1. Hi I’m deeply sorry, but that’s not my post. But on the other hand I can help you with your problem:
      “step 6. copy z370Power to…”
      On the original post on there is a link behind the z370Power. Just follow the link and copy the text.
      Open a terminal and type: (You’ll have to insert your password)

      sudo gedit /usr/lib/pm-utils/power.d/z370Power

      Paste your copied text into the file and close the text editor.
      Afterwards type

      sudo chmod 755 /usr/lib/pm-utils/power.d/z370Power

      This should do the magic.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>