Petit guide sur l'économie d'énergie d'un processeur Athlon Version française du Athlon Powersaving HOWTO Daniel Nofftz Adaptation française : Fanny Schertzer Première adaptation française : Mathieu Pillard Relecture de la version française : Alice Martin Préparation de la publication de la v.f. : Jean-Philippe Guérard 2003-10-04 +------------------------------------------------------------------------+ | Historique des versions | |------------------------------------------------------------------------| | Version 1.1.0.fr.1.0 | 2004-01-07 | FS, initiales_du_relecteur, JPG | |------------------------------------------------------------------------| | Adaptation française de la version publiée, basée sur le travail | | préliminaire de Mathieu Pillard | |------------------------------------------------------------------------| | Version 1.1.0 | 2003-10-04 | DN | |------------------------------------------------------------------------| | Des tas de nouveaux liens et informations | |------------------------------------------------------------------------| | Version 1.02 | 2003-08-29 | DN | |------------------------------------------------------------------------| | Nouveau site, nouvelle adresse mail -> mise à jour des liens ! | |------------------------------------------------------------------------| | Version 1.01 | 2003-07-09 | DN | |------------------------------------------------------------------------| | Correction de bug ! le bidouillage en ligne de commande du jeu de | | composants AMD était faux ! | |------------------------------------------------------------------------| | Version 0.08.fr.1.0 | 2003-01-23 | MP | |------------------------------------------------------------------------| | Adaptation française d'une version préliminaire de ce document | +------------------------------------------------------------------------+ Résumé Comment configurer la fonction d'économie d'énergie des processeurs Athlon, Duron et Athlon XP sur certains jeux de composants et cartes mères. -------------------------------------------------------------------------- Table des matières 1. Introduction 1.1. Bases du mode économie d'énergie de l'Athlon 1.2. Copyright et licence 1.3. Disclaimer 1.4. Commentaires 1.5. Nouvelles versions de ce document 2. Les différentes approches 2.1. Le bidouillage en ligne de commande 2.2. Le logiciel Athcool 2.3. Mise à jour du BIOS 2.4. Mon correctif noyau 2.5. La solution LVCool 2.6. Le programme FVCool 2.7. Économie d'énergie AMD 760MP 3. Quoi d'autre ? 3.1. Comment tester le bon fonctionnement 3.2. Bugs et problèmes connus 3.3. À faire 3.4. Traductions 1. Introduction 1.1. Bases du mode économie d'énergie de l'Athlon Le signal HLT, utilisé par la boucle idle normale du noyau linux ne permet pas d'économie d'énergie significative sur les processeurs de la famille Athlon/Duron (désigné ci-après par « processeurs Athlon »). Pour obtenir une réelle économie d'énergie sur un processeur Athlon, vous devez passer le processeur en mode STPGNT (Stop Grant Mode). Dans ce mode, le processeur est déconnecté du bus frontal (FSB) et peut couper certaines parties du processeur ainsi que réduire la vitesse d'horloge pour économiser de l'énergie. Certaines cartes-mères récentes supportent également une fonction permettant de passer en STPGNT lorsqu'un signal HLT est émis. 1.2. Copyright et licence Ce document, Petit guide sur l'économie d'énergie du processeur Athlon, est sous copyright © 2003 par Daniel Nofftz. Permission est donnée de copier, redistribuer et/ou modifier ce document selon les termes de la licence de documentation libre GNU FDL, version 1.2 ou tout autre version publiée postérieurement par la Free Software Foundation. La licence peut être consultée à http://www.gnu.org/copyleft/fdl.html [http://www.gnu.org/copyleft/fdl.html]. Linux est une marque déposée par Linus Torvalds. 1.3. Disclaimer L'auteur n'engage en aucune manière sa responsabilité vis-à-vis du contenu de ce document. Si vous décidez d'en appliquer les concepts, exemples et informations, c'est à vos propres risques. Des erreurs et imprécisions peuvent subsister, ce qui pourrait endommager votre système. Soyez prudent. Sauf mention contraire, tous les copyrights appartiennent à leurs propriétaires respectifs. Aucun terme de ce document ne doit affecter la validité d'une quelconque marque déposée. Naming of particular products or brands should not be seen as endorsements. 1.4. Commentaires Vos commentaires sont essentiels à ce document. En particulier, de nouvelles solutions adaptées aux derniers jeux de composants sont nécessaires. J'ai également besoin de savoir si les différentes solutions proposées fonctionnent ou non. Envoyez vos informations complémentaires, commentaires et critiques en anglais à l'adresse suivante : . Vous pouvez m'écrire en allemand ou en anglais. 1.5. Nouvelles versions de ce document La dernière version de ce guide pratique est toujours disponible sur http://www.daniel.nofftz.net/linux/ [http://www.daniel.nofftz.net/linux/]. 2. Les différentes approches Dans ce chapitre, j'exposerai différentes manières de parvenir au même but : économiser de l'énergie sur votre système Athlon. L'approche que je recommande actuellement est d'employer le « bidouillage en ligne de commande », car le correctif noyau est obsolète et ne sera plus développé à l'avenir et le correctif « LVCool » ne supporte qu'une seule famille de jeux de composants. Le programme athcool semble bon, mais je ne l'ai pas testé personnellement. Presque toutes les approches exposées vont configurer le bit « Disconnect enable when STPGNT detected » sur le pont nord de la carte-mère. Tout le reste du travail est fait par le sous-système ACPI du noyau qui envoie un signal STPGNT au processeur lorsqu'il entre en mode acpi-c2 idle. Si votre noyau est compilé sans support de l'ACPI, vous devez activer cette option dans le menu de configuration du noyau et recompiler votre nouveau noyau. Les option ACPI se trouvent sous General Setup+Power Management Setup -> ACPI. Il vous faudra au moins activer les options suivantes : ACPI Bus Manager, System et Processor. Ou, pour le nouveau noyau 2.4.22 : General Setup+ACPI Support. Vous devez au moins activer l'option suivante : Processor. Certains jeux de composants supportent également un STPGNT si un signal HLT est détecté. Ces cartes mères ne nécessitent pas d'activer l'ACPI ! Je cherche d'ailleurs des informations sur les cartes-mères nécessitant ou non l'ACPI. Si vous l'avez l'avez testé sur votre propre carte-mère, merci de m'envoyer un courrier électronique (voir Section 3.1, « Comment tester le bon fonctionnement »). 2.1. Le bidouillage en ligne de commande Pour utiliser le bidouillage en ligne de commande, vous devez normalement activer l'ACPI dans le noyau, à moins que ce ne soit déjà le cas. Il n'est pas nécessaire de redémarrer pour activer l'économie d'énergie. Vous pouvez l'activer/désactiver depuis un terminal, grâce aux commandes suivantes : sur les cartes KT133/133A, KX133, KL/KLE133, KM/KN133, ... : (nécessitent d'activer l'ACPI) activer : setpci -v -H1 -s 0:0.0 52=$(printf %x $((0x$(setpci -H1 -s 0:0.0 52) | 0x80))) désactiver : setpci -v -H1 -s 0:0.0 52=$(printf %x $((0x$(setpci -H1 -s 0:0.0 52) & 0x7f))) sur les cartes KT266/266A/333, KM266/333, ... : activer : setpci -v -H1 -s 0:0.0 92=$(printf %x $((0x$(setpci -H1 -s 0:0.0 92) | 0x80))) setpci -v -H1 -s 0:0.0 95=$(printf %x $((0x$(setpci -H1 -s 0:0.0 95) | 0x02))) désactiver : setpci -v -H1 -s 0:0.0 92=$(printf %x $((0x$(setpci -H1 -s 0:0.0 92) & 0x7f))) setpci -v -H1 -s 0:0.0 95=$(printf %x $((0x$(setpci -H1 -s 0:0.0 95) & 0xfd))) sur la carte KT400 : activer : setpci -v -H1 -s 0:0.0 D2=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2) | 0x80))) setpci -v -H1 -s 0:0.0 D5=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5) | 0x02))) désactiver : setpci -v -H1 -s 0:0.0 D2=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2) & 0x7f))) setpci -v -H1 -s 0:0.0 D5=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5) & 0xfd))) sur les cartes SIS730/733 : (expérimental ! merci de m'indiquer si cela fonctionne chez vous) activer : setpci -v -H1 -s 0:0.0 6B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6B) | 0x01))) désactiver : setpci -v -H1 -s 0:0.0 6B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6B) & 0xfe))) sur les cartes SIS735/740/745/746/755 : activer : setpci -v -H1 -s 0:0.0 6A=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6A) | 0x0001))) désactiver : setpci -v -H1 -s 0:0.0 6A=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6A) & 0xfffe))) sur Nforce : activer : setpci -v -H1 -s 0:0.0 E7=$(printf %x $((0x$(setpci -H1 -s 0:0.0 E7) | 0x06))) setpci -v -H1 -s 0:0.0 6D=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6D) | 0x80))) désactiver : setpci -v -H1 -s 0:0.0 E4=$(printf %x $((0x$(setpci -H1 -s 0:0.0 E7) & 0xf9))) sur Nforce2 : (fonctionne sans activer l'acpi) activer : setpci -v -H1 -s 0:0.0 6F=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6F) | 0x10))) désactiver : setpci -v -H1 -s 0:0.0 6F=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6F) & 0xef))) sur AMD751 et AMD760/761 :(works without acpi enabled) activer : setpci -v -s 0:0.0 0x62=$(printf %x $((0x$(setpci -H1 -s 0:0.0 62) | 0x06))) désactiver : setpci -v -s 0:0.0 0x62=$(printf %x $((0x$(setpci -H1 -s 0:0.0 62) & 0xf9))) 2.2. Le logiciel Athcool Athcool est un petit logiciel qui effectue les mêmes tâches que les commandes setpci ci-dessus. Il supporte les mêmes cartes-mères et détecte votre jeu de composants pour passer les bonnes commandes à la carte et activer l'économie d'énergie. Vous pouvez en savoir plus (et le télécharger)ici [http://members.jcom.home.ne.jp/jacobi/linux/softwares.html]. 2.3. Mise à jour du BIOS Sur certaines cartes récentes, le fabriquant fournit une mise à jour du BIOS qui configure les bits nécessaires sur le jeu de composants de la carte (ou vous laisse choisir dans le menu de configuration du BIOS si la fonction doit être activée ou non). Référez-vous au site web du fabriquant de votre carte-mère pour voir si une telle mise à jour du BIOS est disponible. 2.4. Mon correctif noyau Mon correctif est basé sur un autre correctif (de Jan Niehusmann) que j'ai trouvé sur Newsnet. Je l'ai modifié pour qu'il supporte également le jeu de composants KT266/266A. D'ailleurs, mon correctif fait le même travail que le bidouillage en ligne de commande, la seule différence est que cela se passe à présent à l'intérieur du noyau. C'est pour cela que je conseille la ligne de commande, car c'est vraiment simple à réaliser. Procédure 1. Bon... maintenant, voilà comment appliquer le correctif étape par étape : 1. D'abord, vous devez télécharger le correctif : Correctif pour le noyau 2.4.17 [http://www.daniel.nofftz.net/linux/amd_cool.diff] Correctif pour le noyau 2.4.21 [http://www.daniel.nofftz.net/linux/amd_cool.linux-2.4.21.diff] (merci à Thomas Reinhardt d'avoir réalisé le portage pour le noyau 2.4.21) 2. Connectez-vous en root 3. cd /usr/src 4. Appliquez le correctif : cat $chemin-du-correctif/amd_cool.diff | patch -p0 5. cd linux 6. Compilez votre nouveau noyau. 7. Redémarrez en prenant soin d'entrer amd_disconnect=yes au prompt de démarrage. C'est nécessaire à cause de bugs connu du processeur Athlon qui peuvent causer des problèmes sur plusieurs cartes. Testez le correctif. S'il fonctionne, ajoutez l'option amd_disconnect=yes au fichier /etc/lilo.conf. 2.5. La solution LVCool LVCool est un portage du programme Windows VCool [http://vcool.occludo.net/]. Il ne supporte que les jeux de composants KT133/133A et KX133. Je ne peux pas fournir de support sur LVCool. Vous pouvez le télécharger ici [http://vcool.occludo.net/VC_Linux.html]. Cette solution nécessite de compiler l'ACPI dans le noyau. 2.6. Le programme FVCool Vous trouverez ici [http://www.nt.phys.kyushu-u.ac.jp/shimizu/download/download.html] un autre programme d'économie d'énergie qui supporte plusieurs jeux de composants. Je ne l'ai pas testé mais j'ai entendu dire qu'il fonctionne. Essayez... Un logiciel supplémentaire est fourni en même temps pour employer les senseurs de certaines cartes-mères (comme le paquetage lm-sensors). 2.7. Économie d'énergie AMD 760MP Il existe un module du noyau qui active l'économie d'énergie du jeu de composants multiprocesseur 760MP. Vous pouvez le trouver ici [http://www.muru.com/linux/amd-smp-idle/]. Je ne sais pas s'il fonctionne bien, mais j'ai reçu au moins un mail d'une personne me confirmant son bon fonctionnement chez lui. Essayez. 3. Quoi d'autre ? 3.1. Comment tester le bon fonctionnement Bon... Vous appliquez l'une des méthodes décrites et vous voulez vérifier si ça marche. Il y a deux moyens de le savoir : Si vous avez un ventilateur contrôlé par la température sur votre CPU-Heatsink, vous pouvez mesurer le niveau de bruit produit par le ventilateur. Après quelques minutes, donnez du travail à votre processeur. Procédure 2. En général, je m'y prends comme suit : 1. je me connecte en root 2. cd /usr/src/linux 3. et je donne du travail à la machine : while true; do make clean; make bzImage; done Après 20 ou 30 secondes, vous devriez remarquer que le ventilateur produit davantage de bruit en même temps que sa vitesse augmente. N'oubliez pas de couper la boucle while après quelque minutes avec la commande STRG-C. La même procédure que ci-dessus fonctionne avec un programme de monitoring de la température du processeur (comme lm-sensors ou xmbmon). 3.2. Bugs et problèmes connus Les processeurs Athlon/Duron sont affectés de deux bugs connus. Ils portent les numéros 11 et 14 dans le AMD Athlon Processor Revision Guide. Il semble que l'Athlon XP est sensiblement moins affecté par ces bugs. Donc, si vous avez un Athlon XP, vous faites partie des veinards (comme moi). Les bugs peuvent causer les problèmes suivants : * sauts durant la lecture de musique * sauts et ralentissements durant la lecture de video * ralentissement des transferts du disque dur ultra-DMA * arrêts du système * problèmes avec l'USB * quelqu'un a parlé d'un grésillement important Une mise à jour du BIOS peut parfois résoudre des problèmes (en particulier concernant le bug 11, qui pourrait être causé par le BIOS). Mais d'après ce que j'en sais, cela ne concerne que peu de cartes. Pour la carte Asus A7V133-C, il est connu que l'option du BIOS PCI master read caching résout la plupart des problèmes lorsqu'elle est activée. Vérifiez si votre BIOS dispose d'une telle fonction. Il est également connu que sur certaines cartes, l'option du BIOS Delayed Transaction résout certains problèmes. Vous pouvez tenter le coup sur votre matériel. [1][Attention] Attention Sur les cartes équipée de KT133A, cela pourrait activer le fameux bug VIA-Southbridge ! Vu sur Newsnet à propos de la carte Asus A7V : * sans delayed transaction : le son et la réception TV sautent * avec delayed transaction : le son ne saute pas, les problèmes TV sont plus rares * avec delayed transcation et master read caching : presque pas de problème TV, le son ne saute pas du tout Il y a d'autres sources de problèmes : * le branchement n'est pas assez fort pour gérer les fluctuations de la consommation d'énergie de la carte-mère et du processeur * certains régulateurs de voltage sur la carte-mère peuvent avoir le même problème que le branchement ;) * vous avez une K7S5A (d'après ce que j'en sais, cette carte peut vraiment devenir problèmatique lorsque l'économie d'énergie est activée) Si vous rencontrez des problèmes mineurs en activant l'économie d'énergie, mais désirez tout de même l'utiliser, un bon compromis est de l'activer par défaut et de le désactiver lorsque vous voulez écouter de la musique, regarder la télévision, ... 3.3. À faire Ajouter des jeux de composants et davantage d'informations dans ce document. Éventuellement, une liste de cartes-mères avec des coches « fonctionne » et « ne fonctionne pas ». 3.4. Traductions Il existe des traductions dans différentes langues. Pour l'instant, la plupart sont des traduction de la version pre-XML de ce document. Espagnol [http://perso.wanadoo.es/cmayo/docs/Athlon-Powersaving-HOWTO-es.html] par Carlos Mayo Français [http://www.daniel.nofftz.net/linux/Athlon-Powersaving-HOWTO-fr.html] par Mathieu Pillard Italien [http://www.daniel.nofftz.net/linux/Athlon-Powersaving-HOWTO-it.html] par Maurizio Fantino Allemand (traduction partielle) [http://www.linuxwiki.de/PowersavingHowto] par Fabian Mohren Japonais [http://www.linux.or.jp/JF/JFdocs/Athlon-Powersaving-HOWTO/index.html] par Seiji Kaneko