Journal PowerTOP : Un outil pour réduire la consommation d'énergie sous GNU/Linux

Posté par .
Tags : aucun
0
14
mai
2007
Serait-ce l'un des premiers bénéfices de la nouvelle orientation d'Intel en faveur de Linux pour leur solutions mobiles ?
Arjan van de Ven, développeur chez Intel, vient d'annoncer la sortie d'un outil permettant d'identifier les applications et pilotes Linux les plus gourmands en énergie de façon très simple et lisible : PowerTOP liste ces mauvais citoyens en ordre décroissant, à la façon de l'utilitaire top(1). Il indique aussi le nombre d'éveils des processeurs par seconde et une estimation de la consommation actuelle en watt. Très user friendly, l'outil affiche même des conseils d'amélioration en fonction de votre configuration noyau (par exemple il recommande, si ce n'est déjà fait, d'activer NO_HZ, CONFIG_USB_SUSPEND, CONFIG_HPET et CONFIG_CPU_FREQ_GOV_ONDEMAND mais de désactiver CONFIG_IRQBALANCE et CONFIG_ACPI_DEBUG). Pas besoin d'être un développeur chevronné donc : tout utilisateur de GNU/Linux doté d'un PC portable devrait pouvoir utiliser cet outil (en revanche, il faut penser à signaler aux développeurs les problèmes de consommation d'énergie que cela permet de découvrir dans leurs logiciels ;).

Un noyau 2.6.21 (ou plus récent) est nécessaire au fonctionnement de PowerTOP, car celui-ci intègre le support des dynticks / tickless idle développé par Ingo Molnar et Thomas Gleixner. Cette fonctionnalité, à activer avec la nouvelle option de configuration CONFIG_NO_HZ, évite au noyau de s'éveiller hz fois par seconde s'il n'a rien à faire. PowerTOP devrait être utilisable sur les processeurs x86 non-Intel, quoique certaines informations (en particulier les informations remontées par l'ACPI concernant les C-states des CPUs) ne seront accessibles qu'avec les processeurs Intel dits « mobiles » (processeurs pour les portables).

PowerTOP détermine ces informations sur la consommation électrique en identifiant les applications et les pilotes qui « réveillent » le noyau (donc les CPUs) très fréquement (par exemple lorsqu'on utilise une mauvaise API pour surveiller un fichier, un répertoire, un changement d'heure, la connexion d'un périphérique USB, un changement de configuration réseau, lorsqu'un pilote est sollicité en permanence par des nuées d'IRQ, ...) ou les application qui réveillent régulièrement le noyau pendant trop longtemps. En effet, les fonctionnalités ACPI d'économie d'énergie ne sont réellement effectives que lorsque le noyau maintient les processeurs dans un des états (C-state) de repos (C3, ou mieux, C4) ; toute application qui sollicite le noyau très fréquemment (par un appel système par exemple) - même pour une tache très simple, rapide, sans gros calculs - conduit les CPUs à basculer en mode « non économique » (C-states C0 ou C1). L'ajout d'une fonctionnalité permettant d'identifier les applications les plus consommatrices d'accès disques (très gourmands en énergie) est envisagée.

Pour les développeurs, et de de façon plus synthétique : si votre application surveille (en anglais « poll », « monitor », ...) en permanence le système pour être avertie de changements d'états potentiels (par exemple l'arrivée de données dans un répertoire ou sur une socket) il est préférable d'utiliser les API (comme select(2), poll(2) et inotify(7)) permettant d'attendre passivement que le noyau la prévienne lorsque c'est utile plutôt que de réveiller le noyau plusieurs fois par seconde en vérifiant depuis l'application si le changement a eu lieu. Il convient aussi de regrouper autant que possible les lectures ou écritures sur le disque dur.

