Gagner en fluidité : changer la fréquence minimale du CPU !

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 :023
Bonne lecture :033

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 :006

Trèèèès bien expliqué mon cher ! j’essayerai cela ce week-end sur mon E8500, un peu plus récent que le tien mais cela va tellement vite en informatique !
De plus je vais m’endormir moins bête car je viens d’apprendre des choses pour mon niveau intermédiaire.
Salut à toi :open_mouth:

salut

très intéressant en effet ! j’ai un vieil Athlon Xp 2400 sur un de mes PC … je vais essayer ta méthode.

question subsidiaire : comment peut-on connaitre a un moment T la frequence du processeur (par exemple au moment où je tape ces lignes) ?

merci

EDIT : avec mon Athlon X2 4200+, je n’ai que 2 valeurs :
2200000 1000000

donc à priori, ça ne servirait pas grand chose que je les indique dans /etc/init.d/cpufrequtils ?

salut,

Ou, plus extensif :

Ou encore en ajoutant au tableau de bord l’applet “moniteur de changement de frequence du processeur” (un applet par proc si t’a plusieurs core)

Merci à vous :mrgreen:

@hangarter : on t’a déja donné de multiples méthodes mais j’en rajoute une de plus :

cat /proc/cpuinfo

C’est pas le choix qui manque :023

ok merci beaucoup !

Je rajoute un petit message,

Le problème de la consommation électrique a été posé dans un autre topic sur ce forum, sujet tout à fait intéressant qui montre que mon astuce a un défaut majeur : la hausse de la consommation électrique, en modifiant la fréquence de base donc la tension du processeur, la consommation électrique augmente en conséquence. La hausse de la consommation est variable suivant la finesse de gravure de votre processeur, donc son âge (recherchez sur Wikipédia pour plus d’informations sur la finesse de gravure des CPU) et de la fréquence minimale que vous avez déterminé. En parallèle, sur le forum ubuntu-fr, où j’ai posté le message original, un membre a proposé une autre astuce qui ne modifie pas la fréquence de base mais qui ordonne au noyau de hausser les fréquences à la moindre montée en charge. Cette astuce peut se révéler être plus intéressante dans plusieurs cas car elle conserve le niveau de fréquence le plus bas la plupart du temps et permet de mieux profiter de la puissance qu’il reste dans les cœurs du processeur.
Donc à tous ceux qui ont suivi mon astuce et qui veulent une méthode alternative, ça se passe par ici :
forum.ubuntu-fr.org/viewtopic.ph … 4#p3738804

Merci à grouby pour cette autre astuce.

C’est beau le libre :023

Petit bémol : /etc/init.d/ondemand n’existe pas sous Debian, et je n’ai pas encore trouvé son pendant.

Edite /etc/init.d/cpufrequtils ou bien utilise un fichier /etc/default/cpufrequtils contenant

ENABLE="true" GOVERNOR="ondemand" MAX_SPEED="0" MIN_SPEED="0" Tu modifies les paramètres dans ce fichier, ils sont prioritaires sur ceux par défaut donnés dans /etc/init.d/cpufrequtils

Ça d’après ce que j’ai compris, ça permet de régler les fréquences min et max, pas le pourcentage d’utilisation à partir duquel la fréquence augmente.

Es-tu allé voir le lien vers le forum Ubuntu dans mon dernier message ?
J’y pose la même question et grouby m’a répondu que le fichier n’existait pas mais qu’il fallait le créer (c’est vrai que le terme “modifier” peut porter à confusion dans son message étant donné qu’on ne peut modifier quelque chose qui n’existe pas…)

Ah, ça c’est autre chose. À noter que je viens de lire le T&A en détail. C’est une mauvaise idée de modifier le cpufrequtils, il vaut mieux créer un fichier

/etc/default/cpufrequtils

Sinon, il te suffit de faire

echo 40 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold

echo 40 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold

