Mise à jour

Utilisation du nouveau "gouvernor" intégré dans le noyau 2.6.10 : ondemand. L'utilisation de powernowd devient obsolète.

Cpu Frequency Scaling

Une des caractéristiques des processeurs Centrino est de faire varier la fréquence du CPU en fonction des besoins à un instant donné : le cpu frequency scaling (qui n'a pas de traduction francaise aussi pertinente). Cette fonction est très intéressante puisqu'elle permet de rallonger le temps de fonctionnement du portable lorsqu'il est sur batterie.

Plusieurs étapes sont nécessaires pour le faire fonctionner.

Tout d'abord, il faut activer les bons modules dans le noyau, vous devez avoir ceci :

[*] CPU Frequency scaling
[ ]   Enable CPUfreq debugging                                                               
< >   /proc/cpufreq interface (deprecated)                                                                     
Default CPUFreq governor (userspace)  --->                                                             
<M>   'performance' governor                                                                        
<M>   'powersave' governor                                                                                    
---   'userspace' governor for userspace frequency scaling                                                        
[ ]     /proc/sys/cpu/ interface (2.4. / OLD)                                                           
<M>   'ondemand' cpufreq policy governor                                                                     
<M>   CPU frequency table helpers                                                                       
---   CPUFreq processor drivers                                                                               
< > ACPI Processor P-States driver                                                                               
< > AMD Mobile K6-2/K6-3 PowerNow!                                                                        
< > AMD Mobile Athlon/Duron PowerNow!                                                                              
< > AMD Opteron/Athlon64 PowerNow!                                                                                 
< > Cyrix MediaGX/NatSemi Geode Suspend Modulation                                                            
<M> Intel Enhanced SpeedStep                                                                                     
[*]   Use ACPI tables to decode valid frequency/voltage pairs                                                  
[*]   Built-in tables for Banias CPUs                                                                       
< > Intel Speedstep on ICH-M chipsets (ioport interface)                                                     
< > Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)                                                     
< > Intel Pentium 4 clock modulation                                                                        
< > nVidia nForce2 FSB changing                                                                              
< > Transmeta LongRun                                                                                      
< > VIA Cyrix III Longhaul                                                                                        
--- shared options                                                                                            
[ ] /proc/acpi/processor/../performance interface (deprecated)     

Avant de continuer, il faut vérifier que vous avez bien le module "speedstep_centrino" chargé. Si vous avez suivi depuis le début, celui-ci devrait être chargé. Vous devez obtenir quelque chose comme ceci :

$ lsmod | grep speedstep_centrino
speedstep_centrino      8212  1
freq_table              4100  1 speedstep_centrino

Si ce n'est pas le cas, vous pouvez le charger en regardant dans la partie "Modules".

Même chose pour les modules "governor". Vérifier qu'ils sont chargés :

$ lsmod | grep cpufreq
cpufreq_ondemand        6620  1
cpufreq_powersave       1728  0
cpufreq_performance     2048  0

Si ce n'est pas le cas, vous pouvez le charger en regardant dans la partie "Modules".

Maintenant que tout est bon, vous devez vous rendre dans le répertoire regroupant toutes les infos relatives au "frequency scaling" :

$ cd /sys/devices/system/cpu/cpu0/cpufreq/

La première chose à faire est de choisir le mode de fonctionnement du frequency scaling. Pour afficher les différents modes possibles, faites :

$ cat scaling_available_governors
ondemand powersave performance userspace

Dans ce cas ci, il y a donc quatre modes de fonctionnements : ondemand, powersave, performanceet userspace. Je vais vous faire une brève description de chacun de ces quatre modes de fonctionnement. Le mode ondemand fait varier la fréquence dynamiquement suivant la charge du processeur. Le mode powersave permet de fixer la fréquence à sa valeur minimale, au contraire du mode performance qui fixe celle-ci au maximum. Le mode userspace travaille en collaboration avec le mode ondemand. Nous allons prendre le mode ondemand qui est le plus approprié pour nos besoin. Pour cela, faites :

# echo ondemand > scaling_governor

Apparait alors un fichier nommé scaling_setspeed qui contient la fréquence actuelle du CPU. Pour connaitre cette fréquence, faites :

$ cat scaling_setspeed

La fréquence variera entre sa valeur minimale et sa valeur maximale, c'est à dire :

$ cat scaling_min_freq
600000
$ cat scaling_max_freq
1500000

Elle prendra des valeurs comprises entre :

$ cat scaling_available_frequencies
1500000 1400000 1200000 1000000 800000 600000

Enfin, pour vous permettre de voir la fréquence du CPU en temps réel, je vous propose d'utiliser un petit applet :

# apt-get install gnome-cpufreq-applet

Pour le rajouter à votre tableau de bord : Ajouter au tableau de bord > Indicateur de Fréquence du CPU.