Voila quelques exemples (plutôt centrés sur le bureau Gnome) de problèmes déjà découverts - et en général, patchés - pour l'essentiel par les développeurs d'Intel :

  • Certaines options du noyau ont une influence considérable (voir les recommandation indiquées plus haut).

  • Certains logiciels se révèlent très gourmands, et réveillent le noyau des centaines, voir des milliers de fois par secondes alors que des solutions alternatives existent. Firefox, Evolution, gnome-power-manager, gaim (maintenant appelé Pidgin), ntpd (celui de ntp.org, pas openntpd, qui est mieux ;), dhcdbd, le mixer_applet2 de gnome, les pilotes intel i915 et ipw2100, les pilote appletouch (pour les macs) et ibm_acpi se sont révélés être de très grands consommateurs de ressources. Intel a écrit un patch dans la plupart des cas.

  • L'utilisation des graphismes 3D est souvent très gourmande (il faut donc éviter Beryl/Compiz lorsque son portable tourne sur batterie et qu'on veut économiser de l'énergie).

  • Une simple animation persistante dans le navigateur web force xorg à se réveiller régulièrement. Plus intéressant : le curseur clignotant (blinking cursor) du terminal gnome réveille xorg très souvent, même lorsque le terminal n'a pas le focus ou lorsqu'il est en arrière plan. Vous pouvez désactiver ce clignotement à partir des options de configuration de gnome-terminal.

  • Sur un macbook, on gagne une heure d'autonomie lorsqu'on décharge le module uhci_hcd (note : ce module est nécessaire pour avoir le support du clavier, mais ça donne une indication utile pour les développeurs).


Voila. À nous de jouer maintenant : avec cet outil nous pouvons très facilement repérer les gros consommateurs de ressources (pilotes et logiciels) sur nos distributions, avec notre matériel/pilotes, nos logiciels et nos configurations préférés. Apparemment les développeurs d'Intel ne se sont pas penchés sur le bureau KDE. Il serait aussi intéressant de voir l'influence de certaines options de configuration d'xorg et de comparer les divers pilotes (par ex. "ati" vs. "radeon" vs. "fglrx" ou bien "nv" vs. "nouveau" vs. "nvidia", et l'impact de leurs options de configuration respectives comme Composite, EnablePageFlip, etc.) par exemple. N'oubliez pas : pour que les résultats soient pertinents, il faut faire tourner PowerTOP avec un noyau 2.6.21 ou plus, activer CONFIG_NO_HZ, et ne pas brancher le portable sur le secteur (tourner sur la batterie).

Il nous faut remonter les problèmes dans les bugstrackers des logiciels et distributions concernés. Il y aura ainsi de fortes chances pour que les prochaines versions de nos distributions nous apportent quelques heures d'autonomie supplémentaires sur nos portables ou PDA (« plusieurs heures » est un objectif à portée de main, il me semble, si l'on considère aussi que ces distributions incluront un 2.6.21+ avec « dynticks », voir un 2.6.23 avec les corrections pour hal, et peut-être les patchs d'Intel) :)


