Bonjour à tous,
Attention cette astuce n'est en aucun cas un tutoriel sur le
surfréquençage (communément appelé
overclocking).
Ce tutoriel respecte les limitations de fréquence imposées par le constructeur de votre processeur et
ne fait donc
pas sauter la garantie de votre matériel (si tant est qu'il soit encore sous garantie 😛).
Matériel requis et explications
Depuis quelques années (2003-2004), tous les processeurs depuis les
Intel Pentium M et les
AMD Athlon 64 sont capables de changer dynamiquement de fréquence par paliers pour réduire la consommation électrique et sa principale conséquence : l'échauffement du matériel. Cette technologie nommé "
SpeedStep" chez Intel et "
Cool'n'Quiet" chez AMD.
Avertissement a écritPour continuer ce tutoriel il faut obligatoirement un processeur compatible qui supporte une de ces technologies, les possesseurs de processeurs plus anciens peuvent passer leur chemin, cette astuce ne pourra pas fonctionner. Si votre ordinateur date d'après 2004, son processeur doit être très probablement compatible. Si vous ne savez pas ou avez des doutes, identifiez votre processeur avec la commande :
cat /proc/cpuinfo
et cherchez des informations sur le Web (Wikipédia est complet sur ce sujet) et/ou demander de l'aide sur un forum (de préférence) spécialisé.
Aujourd'hui, les noyaux Linux fournis par nos distributions sont compatibles avec ces deux technologies et les utilisent par le biais de "politiques" (nommées "governors" en anglais) appliquées au processeur. Ces politiques correspondent à un comportement que le noyau impose au processeur pour répondre à divers besoins ; ces politiques sont :
- ondemand (= sur demande) : politique appliquée par défaut par le noyau qui utilise la fréquence la plus basse en temps normal et la hausse progressivement lorsque les programmes en ont besoin.
- performance (= perfomance) : politique qui utilise toujours la fréquence maximale du processeur, quelle que soit la situation
- powersave (= économie d'énergie) : politique semblable à ondemand mais qui est beaucoup plus conservatrice face à la montée en fréquence. Le changement ne se fera que lorsque le taux d'utilisation du processeur à sa fréquence la plus basse arrivera à saturation (utile en cas de batterie très faible).
- conservative (= conservateur) : politique contraire à performance qui utilisera toujours la fréquence la plus basse quelle que soit la situation.
- userspace (= défini par l'utilisateur) : politique qui applique la fréquence choisie par l'utilisateur selon les paliers disponibles.
Motivation et objectifs
Prenons un exemple concret basique : Mon plus-tout-jeune processeur AMD Athlon 64 X2 4600+ a 5 différents paliers disponibles :
- 1Ghz (1er palier)
- 1,80Ghz (2ème palier)
- 2Ghz (3ème palier)
- 2,2Ghz (4ème palier)
- 2,4Ghz (5ème et dernier palier)
Le noyau configure par défaut sa politique
ondemand ayant comme fréquence minimale le premier pallier et comme fréquence maximale le dernier pallier. Ce comportement est le plus intéressant car il constitue un bon équilibre entre les économies d'énergie et le confort de l'utilisateur.
Mais la période entre le lancement de l'application, le changement de fréquences et l'ouverture de la fenêtre de l'application, peut paraître longue car la fréquence par défaut est trop basse pour traiter rapidement la demande et le changement de fréquence que devrait appliquer le noyau pour accélérer le tout tarde à se faire. Apparaissent donc (entre autres) des fenêtres vides qui tardent à se charger et des effets d'apparition saccadés (visibles lorsque le compositeur graphique Compiz/KWin est activé). Parmi les symptômes que je constate sur mon ordinateur :
- saccades et ralentissement lors du défilement de pages Web avec Firefox (surtout les pages avec des images ou des tableaux).
- saccades de Compiz lors de l'effet de minimisation des fenêtres.
- lenteur dans l'ouverture d'applications comme Nautilus, VLC, etc. Rhythmbox par exemple, après avoir cliqué sur l'icône dans le menu Gnome, la fenêtre apparaît après une animation de Compiz saccadée, mais cette fenêtre apparaît avec un fond vide, gris uni le temps d'une seconde, avant d'apparaître avec son affichage "normal"
Cependant mon problème est déjà connu et une solution existe déjà : un applet pour le bureau Gnome qui permet la sélection manuelle de la fréquence du processeur (la solution a été proposée à de maintes reprises sur ce forum), autrement dit : passer du gouvernor "ondemand" à "userspace".
Alors pourquoi ne pas garder cette méthode ? Tout simplement car elle présente un inconvénient : En sélectionnant "userspace", le processeur est bloqué à la fréquence sur lequel vous l'avez réglé. Les conséquences sont doubles : d'une part lorsque le système a besoin de plus de puissance, la fréquence restera bridée ; d'autre part lorsque le système sera au repos la fréquence ne diminuera pas et restera à un niveau élevé, ce qui fera chauffer votre processeur et risque de l'user prématurément.
Une autre solution existe aussi : régler votre processeur sur sa fréquence maximale. Comme ça, pas de problème de latence, le processeur est utilisé à son maximum (si tant est qu'il soit suffisamment puissant à 100%). Mais en plus de l'user plus rapidement, vous vous condamnez à avoir un ventilateur qui souffle de manière bruyante et continue, à voir la température de votre pièce augmenter et à voir votre facture électrique augmenter (pas écologique ni économique)…
Je propose deux astuces efficaces qui permettent de changer le problème initial sans avoir les inconvénients des autres solutions :
- La première consiste à augmenter la sensibilité du governor ondemand pour que le noyau accède plus rapidement aux hautes fréquences de votre processeur et que vous conserviez la fréquence minimale de votre processeur (bon pour l'écologie et les économies).
- La seconde solution permet d'aller plus loin et de conserver le changement de fréquence dynamique via le governor "ondemand" tout en choisissant la fréquence minimale (et si besoin la fréquence maximale du processeur) parmi les paliers supportés par votre processeur. Pour reprendre mon exemple ci-dessus, la fréquence minimale de mon processeur de 1Ghz (1er pallier) est passée à 1,8Ghz (2ème pallier). Cette augmentation de 800Mhz bien qu'anodine à première vue a quand même réduit la lourdeur de chargement et amélioré la fluidité des effets Compiz.
Les solutions ont été testées avec succès sur Debian 6.0 Squeeze et Ubuntu 10.04 Lucid Lynx, et Fedora 14 et 15, toutes sur architectures x86 64 bits.
Aussi je vous conseille d'abord de tester la première solution, de la tester longuement, et, si elle ne vous satisfait pas d'annuler les modifications et de tester la seconde solution.
Avertissement a écritJe vous précise que les commandes suivantes sont à saisir à vos risques et périls, une configuration déraisonnable peut être préjudiciable à votre ordinateur, notamment votre processeur, voire à votre matériel, prenez vos responsabilités !
La première étape consiste à installer le programme
cpufrequtils qui permet de gérer les governors du noyau (logiciel disponible sous licence libre GPL, disponible dans le dépôt principal d'Ubuntu, Debian et Fedora).
# aptitude install cpufrequtils
ou avec le clique-installation automatique (Ubuntu uniquement) : [apt]cpufrequtils[/apt]
Puis redémarrer
obligatoirement.
PREMIÈRE ASTUCE : CHANGER LA SENSIBILITÉ
Indication a écritle symbole # précédant une commande indique qu'elle doit être entrée en tant que super-utilisateur. Pour Ubuntu, il faut saisir sudo avant la commande.
Éditez le fichier /etc/rc.local :
# nano /etc/rc.local
puis, si vous avez un processeur double-cœur collez le contenu suivant à la fin du fichier, avant la ligne "exit 0"
echo 30 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold
echo 30 > /sys/devices/system/cpu/cpu1/cpufreq/ondemand/up_threshold
pour les processeur mono-cœur :
echo 30 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold
Redémarrez et constatez le changement plus agressif de fréquence ! 🙂
SECONDE ASTUCE : CHANGER LA FRÉQUENCE MINIMALE
Il faut déterminer les paliers de fréquence supportés par votre processeur.
La commande suivante est à entrer dans la console, attention les résultats sont exprimés en Hertz (Hz) :
Dans le cas d'un processeur multi-cœur (dual/tri/quad core) et/ou multi-thread (Intel HyperThreading) :
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
Dans mon cas, j'ai pris la première ligne et la console m'a renvoyée ça :
2400000 2200000 2000000 1800000 1000000
(C'est d'ici que j'ai tiré les quatre paliers donnés dans mon exemple ci-dessus)
Gardez vos valeurs dans le terminal dans un coin de l'écran et ouvrez-en une autre fenêtre (ou un nouvel onglet) pour poursuivre.
Ensuite il faut modifier le fichier de configuration de
cpufrequtils /etc/init.d/cpufrequtils avec les droits superutilisateur.
(Attention le fichier diffère selon Debian/Ubuntu/dérivés et Fedora) :
(Dans ces commandes, vous pouvez remplacer l'éditeur en mode console
nano par
gedit pour Gnome.
kwrite voire
kate pour KDE)
Dans ce fichier, allez à la ligne 42 ( 😃 ) environ et repérez l'ensemble ci-dessous :
ENABLE="true"
GOVERNOR="ondemand"
MAX_SPEED="0"
MIN_SPEED="0"
À ce moment, il faut entrer les données de votre choix parmi les résultats retournés par l'autre console, normalement toujours ouverte si vous avez bien suivi.
Il est tout de même conseillé de conserver une fréquence minimale pas trop élevée et raisonnable. Veillez aussi à copier et à coller avec exactitude les résultats donnés par l'autre console.
Avertissement a écrit
Une fréquence haute = consommation électrique plus importante = échauffement plus important = durée de vie du processeur réduite.
Cette règle dépend de la finesse de gravure de votre processeur, de votre système de refroidissement. La durée de vie d'un processeur en bonne condition est approximativement de plusieurs décenies. Plus d'information sur Google et Wikipédia
Pour comprendre les lignes du fichier ci-dessus :
- GOVERNOR="…" = le comportement appliqué au démarrage de l'ordinateur (cf. le début du message)
- MAX_SPEED="…" = la vitesse maximale du processeur
- MIN_SPEED="…" = la vitesse minimale du processeur (vitesse = fréquence).
Dans mon cas, voila ce que j'ai mis :
ENABLE="true"
GOVERNOR="ondemand"
MAX_SPEED="2400000"
MIN_SPEED="1800000"
Il suffit, pour terminer, d'enregistrer le fichier, de quitter l'éditeur et de redémarrer l'ordinateur.
Exemples d'utilisation
On peut imaginer deux scénarios dans lesquels cette solution peut s'avérer utile :
- L'utilisateur qui veut conserver le changement de fréquence dynamique mais qui souhaite une vitesse minimale supérieure à la vitesse minimale proposée par défaut pour s'affranchir de la lourdeur issue de l'utilisation de la fréquence minimale par défaut (c'est mon cas, désormais en vitesse minimale j'ai 1,8GHz au lieu de 1GHz).
- L'utilisateur qui veut brider la vitesse maximale de son processeur tout en conservant le governor ondemand, peut être utile pour un serveur qui souhaite pouvoir s'adapter à une montée en charge tout en conservant un certain contrôle sur les fréquences utilisées (si le système de refroidissement est défaillant, inefficace ou trop bruyant face à une fréquence trop élevée…).
Conclusion
J'espère que j'ai été assez clair dans la méthode à suivre et dans les explications; depuis que j'ai modifié la fréquence minimale de base, la plupart des problèmes que j'ai énuméré ci-dessus a disparu.
Si vous avez ou si vous voyez le moindre problème ou la moindre erreur, n'hésitez pas à corriger.
En espérant que cette astuce puisse être utile, à tous ceux qui sont dans le même cas que moi et qui épluchent désespérément le Web à la recherche d'une solution.
Voilà, c'est fini.
Bonne journée 🙂