Aller au menu - Aller au contenu

Icône La gestion d'énergie sous Linux

Mise à jour : 28/03/2010
151 visites depuis 7 jours, classé 480/795
Je vais vous parler de la gestion d'énergie sous Linux. Pourquoi ? Pour protéger l'environnement ! Mince, ça ne vous a pas convaincus ? Ça peut aussi servir à : réduire le bruit de votre ordinateur, le transformer en ordinateur silencieux, réduire votre facture d'électricité, augmenter vos performances (dans certains cas) ou plus simplement allonger la durée de vie de votre matériel en réduisant la température de ses composants.

Préparer le terrain

NOTE: Pour: Préparer le terrain, Le processeur, La carte graphique, Le chipset, 99% des linux intègre à ce jour ces modifications (Notamment la compilation du noyau n'est plus à faire, mais vous pouvez vérifier l'activation des éléments via les commandes)!

Tout d'abord, commençons par nous demander ce qui consomme le plus. Pour voir cela, il suffit d'ouvrir notre ordinateur et de trouver tous les composants qui dégagent de la chaleur et qui ont peut-être un ventilateur en plus.
Pour tous les ordinateurs, ce qui consomme beaucoup c'est le processeur. Ensuite on peut penser à la carte graphique, puis au chipset, et enfin aux autres éléments composant l'ordinateur.

