14/12/2008

Gestion de la fréquence du processeur sous Debian avec cpufreq

Top ! Je suis un objet qui fait vrrrrrrrrrrrrr en dégageant beaucoup de chaleur. Je suis ? Je suis ?

Mon portable est équipé d'un AMD Turion ML-34, processeur ayant tendance à chauffer, et ça s'entend ! À pleine puissance (1,8GHZ), le ventilateur devient vite gênant après quelques minutes d'utilisation. On peut y remédier facilement en installant un daemon réglant dynamiquement la fréquence du processeur. Mon choix s'est porté sur cpufreqd [1], qui utilise le système cpufreq [2] intégré au noyau Linux.
Pour commencer, il suffit de l'installer (ainsi que cpufrequtils [2] qui se révélera utile par la suite) :
$ sudo apt-get install cpufreqd cpufrequtils
Ensuite, il nous faut configurer le lancement du daemon pour qu'il charge le bon module au démarrage. Cela se fait en éditant le fichier /etc/default/cpufreqd. Dans mon cas, il s'agit de :
CPUFREQ_CPU_MODULE="powernow-k8"
Je laisse la deuxième ligne du fichier tranquille, puisqu'elle va charger tous les governors disponibles :
CPUFREQ_GOV_MODULES="auto"
Maintenant, il nous faut configurer les governors dans le fichier /etc/cpufreqd.conf :
[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
verbosity=4
enable_remote=1
remote_group=root
[/General]

[acpi]
acpid_socket=/var/run/acpid.socket
[/acpi]

[sensors_plugin]
sensors_conf=/etc/sensors.conf
[/sensors_plugin]

[Profile]
name=ondemand
minfreq=0%
maxfreq=100%
policy=ondemand
[/Profile]

[Profile]

name=performance
minfreq=80%
maxfreq=100%
policy=performance
[/Profile]

[Profile]

name=powersave
minfreq=0%
maxfreq=50%
policy=powersave
[/Profile]

[Profile]

name=conservative
minfreq=0%
maxfreq=80%
policy=conservative
[/Profile]

[Rule]

name=ac
ac=on
profile=ondemand
[/Rule]

[Rule]

name=battery
ac=off
profile=conservative
[/Rule]

[Rule]

name=battery_low
ac=off
battery_interval=0-15
profile=powersave
[/Rule]
Je ne vais pas m'étendre sur le contenu du fichier : il s'agit d'un compromis entre le fichier par défaut, ce que j'ai pu trouver sur le net et l'aide fournie par la manpage du fichier. Je l'ai rempli au moyen des informations obtenues par la commande cpufreq-info :
limitation matérielle : 800 MHz - 1.80 GHz
plage de fréquence : 1.80 GHz, 1.60 GHz, 800 MHz
régulateurs disponibles : ondemand, userspace, powersave, conservative, performance
Concrêtement, le fichier définit 4 profils affectés aux 4 governors respectifs, et 3 règles d'utilisation des profils. Lorsque le portable est branché sur secteur, le profil utilisé est ondemand, utilisant toutes les fréquences du processeur. Lorsqu'il est sur batterie, le daemon passe en conservative, et le processeur n'utilise plus que 90 % de ses capacités, soient les fréquences de 800MHZ (44 %) et 1,6GHZ (88 %).
C'est fini, il ne nous reste plus qu'à redémarrer le daemon pour qu'il prenne en compte sa nouvelle configuration :
$ sudo /etc/init.d/cpufred restart
Pour que tout cela soit user-friendly au possible (le paquet cpufrequtils installé auparavant permet de changer de governor/fréquence depuis la console), on peut installer un applet pour gérer tout ça. En l'occurrence pour Gnome il s'agit du Moniteur de changements de fréquence du processeur que l'on peut ajouter au tableau de bord.
Et voilà ! Désormais je peux changer de profil en un clic de souris, voire passer en profil userspace en sélectionnant directement la fréquence voulue.
Le Turion ne dit plus grand-chose, mes oreilles s'en portent aussi bien !

N.B. : pour toute question, remarque ou correction, utilisez les commentaires. Ça ne m'étonnerait pas que j'aie oublié une étape quelque part ! De plus, les profils conservative et powersave ne marchent pas comme ils devraient... :D



[1] http://www.linux.it/~malattia/wiki/index.php/Cpufreqd
[2] http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufreq.html

Aucun commentaire: