Rolinh

Rolinh' release

Palier Au Problème De Consommation D'énergie Des Noyaux Linux 2.6.38 à 3.2

Dès la version 2.6.38 du noyau Linux, de nombreux utilisateurs d’ordinateurs portables à base Intel ont pu voir une diminution drastique de l’autonomie de leur engin. En cause, une régression au niveau de la consommation d’énergie du noyau Linux.

Le problème est connu mais ne devrait être corrigé que dans la version 3.3 du noyau. Une des causes est due à une non-détection automatique du PCI-Express Active State Power Management (PCI-E ASPM). En attendant le noyau 3.3, on peut forcer son activation en ajoutant une option à la ligne de boot du noyau dans GRUB de sorte qu’elle ressemble à ça (pour grub-legacy):

kernel /vmlinuz-linux root=/dev/sda6 ro pcie_aspm=force

Mais ce n’est pas tout! En effet, d’autres options, qui étaient activées par défaut auparavant,  se sont vues désactivées. Ces options ne seront utiles que si vous utilisez le pilote libre Intel. C’est mon cas avec l’Intel Core i7-2620M de mon portable et son HD3000 intégrée. La raison de leur désactivation serait dues à certains bugs rencontrés parfois au niveau de l’affichage. Pour ma part, il n’en est rien et les performances semblent même être légèrement meilleures.

Les trois options sont les suivantes:

  • i915.i915_enable_rc6=1 : permet au GPU de rentrer dans une phase de basse consommation énergétique lors d’inactivité
  • i915.i915_enable_fbc=1 : compression du framebuffer
  • i915.lvds_downclock=1 : diminution du taux de rafraîchissement de l’écran LVDS

A vous donc de jouer avec ces options afin de voir si certaines posent problème. Comme chez moi, tout semble bon, je les ai toutes activées. Ainsi, ma ligne de boot du noyau ressemble à ceci:

kernel /vmlinuz-linux root=/dev/sda6 ro pcie_aspm=force i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1

Le résultat chez moi? Une autonomie qui arrive au même niveau que sous Windows! Je suis donc passé d’une autonomie d’environ 4h30 à une autonomie d’environ 7h30. C’est loin, très loin, d’être négligeable! De plus, mon CPU a perdu en moyenne 10°C pour se stabiliser aux alentour de 42°C quand il n’est pas trop sollicité.

Ceux souhaitant plus de détails peuvent aller consulter l’article de Phoronix sur lequel je me suis basé.

EDIT: un peu plus de détails est apparemment nécessaire.

Pour grub legacy (grub 1), il faut éditer le fichier /boot/menu.lst et ajouter les options à la ligne qui correspond à celle que j’ai donné en exemple.

Pour grub 2 (la dernière version de grub qui est notamment utilisée dans Ubuntu depuis la 9.10), les options peuvent s’ajouter en éditant /etc/default/grub et ajouter cette ligne à la fin:

GRUB_CMDLINE_LINUX_DEFAULT="pcie_aspm=force"

Les options supplémentaires peuvent s’ajouter également. Une fois ce fichier modifié, il faut mettre à jour la configuration de grub 2 via la commande update-grub (pour les distributions Debian et dérivées comme Ubuntu et Linux Mint) ou grub-mkconfig (pour Archlinux),  à lancer en root évidemment. En revanche, je n’ai pas pu vérifier car je n’utilise pas grub 2. A noter qu’il existe un logiciel qui permettrait de faire cela graphiquement. Je vous laisse consulter la documentation d’Ubuntu-fr à propos de grub-customizer.