Pour commencer, il vous faut : une distribution Linux, le noyau Linux (et savoir le compiler : référez-vous à Google pour savoir comment procéder, je vous conseille ce lien qui est particulièrement bien fait: http://www.lea-linux.org/documentation [...] Kernel-compil), les utilitaires pour votre carte graphique, et les utilitaires hdparm, lm_sensors et powertop.
Par exemple, sous Windows en idle, un processeur AMD-BE2300 consomme 22 W et sous Linux après optimisation, il ne consomme que 4 W, consommation de configuration moyenne à vide sous Linux 30 W contre 90 W sous Windows.
Bien sûr, si vous pouvez optimiser le matériel, faites-le, mais puisque c'est long et coûteux, je me restreindrai aux modifications logicielles.
Je tiens à signaler que toutes ces manipulations n'affecteront en rien vos performances.

Le processeur

Depuis longtemps, c'est l'organe principal des ordinateurs. C'est lui qui effectue tous les calculs et donc lui qui consomme le plus. Différentes générations de processeurs se sont succédé mais certains principes pour l'économie d'énergie sont restés les mêmes.
Un des principes de base est d'abaisser la fréquence d'horloge du processeur ; mais attention, il ne faut le faire qu'au repos.
Installez le paquet cpufrequtils de votre distribution.
Puis allez dans la configuration de votre noyau :
Code : Autre
1
Power management options  ---> CPU Frequency scaling  --->

Puis mettez en dur :
Code : Autre
1
2
<*>   CPU frequency translation statistics
-*-   'ondemand' cpufreq policy governor

Il faut ensuite sélectionner votre processeur dans le cadre en dessous dans *** CPUFreq processor drivers ***, ce qui active la gestion d'énergie spécifique à votre processeur (voir plus bas).
Et si votre noyau est assez récent (2.6.24) :
Code : Autre
1
Default CPUFreq governor (ondemand)

Ou sinon, lancez le service cpufrequtils ou la commande :
Code : Console
cpufreq-set -g ondemand


Pour vérifier que votre processeur est bien en ondemand (fréquence minimale à vide et fréquence maximale en pleine utilisation), tapez la commande suivante, vous devriez voir quelque chose du genre :
Code : Console
cpufreq-info
cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
  driver: powernow-k8
  CPUs which need to switch frequency at the same time: 0 1
  hardware limits: 1000 MHz - 2.30 GHz
  available frequency steps: 2.30 GHz, 2.20 GHz, 2.00 GHz, 1.80 GHz, 1000 MHz
  available cpufreq governors: powersave, ondemand, performance
  current policy: frequency should be within 1000 MHz and 2.30 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1000 MHz (asserted by call to hardware).
analyzing CPU 1:
  driver: powernow-k8
  CPUs which need to switch frequency at the same time: 0 1
  hardware limits: 1000 MHz - 2.30 GHz
  available frequency steps: 2.30 GHz, 2.20 GHz, 2.00 GHz, 1.80 GHz, 1000 MHz
  available cpufreq governors: powersave, ondemand, performance
  current policy: frequency should be within 1000 MHz and 2.30 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1000 MHz (asserted by call to hardware).

Ensuite, quelle que soit votre interface, il existe des outils pour voir en temps réel la fréquence de votre processeur tel que kpowersave sous KDE.

C'est bien beau de mettre notre processeur en ondemand, mais s'il est toujours utilisé alors qu'il est à vide, ça ne sert à rien, et Linux utilise des IRQ qui réveillent le processeur périodiquement, de 100 à 1000 fois par seconde. Depuis peu (la version 2.6.21 du noyau pour les versions 32 bits et 2.6.24 pour les version 64 bits), il existe un patch qui permet de réveiller le processeur uniquement en cas de besoin. Et le plus beau dans tout ça, c'est qu'il vous fera gagner en performances ; donc si vous avez au moins ce noyau, c'est par ici que ça ce passe :
Code : Autre
1
Processor type and features -->

Puis mettre en dur :
Code : Autre
1
[*] Tickless System (Dynamic Ticks)

Pour voir les IRQ et donc le nombre de fois où votre processeur se réveille chaque seconde, je vous invite à télécharger puis à utiliser le paquet powertop, utilisable en console seulement.
Si vous avez bien suivi mes conseils, votre processeur à vide devrait être en dessous des 100 réveils par seconde. Sur un serveur, je suis à 79 par seconde.

Ensuite, il y a la gestion d'énergie spécifique à votre processeur, qui diminue les tensions en fonction de la fréquence, désactive les parties du processeur inutilisées, etc. Pour AMD, c'est la technologie cool'and'quiet et chez Intel, c'est la technologie speed step. Elle est très efficace dans la pratique, car cette méthode désactive les parties inutilisées et adapte le niveau de tension en fonction de la fréquence.

La carte graphique

Comme bien sûr il existe une multitude de cartes graphiques et que, hélas, il n'existe pas une seule méthode commune, je ne vais vous décrire que le principe.
Chaque carte graphique récente a une gestion des fréquences et un utilitaire associé. Je vous invite donc à abaisser automatiquement la fréquence de votre carte graphique en 2D, donc sur votre bureau, car c'est à ce moment-là que vous l'utiliserez le moins. Même si la question se pose pour les utilisateurs de Vista...

Pour les GeForce, installez le driver propriétaire. Vous aurez l'utilitaire graphique, il vous suffira seulement d'ajouter une option à votre xorg.conf :
Code : Autre
1
Option         "Coolbits" "1"


Pour les ATI, il existe un petit utilitaire en console qui permet aussi de changer les fréquences.

Contentez-vous de diminuer vos fréquences, ne les augmentez pas sous risque d'endommager votre matériel.

Le chipset

Dans le chipset, on trouve tous les périphériques internes de la carte mère.
Nous allons commencer par nous occuper du timer, l'horloge interne du système. Ces nouvelles méthodes, plus performantes, permettent un découpage du temps plus fin et par là même une diminution de la consommation et une meilleure réactivité du système.
Voici les options à changer ; dans Processor type and features, mettez-les en dur si votre noyau le permet :
Code : Autre
1
[*] High Resolution Timer Support

Dans Device Drivers ---> Character devices :
Code : Autre
1
2
3
[*] HPET - High Precision Event Timer
[*]   HPET Control RTC IRQ
[*]   Allow mmap of HPET


Ensuite, votre carte son peut sûrement se mettre aussi en veille, voir dans Device Drivers ---> Sound ---> Advanced Linux Sound Architecture --> PCI devices. Ici, j'ai choisi la mise en veille après 120 secondes :
Code : Autre
1
2
3
4
5
[*] Aggressive power-saving on HD-audio
(120) Default time-out for HD-audio power-save mode
...
[*] AC97 Power-Saving Mode
(120)   Default time-out for AC97 power-save mode

Attention : sur certaines cartes son, j'ai remarqué des craquements à l'entrée et à la mise en veille de celles-ci.

Même sort pour l'USB ; allons dans Device Drivers ---> USB support :
Code : Autre
1
[*]     USB selective suspend/resume and wakeup

Autres

Donc, si vous savez compiler votre noyau, je n'ai rien à vous apprendre mais un petit rappel ne fait pas de mal. Mettez en dur la prise en charge de votre matériel, désactivez les options que vous comprenez et que vous n'utiliserez jamais ; de plus, mettez en modules les options que vous utiliserez occasionnellement. N'oubliez pas vos périphériques I2C pour vos capteurs de température.

Ensuite, si votre disque dur n'est pas utilisé, coupez-le (ici après 10 minutes) avec cette commande à lancer au démarrage :
Code : Autre
1
hdparm -S 120 /dev/sdX

Pour certaines distributions, il existe le service hdparm qui permet d'utiliser l'utilitaire hdparm, pour faire ce réglage automatiquement.

Arrêtez les services que vous n'utilisez pas, vous gagnerez en performances et donc, vous consommerez moins. Idem pour les applications que vous utilisez souvent : essayez de les optimiser ou de trouver des équivalents légers, le tout sera plus réactif et consommera moins.
Utilisez le boot pxe pour regrouper vos disques durs, cela fait une gestion plus simple et une consommation centralisée, donc optimisée. Le boot pxe sous Linux sera peut-être le sujet de mon prochain tutoriel. Cela demande une infrastructure et des connaissances particulières.

Ensuite dans votre BIOS, activez aussi la gestion d'énergie, la gestion de ventilation du processeur, désactivez les périphériques de réveil (qui sont allumés pour que vous puissiez allumer votre ordinateur par d'autres moyens que l'utilisation du bouton on / off) : on voit rarement quelqu'un allumer son ordinateur par le réseau, le modem, ou l'USB.

Les écrans consomment énormément, surtout les écrans cathodiques, mais ce que je vais vous dire est aussi valable pour les écrans à LED. Augmentez vos contrastes et baissez votre luminosité pour que ce soit confortable, mais le moins lumineux possible.

Vous pouvez ensuite éteindre l'écran ou mettre votre ordinateur en veille, voire en hibernation, au bout d'une certaine période d'inactivité.
Grâce à ce tutoriel, vous avez tous les outils en mains pour consommer moins. Alors sauvez des arbres, et pour les amateurs de tuning, amusez-vous bien avec vos nouveaux ordinateurs basse consommation !

Conseils au sujet du matériel


  • Bonne carte mère : gage de fiabilité, avec HPET et timer haute précision, PCIe2 pour la désactivation des liens inutilisés, bonne carte réseau pour pare-feu matériel qui utilise moins le processeur et aussi qui, en 10/100 quand le PC est éteint, repasse en 1000 (si supporté) quand le PC est allumé, car un lien 1000 MBps peut consomer plus de 2 W...
  • Processeur : AMD avec cool'and'quiet, INTEL avec Speed Step.
  • Disque dur : de préférence avec un minimum de plateaux, ou en SSD.
  • Alimentation : avec le meilleur rendement possible ; avec les optimisations et une configuration moyenne gamme, vous n'aurez jamais besoin de plus de 500 W.
  • Carte graphique : hybride SLI ou équivalent (désactivation de GPU gourmand quand il n'est pas utilisé).
  • Écran : à LED de préférence, ou en LCD.

Partager

34 commentaires pour "La gestion d'énergie sous Linux"
Note moyenne : 2.92 / 4 (12 votes)
Pseudo Commentaire
Hors ligne le hollandais volant # Posté le 04/04/2010 à 16:14:08
Pokémon for ever…
Avatar
Flux RSS

Études : Université Blaise Pascal Clermont-Ferrand

Pas mal tout ça !

On peut aussi utiliser un soft pour les ordi portables: laptop mode tools.
j'en parle brievement ici, et y'a powertop aussi.

:pirate: Le Hollandais Volant :pirate: , pour vous servir je peux me resservir ? :p
 
Hors ligne alpha_one_x86 # Posté le 05/04/2010 à 20:26:43
Ultracopier, multi-plateforme
Avatar
Flux RSS

Ville : Granollers
Pays : Espagne

C'est vrai que le mieux c'est d'avoir l'ordinateur adapter à ces besoins, et non pas un monstre de puissance inutilisé.
Pour la stabilité du système, elle est garantie, vu que que toutes les optimisations cité sont maintenant de la partie dans bon nombres de linux.
Et aussi avoir une alim adapter, hors c'est difficile (voir impossible) de trouver un 80+ gold en 200W.
Par exemple, avec linux + hardware qui va bien, je suis en quad core core i7 + 8Go + radeon 4670 + 6 hdd 1To5 = 70W à vide, 130W en charge. C'est relativement bas, presque autant que mon ancien portable.
 
Hors ligne FyndKaer # Posté le 30/01/2011 à 13:18:00
Avatar

Avis : Décevant

Citation : tuto
Puis allez dans la configuration de votre noyau


Ce serais bien de donner plus de détails sur ce point, car moi je ne pige rien du tout la.

EDIT: Vraiment déçu par ce tuto, on comprend rien du tout, les explications ne sont pas assez poussées (c'est pas un tuto pour des zéros comme nous ça).
Hors ligne kaii-lo # Posté le 13/06/2011 à 23:19:55
Avatar

Je suis d'accord avec FyndKaer, rien compris !!!

Image utilisateur
 
Hors ligne Toldo171 # Posté le 18/08/2011 à 13:58:50
Avatar

Études : Ecole Centrale de Lyon

Je suis aussi d'accord avec FyndKaer, on a plus l'impression que l'auteur fait un étalage de ses connaissances plutôt que d'essayer d'expliquer clairement le processus pour les Zér0s que nous sommes.

Ca me fait penser aux médecins qui font exprès de parler avec désinvolture en utilisant des mots compliqués quand on va les consulter, pour affirmer leur supériorité devant le patient qui est largué.

C'est dommage, car le sujet du tuto est vraiment très intéressant. J'attends avec impatience un tuto du même genre, plus détaillé et qui permettra à n'importe qui de suivre le processus expliqué pas à pas.

Voir tous les commentaires