13/05/2010

Linux – Laptop – Ultimate Powersaving !

Le but de cet article est de faire économiser de la batterie à votre laptop sous Linux.

Avec quelques tips, c’est possible très facilement.
On peut gagner 1h de batterie avec quelques méthodes simples.

Follow the white rabbit

Outils indispensable

Déjà il va vous falloir vous munir d’un outils indispensable développé par intel nommé : powertop
Le gars qui cherche à économiser de la batterie et qui n’a pas installé powertop c’est vraiment un gros naz :)

emerge -av powertop
apt-get install powertop

Lancez powertop en root, et suivez le guide, tout est expliqué directement dans l’interface ncurses.

Désactive le superflu dans l’bios petite loutre

Il convient d’aller désactiver les choses dont vous ne vous servez jamais dans le bios.
Exemple :

  • Désactiver le bluetooth
  • Désactiver le wake on lan sur eth0
  • Désactiver l’extension Wimax de votre carte wifi.
  • Désactiver le lecteur CD si vous ne vous en servez jamais.
  • Etc … etc …

    ça permet d’économiser déjà pas mal de batterie.

    Modifies ton sysctl.conf petit castor

    Quelques réglages à avoir dans le sysctl.conf

    modifier : /etc/sysctl.conf

    vm.laptop_mode = 5  # Activating laptop mode, power friendly I/Os
    vm.dirty_writeback_centisecs = 2000
    kernel.nmi_watchdog = 0
    vm.swappiness = 5

    Le writeback du cache du système de fichiers sur le disque dur se fait assez fréquemment. Pour réduire la consommation, il suffit de le faire moins fréquemment.
    Par defaut le writeback est à 500

    fout ça dans ton /sys petit scarabée

    echo 10 > /sys/module/snd_hda_intel/parameters/power_save
    echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
    echo min_power > /sys/class/scsi_host/host1/link_power_management_policy

    Actives le power management dans ta carte wifi Intel petite fourmis des bois

    iwconfig wlan0 power on

    Mon petit script à la con, lis ça petit phasmid

    #!/bin/bash

    #echo 5 > /sys/bus/pci/drivers/iwlagn/*/power_level
    echo 5 > /sys/bus/pci/drivers/iwlagn/0000\:03\:00.0/power_level

    echo 1 > /sys/devices/system/cpu/sched_mc_power_savings

    echo 1500 > /proc/sys/vm/dirty_writeback_centisecs

    echo 5 > /proc/sys/vm/laptop_mode

    # passe en economie d'energie la carte son
    echo 10 > /sys/module/snd_hda_intel/parameters/power_save
    echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
    # desactive le wake on lan sur eth0
    ethtool -s eth0 wol d
    # met la luminosité à 30%
    xbacklight -set 30
    # Passe le frequency scaling en "on demand"
    echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

    ## Spécifique thinkpad x300 ou equivalent
    # desactive le bluetooth
    echo disable > /proc/acpi/ibm/bluetooth
    # desactive le modem 3G
    echo disable > /proc/acpi/ibm/wan
    echo min_power > /sys/class/scsi_host/host0/link_power_management_policy

    Le paramètre sched_smt_power_savings sous /sys/devices/system/cpu/ contrôle le multithreading. Par défaut, il vaut 0 pour des performances optimales
    Mettez le à 1 pour avoir plus de batterie, ainsi vous ne vous servirez du second cœur de votre cpu qu’en cas de besoin ! :

    echo 1 > /sys/devices/system/cpu/sched_smt_power_savings

    Conclusion

    Cet article n’est pas complet car j’ai également des optimisations dans mon kernel, mais ça peut déjà vous donner une bonne base de travail.
    N’hésitez pas à faire des bench avec powertop à CHAQUE modification pour voir ce que ça change sur votre consommation en Watts.

    1. khemael
      | #1

      Question Curiosité : Pour le Suspend2Ram, tu utilises quoi ? 😮

    2. | #2

      @khemael
      J’active le suspend2ram dans l’kernel

      Et j’ai un alias dans mon bashrc :

      alias suspend=”echo mem > /sys/power/state”

      Pourquoi je n’ai pas mis cette commande à la détection de l’evenement acpi “lid off” de mon laptop ?
      Parceque ça m’emmerde que mon laptop passe en suspend to ram lorsque je le ferme.
      Je préfère qu’il y passe quand je lui tappe la commande suspend, au moins je ne le suspend jamais par erreur.

    3. khemael
      | #3

      Même chose ici, si ce n’est que le driver “nvidia” (le sale, celui tout propriétaire et diabolique) en version 190.xx.xx avait énormement de mal a revenir en sortie de suspend2ram. Un passage en 195.x semble avoir réglé ca.

    4. | #4

      J’utilise que des drivers libre au niveau des cartes graphique and co.
      Donc je ne peux pas comprendre ton soucis.
      Désolé.

    5. | #5

      Petit tips en plus pour désactiver votre dent blue !

      hciconfig

      hci0: Type: USB
      BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
      DOWN
      RX bytes:0 acl:0 sco:0 events:0 errors:0
      TX bytes:0 acl:0 sco:0 commands:0 errors:0

      si votre hci0 est up il vous consome de la batterie.
      Éteignez le !

      hciconfig hci0 down

      Vous pouvez aussi désactiver le module kernel :

      rmmod hci_usb

    6. PatDoc
      | #6

      Merci pour ces astuces !!! Cool !!

    7. StalkR
      | #7

      Super article ! Pour plus d’infos y’a aussi http://lesswatts.org

      Mais même avec tout ça, sur un EeePC 1005pe à juste faire du web/ssh j’arrive péniblement à 6h d’autonomie, quand sous windows 7 j’ai 10h :( Vous, de meilleures expériences ?

    8. | #8

      Merci, je vais juste éviter la dernière commande parce que sans mes deux processeurs j’ai du mal à faire tourner Firefox (rooh le troll).

      (edit : Je n’ai pas de /sys/bus/pci/drivers/iwlagn sur ma Ubuntu 10.04…)

    9. | #9

      Sympa ton troll Dd :)

    10. | #10

      @StalkR désolé je n’ai jamais testé d’os non libre sur aucune de mes machines, je ne peux donc pas comparer.

    11. | #11

      @PatDoc you’re welcome.

    12. beatnick
      | #12

      Il manque :

      $ hdparm -B1 /dev/sda

      Qui permet d’économiser sur le disque dur (cf man hdparm)

      Merci pour les tuyaux.
      Bonne,
      beatnick

    13. Thierry
      | #13

      Effectivement intéressant ! merci…
      Juste une question pratique : comment faire un bench “propre” et “efficace” de son autonomie ? Vous avez un outil à recommender pour éviter de trop longues attentes entre deux réglages ?

    1. Pas encore de trackbacks