(inutile de rebouter, tu peux tester)
si tu veux modifier les seuils (avec 2 CPU ici, et un seuil de 40%). À noter que le seuil de 40% est à mon avis excessif (le défaut est 80%, essaye avec 55-60%), en clair dès que ta machine fera quelque chose, le CPU changera de fréquence, mais bon, si tu veux que ta machine réagisse au quart de tour…

Cool, avec ça on a fait le tour de la question au moins :slight_smile:
Merci à vous deux !

Bonjour,

J’ai testé cette astuce sur EEEPC 1201NL, équipé du processeur intel Atom n270.

Caractéristiques :
Processeur Intel Atom N270 (1,6 Ghz)
FSB : 533 MHz
Cache L2 : 512 Ko

Voici ce que me renvoie la commande “lscpu”:

root@eeepc:~# lscpu
Architecture:          i686
CPU op-mode(s):        32-bit
CPU(s):                2
Thread(s) per core:    2
Core(s) per socket:    1
CPU socket(s):         1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 28
Stepping:              2
CPU MHz:               1067.000
L1d cache:             24K
L1i cache:             32K
L2 cache:              512K
root@eeepc:~# 

…et la commande qui sert à déterminer les fréquences supportées par le proc.:

root@eeepc:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
1600000 1333000 1067000 800000 
root@eeepc:~# 

J’ai donc mis dans le fichier /etc/init.d/cpufrequtils ceci:

ENABLE="true"
GOVERNOR="ondemand"
MAX_SPEED="1600000"
MIN_SPEED="1067000"

Que pensez-vous du pourcentage d’utilisation du système “au repos”?..

et par exemple lorsque je regarde une vidéo avec Totem?

Le but de ma question est de m’assurer que tout est normal, c’est pour cela que je vous demande votre avis!
A noter une légère amélioration de la fluidité au niveau de l’affichage! C’est un tout petit processeur, on ne va pas trop lui en demander non plus.

Bonne journée! :smiley:

Tu as un CPU qui est sollicité à 40% maxi. tapes plutôt cpufreq-info, tu auras le pourcentage des temps passé à des fréquence données:

En ce qui te concerne, avec un CPU à 40%, je me demande pourquoi tu tiens à passer à 1GHz, ça va consommer plus, faire chauffer un peu plus ta machine tout ça pour avoir 40% au lieu de 50%…

[quote=“fran.b”]Tu as un CPU qui est sollicité à 40% maxi. tapes plutôt cpufreq-info, tu auras le pourcentage des temps passé à des fréquence données:

En ce qui te concerne, avec un CPU à 40%, je me demande pourquoi tu tiens à passer à 1GHz, ça va consommer plus, faire chauffer un peu plus ta machine tout ça pour avoir 40% au lieu de 50%…[/quote]
Oui mais en même temps son processeur est un Atom (donc de dernière génération, qui chauffe quasiment pas, et ne consomme quasiment rien). Et s’il voit une différence dans les graphismes pourquoi pas ?

On est plus à l’époque des Pentium IV ou équivalent où les processeurs consommaient autant que des convecteurs à eux seuls. Et puis passer de 800Mhz en fréquence minimale à 1000Mhz, ça va pas consommer des masses en plus :smiley:

[quote=“Heliox”]
Oui mais en même temps son processeur est un Atom (donc de dernière génération, qui chauffe quasiment pas, et ne consomme quasiment rien). Et s’il voit une différence dans les graphismes pourquoi pas ?
[/quote]Justement, il a un CPU qui est sollicité à 40%, cela veut dire qu’en le mettant à 800MHz, il sera sollicité à 50%, en gros il fait chauffer son CPU et diminue la durée d’autonomie de son notebook pour que le CPU puisse ne rien faire, l’intérêt me parait minime…

En même temps moi (sur squeeze) le défaut est à 95… J’ai mis 70 parce que effectivement 55-60 ça chauffait même sans rien faire (core 2 T7200 2ghz)