À vos portables ! ;)
  • # top !

    Posté par . Évalué à 10.

    Il est beau le journal, mais il mériterait d'être une dépêche
    • [^] # Re: top !

      Posté par (page perso) . Évalué à 6.

      Je l'ai moi aussi trouvé très bon, et j'ai même tout compris, bravo !

      Et pour ne pas mettre un commentaire pour rien, un message d'un développeur KDE qui en parle (plus ou moins) :
      http://vizzzion.org/?blogentry=709

      Donc je pense que KDE va aussi en bénéficier.
  • # Bravo!

    Posté par . Évalué à 9.

    Wow, super journal, tu devrais même proposer une news. Si une mise à jour de 2.43 vers 2.44 d'un logiciel fais la première patch, alors tu mérites carrément une publication toi aussi.
    • [^] # Re: Bravo!

      Posté par . Évalué à 3.

      Bravo pour le journal, news en cours sur le sujet. Merci à l'auteur.
  • # Ordres de grandeurs

    Posté par . Évalué à 5.

    - The GAIM instant messaging client checks every 5 seconds if you have been idle more than 10 minutes, to mark you away in the IM networks you're connected to.
    (...)
    - Matthew Garrett has provided a patch to the apple macbook touchpad driver to stop it from doing hundreds of wakeups per second.

    Un driver qui réveille le processeur des centaines de fois par secondes, je comprends bien que c'est mal. Mais je m'étonne qu'1 vérification toutes les 5 secondes soit à ce point consommatrice d'energie ! Dommage que je n'ai pas de portable pour constater par moi même.

    Quoi qu'il en soit, ce logiciel est une très bonne idée ;)
    • [^] # Re: Ordres de grandeurs

      Posté par . Évalué à 7.

      Tout dépend, si le réveil est long (si on réveil régulièrement le système pour faire une opération un peu lourde, ou carrément pour accéder au disque dur) l'effet s'en ressentira très vite, même si on ne se réveille pas a une fréquence démente. PowerTOP prends cet aspect en compte (il pondère le nombre de réveils et leur durée).
    • [^] # Re: Ordres de grandeurs

      Posté par . Évalué à 2.

      j'en sais rien mais si le reveil empeche une mise en veille du systeme total ?
  • # enfin...

    Posté par . Évalué à 3.

    on va peut etre avoir des batteries sous linux qui tiennent aussi longtemps que sous windows. C'est une excellente nouvelle! Vivement que tous les changements soient inclus dans les differentes distributions. La prochaine serie d'update (niveau distribution) risque de faire de tres nombreux heureux.
    • [^] # Re: enfin...

      Posté par . Évalué à 5.


      aussi longtemps


      Plus ?
    • [^] # Re: enfin...

      Posté par . Évalué à 4.

      J'ai un ThinkPad X31.
      Ma batterie tient aussi longtemps sous linux que sous windows.
      Un peu moins de 2h parce que c'est pas bien de completement décharger la batterie... sinon j'doit faire un peu plus de 2h sous linux.
      Ca tient 2h en désactivant le wifi (pas de wifi chez moi) et en utilisation bureautique + surf sans flash (abusif qui prend 100% du cpu).

      Je suis assez content, le pc est plutot réactif meme avec un vieux 4200tr/min.

      Mais j'vais faire un tour dans mon noyau et faire le ménage... j'vais peut etre grapiller quelques minutes....
      • [^] # Re: enfin...

        Posté par . Évalué à 1.

        Rahhh Lovely les thinkpads et particulièrement le X31.

        C'est vraiment la rolls des portables:

        très solide (titane magnesium) et hyper rigide
        bien conçu
        design intemporel (et très beau mais ce n'est pas partager par tout le monde;-) )
        fonctionnalités qui tue (think led)
        bonne autonomie
        le trackpoint de qualité
        le touché du clavier (et sans touche windows sur les pre-lenovo)
        bien supporté par linux
        la garantie 3ans international de base

        http://www.thinkwiki.org/wiki/Category:X31

        Pour les ceusses à la recherche d'un ultra portable d'occase, je vous conseille vivement le X31 (et dérivé) qui se trouve sur les sites de ventes entre 300 et 400 Euros.
        Ca peut paraitre cher mais la qualité est vraiment au dessus des portables full plastoque, full clinquant et full marketing que l'on peut trouver actuellement.
        • [^] # Re: enfin...

          Posté par (page perso) . Évalué à 1.

          Je confirme tout ca, possédant un X41 depuis un an et demi. Clavier tip top notamment.
          Seul point noir: pour un ultraportable, on apprécierait une autonomie plus longue: 1h40-1h50 chez moi je trouve ca peu. Ca se corrige avec des batteries 9cellules ceci étant.
          Peut etre que PowerTOP changera justement un peu la donne de ce coté la en plus.

          Et 300/400¤ c'est pas tres cher, étant donné que neuves ces machines sont pas vraiment bon marché (1400¤ environ le X61 sur internet).
    • [^] # Re: enfin...

      Posté par (page perso) . Évalué à 1.

      C'est amusant, c'est la première fois que j'entends dire que les batteries dure plus longtemps sous Windows que sous Linux !!!
  • # Compléments

    Posté par . Évalué à 10.

    Quelques compléments en vrac :

    * Concernant le coût des accès disques : ça dépend, évidement, de l'utilisation des caches.
    * Le driver fglrx d'ATI est tout pourri (ah bon ? ;). Il semblerait que le driver propriétaire de NVIDIA ne soit pas brillant non plus.
    * Lorsque vous faites vos mesures, laissez vos applications favorites mouler passivement en arrière plan. Inutile de constater que mencoder ou Blender en plein calculs sont gourmands : on le sait déjà, et c'est normal. De même les mesures sont plus intéressantes pour des logiciels résidant longtemps en mémoire (par exemple Thunderbird, Amarok, Lifarea, les daemons comme d-bus, esd ou avahi, etc.) que pour les logiciels qui ne tournent pas longtemps sur l'ordinateur (comme ls, cp, mv, ps, find, & co).
    * Lorsque PowerTOP vous indique qu'une application est très gourmande alors qu'elle n'a pas de raison évidente de travailler (elle tourne en arrière plan, par exemple), vous pouvez savoir ce qu'elle fait avec strace -p $(pidof monapplication) et ltrace -p $(pidof monapplication)
    * Beagle (beagled précisément) peut être extrêmement gourmand
    * Annoncé il y a seulement 3 jours, PowerTOP est déjà intégré dans les versions de développement de Debian, Mandriva et Gentoo.
    * Une nouvelle version (1.1) de PowerTOP vient de sortir. Le logiciel est maintenant capable de recommander la désactivation des daemons connus pour être gourmands et peu utiles, lorsqu'il détecte leur présence.
    * L'outil blktrace permet déjà de surveiller les I/O disques ( http://www.gelato.org/pdf/apr2006/gelato_ICE06apr_blktrace_b(...) )

    Quelques autres paramètres à prendre en compte pour améliorer l'autonomie de son portable :

    * Préférer les portables avec de petits écrans (indication relevée sur l'IRC #powertop, où Keith Packard dit qu'il a 7h d'autonomie sur son portable à écran 10", et Arjan Van de Ven arrive à 8h ! ), ou réduire la luminosité si c'est possible.
    * Les périphériques USB sont souvent alimentés par ce biais, et parfois très gourmands pour d'autres raisons encore. Les débrancher lorsqu'on ne s'en sert pas.
    * Complètement désactiver le bluetooth et le wifi lorsqu'ils ne sont pas utilisés (et décharger les modules noyau qui les utilisent).
    * Éviter autant que possible d'utiliser le lecteur de CD ou DVD
    * Et bien sûr les autres trucs indiqués dans le journal (désactiver la 3D/Beryl, le curseur clignorant de gnome-terminal, config du kernel 2.6.21, etc...)
    • [^] # Re: Compléments

      Posté par . Évalué à 4.

      Complètement désactiver le bluetooth et le wifi lorsqu'ils ne sont pas utilisés (et décharger les modules noyau qui les utilisent).

      C'est typiquement le genre de truc qui devrait etre configurable de facon user friendly mais encore faudrait il pouvoir degager le module du noyau sans trop de probleme (par exemple je ne suis jamais arrive a enlever completement les modules bluetooth du mon portable).

      Pourquoi pas une interface posant la question sur les periphs a degager du kernel lorsque l'on est sur batterie. Il semblerait que cela soit une truc plus que faisable maintenant. Le jour ou cela va fonctionner sur un portable pour l'utilisateur lambda ca va etre un reel changement!
  • # Pendant qu'on parle d'énergie...

    Posté par . Évalué à 2.

    J'aimerais poser une question j'ai un FujitsuSiemens Amilo M6450G et histoire de gagner un peu plus en autonomie j'aimerais baisser la luminosité quand il n'y a pas d'actions après 5 à 10 secondes.

    Cependant, acpi ne supporte la fonctionnalité brightness pour mon écran alors que je peux la régler à l'aide des touches HotKeys.

    Donc ni aurait-il pas un démon qui pourrait baisser la luminosité en simulant l'appuie de ses touches??
  • # Powertop sous Debian

    Posté par (page perso) . Évalué à 1.

    Hello

    Quelqu'un aurait t'il un paquet du noyau correctement configuré pour faire tourner powertop voici ce que j'obtiens :


    Power usage (ACPI estimate) : 1.1 W (0.8 hours left)
    No detailed statistics available; please enable the CONFIG_TIMER_STATS kernel option

    Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.
    This option is required to get any kind of longer sleep times in the CPU.


    Merci de votre aide.
  • # 3D

    Posté par (page perso) . Évalué à 2.

    Merci,

    J'ai récamment acheté un portable (macbook 13") et mis linux dessus et c'est vrai que l'autonomie n'est pas celle promise sur le site d'apple. Avec une batterie pleine j'ai en général une estimation de 1h45 environ. Je vais donc lorsque j'aurais le temps cester cet utilitaire qui a l'air prometteur.

    Cependant je me pose des questions concernant la 3D. Mac OS X est je pense prévu au maximum pour économiser l'énergie des portables (enfin j'espère) et on a quand même droit a des effets intéressants comme exposé ou les ombres sous les fenêtres.
    Pourquoi sous Linux cela consommerait plus ? Un problème d'optimisation de Beryl/Compriz encore jeune, d'architecture Xorg ? Ou peut être que je me fais des idées et que ca consomme autant sous MacOS ...
    • [^] # Re: 3D

      Posté par (page perso) . Évalué à 0.

      À la lecture du journal j'aurais tendance à penser que les coupables sont dans l'ordre:

      1. le noyal
      2. les drivers
      3. Xorg
      4. beryl & al (encore un peu jeune)
      5. ton DWM

      Ça fait quand même un bon paquet de paramètres/facteurs à corriger alors que du côté d'Apple, j'ose espérer que les choses sont beaucoup mieux fichues pour au moins le 3,4 et 5 voire le 2 aussi.

      N'ayant pas d'apple, je ne saurais en dire plus ;)
      • [^] # Re: 3D

        Posté par . Évalué à 4.

        En effet. D'après ce que j'ai compris (c'est assez flou pour moi, c'est pour ça que je ne détaille pas ce point dans le journal même) il y a des bugs dans les drivers (constatés et en voie de résolution avec les drivers libres radeon et intel, mais peut-être présents aussi dans les drivers propriétaires), des problèmes d'architecture de Mesa/Xorg, et d'implémentation dans Beryl.

        Pour ce que j'en ai compris, pour que le rendu des applications 3D - du moins celles utilisant OpenGL - soit synchrone avec la fréquence de rafraichissement de l'affichage (par ex. 60Hz ou 70Hz), et éviter des effets de bavures, on utilise une interuption appellée VBLANK (pour "vertical blank", cf. http://en.wikipedia.org/wiki/Vertical_blanking_interval ) qui déclenche le rendu synchrone au raffraichissement (donc dans les 60/70 ou plus interuptions par seconde, ce qui est beaucoup). Ce serait un défaut d'architecture de Mesa/Xorg, et la page "known.php" du site de PowerTOP indique qu'une reflexion est engagée sur ce point (notes que Keith Packard et Eric Anholt , deux "poids lourds" de xorg travaillent chez Intel, ça donne des perspectives).

        En outre les drivers libres Intel ont un bug (corrigé dans le git) qui fait que ce système de synchronisation est actif même lorsqu'on ne rends que de la 2D (c'est alors totalement inutile), cf. sur ce point aussi la page "known.php".

        Les développeurs du pilote radeon libre travaillent aussi sur un problème similaire dans leur driver : http://www.mail-archive.com/dri-devel@lists.sourceforge.net/(...) (les développeurs Intel, pas bégeules, leur donnent un coup de main : http://www.mail-archive.com/dri-devel@lists.sourceforge.net/(...) ).


        Et finallement, Beryl est gourmand. Ca donne par exemple des choses comme ça : http://www.bughost.org/pipermail/power/2007-May/000021.html

        Le driver propriétaire NVIDIA se comporte mal aussi : http://www.bughost.org/pipermail/power/2007-May/000015.html
  • # laptop-mode ?

    Posté par (page perso) . Évalué à 2.

    Je suis étonné que personne ne mentionne laptop-mode dans la bataille de la gestion de l'énergie. Il me semble que ce mode de fonctionnement du noyau est un moyen non négligeable de réaliser quelques menues économies d'énergie. Dans mon cas personnel, c'est flagrant en tous cas. Bien sûr, il n'y a pas de miracle mais un noyau épuré et configuré aux oignons (grâce à/avec powertop), un nombre limitté de démon qui tourne, une fréquence de fonctionnement du noyal réglé au plus bas, un écran ultra-pas-bright et laptop-mode, on arrive à un petit miracle.

    Mon laptop tiens au moins aussi longtemps que le même sous windows voire plus. C'est sûr, c'est pas un gestionnaire de fenêtres ultra-eye-candy ou un navigateur top-tendance que j'utilise, seulement du GNU Screen et du GNU Emacs (et une touche de konqueror de temps en temps). Mais ça me suffit :)
    • [^] # Re: laptop-mode ?

      Posté par . Évalué à 3.

      laptop-mode est deja par defaut dans toutes les distros j'ai l'impression.
      • [^] # Re: laptop-mode ?

        Posté par (page perso) . Évalué à 3.

        laptop-mode a de très fortes chances d'être dans toutes les distributions GNU/linux pas trop vieilles puisque laptop-mode fait partie du noyau linux de base ;) Par contre, il est loin d'être activé par défaut, à raison d'ailleurs.
    • [^] # Re: laptop-mode ?

      Posté par . Évalué à 0.

      bizarre , j'ai crus que PowerTop etait un outils de profilling du code pour optimisé la problematique de la gestion d'energie , et pas un simple gestionnaire d'energie.

      je peut etre mal lue , ou pas ....

      Bien a toi.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.