Bonsoir à tous,
J’ai écrit cette petite astuce dans la journée pour le forum Ubuntu-fr, mais comme vous ne fréquentez peut-être pas nécessairement ce forum et que cette astuce pourrait éventuellement être utile à certains d’entre vous, je vous la propose aussi (bon c’est un copier-coller), mais elle a été mise au point sur Debian Squeeze à la base
Bonne lecture
Comme beaucoup de personnes je n’ai pas un ordinateur de course de dernière génération, au fil des années j’ai vu progressivement les performances générales de mon ordinateur baisser petit à petit. Le problème venant principalement du processeur (CPU) qui, pour des raisons d’économies d’énergie, tourne la plupart du temps à une fréquence basse, qui s’avère incapable de traiter convenablement les programmes actuels. La plupart des noyaux Linux fournis par nos distributions utilisent des “governors” pour définir une politique à appliquer sur le processeur : ondemand, performance, powersave, conservative, userspace
Ubuntu et Debian appliquent par défaut le governor “ondemand”, qui, pour rappel abaisse le processeur à sa vitesse minimale la plupart du temps et change dynamiquement sa fréquence en l’augmentant jusqu’à son maximum quand le système en a besoin, lors de l’exécution d’une tâche lourde par exemple. Le problème est que certains programmes sont lents ou saccadent à cause de la fréquence par défaut trop basse mais ces programmes ne demandent pas non plus assez de puissance pour que le noyau de daigne passer à la fréquence supérieure. Voilà les symptômes que je constate sur mon ordinateur :
- saccades et ralentissement lors du défilement de pages Web avec Firefox.
- saccades de Compiz lors des effets d’agrandissement/ralentissement.
- lenteur dans l’ouverture d’applications comme Nautilus, VLC, etc…
Prenons un exemple concret avec mon ordinateur sous Debian Squeeze : mon processeur (AMD Athlon 4600+, plus tout jeune) a 4 différentes fréquences possibles : 1GHz (sa fréquence minimale), 1.80Ghz, 2Ghz, 2.2Ghz et 2.4Ghz (sa fréquence maximale). La plupart du temps il tourne à 1GHz par souci économique et écologique. Mais lors de la navigation sur Internet, comme la doc Ubuntu-fr, le défilement est très très lent le temps de défiler une image ou un tableau. Pareil pour les effets de fermeture/ouverture de Compiz : la fenêtre (de Rhythmbox par exemple) apparaît mais avec un fond gris vide le temps d’une demi-seconde, avant de se remplir de son contenu normal (à savoir les colonnes avec les différentes chansons, artistes, albums, genres).
Cependant, mon problème est déja connu et une solution existe déja : 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).
Alors pourquoi ne pas garder cette méthode ? Tout simplement car elle présente pour moi un inconvénient de taille :
En sélectionnant manuellement la fréquence, le governor passe de “ondemand” à “userspace”, ce qui fait que 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 (idle) la fréquence ne diminuera pas et restera à un niveau élevé, ce qui fera chauffer votre processeur et risque de l’“user” plus rapidement (à moins que vous ne reconfiguriez la fréquence vous-même à chanque fois).
La solution que je vous propose permet de sélectionner la fréquence minimale ainsi que la fréquence maximale du processeur, tout en conservant le changement de fréquence dynamique via le governor “ondemand”, la solution a été testée avec succès sur Debian Squeeze (freezée) et Ubuntu 10.04 Lucid Lynx, toutes deux version 64 bits. Je vous précise que les commandes suivantes sont à entrer à vos risques et périls, un règlage mal approprié peut être préjudiciable à votre système, voire à votre matériel, prenez vos responsabilités !
Maintenant que les formalités sont passées passons à la première étape, installer le programme cpufrequtils (disponible sous licence libre, disponible dans le dépôt principal d’Ubuntu et Debian)
# aptitude install cpufrequtils
Une fois le programme installé, il faut déterminer avec exactitude les fréquences supportées par votre processeur.
La commande suivante est à entrer dans la console, attention les résultats sont exprimés en Hz :
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
Dans mon cas, la console m’a renvoyée : 2400000 2200000 2000000 1800000 1000000
Ensuite il faut modifier le fichier /etc/init.d/cpufrequtils avec les droits superutilisateur :
# nano /etc/init.d/cpufrequtils
ou encore, pour les utilisateurs de Gnome :
# gedit /etc/init.d/cpufrequtils
ou pour les utilisateurs de KDE :
# kwrite /etc/init.d/cpufrequtils
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, vous êtes libres d’entrer les données de votre choix parmi les résultats retournés précédemment par la console. Pour les personnes qui ne comprennent pas les lignes ci-dessus, MAX_SPEED est la vitesse maximale du processeur et MIN_SPEED est la vitesse minimale du processeur (vitesse = fréquence), veillez à cependant à respecter rigoureusement les résultats donnés (pour éviter toute erreur et les éventuels gros problèmes indésirables).
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 et de redémarrer. Mon système fonctionne maintenant à 1.8Ghz au minimum et peut progresser jusqu’à 2.4GHz si besoin.
On peut imaginer deux scénarios dans lequel 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 (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…).
Enfin 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 serve, entre autres, à 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.
Bonne soirée à vous