[Plan du site]
Vous êtes ici ---
> Le Site du Zéro
> Les tutoriels
> Non-Officiels
> Systèmes d'exploitation
> Linux
> La gestion d'énergie sous Linux
> Lecture du tutoriel
La gestion d'énergie sous Linux
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
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.
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/cached/index/Kernel-kernel.html), 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.
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ées 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 : Autre1
| Power management options ---> CPU Frequency scaling ---> |
Puis mettez en dur :
Code : Autre1
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 : Autre1
| Default CPUFreq governor (ondemand) |
Ou sinon, lancez le service
cpufrequtils ou la commande :
Code : Console
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 : Autre1
| Processor type and features --> |
Puis mettre en dur :
Code : Autre1
| [*] 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.
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
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.
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 : Autre1
| [*] High Resolution Timer Support |
Dans
Device Drivers --->
Character devices :
Code : Autre1
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 : Autre1
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 : Autre1
| [*] USB selective suspend/resume and wakeup |
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
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.