Aujourd'hui, faisons un tour dans le monde mervéilleux des microprocesseurs! Après avoir été libérée par son intégration dans des imac et autre saletés du genre, la puce INTEL va maintenant prendre un bon coup de froid, histoire de calmer ses ardeurs en période de réchauffement climatique. Bien sûr, Il n'y a pas que les cpu INTEL qui chauffent, ceux d'AMD sont aussi concernés, de même que tous les processeurs qui peuvent faire varier leur fréquence (à ma connaissance, en x86, seuls les PentiumIV, pentium M et AMD K7/8 le peuvent).

Les prérequis sont donc d'avoir un processeur adéquat, de même qu'une carte mère qui ne bride pas cette possibilité (mis-à-part tester, je ne sais pas comment connaitre cette info a priori, puisque ce n'est jamais inscrit en clair dans les manuels des différents matériels. Le deuxième point est d'avoir un système GNU/linux en état de fonctionnement, le mieux étant d'avoir un kernel récent et d'avoir sysfs activé. Pour arriver à faire varier la fréquence de votre cpu, c'est très simple :

  1. Repérer le module adapté à votre processeur :
    • p4-clockmod pour les PentiumIV
    • speedstep-centrino pour les Pentium M
    • powernow-k6/7 ou 8 pour les AMD
  2. Charger ce module (par exemple modprobe p4-clockmod pour mon PIV)
  3. Charger le module cpufreq_ondemand
  4. echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  5. C'est fini!

Comme vous le voyez c'est vraiment pas compliqué. Pour vérifier que cela marche correctement, faites un

cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq

, qui vous retournera la fréquence actuelle de votre cpu (parfois, un cat /proc/cpuinfo suffit, mais il arrive que cette valeur ne soit pas correctement changée). Si vous voulez automatiser tout ceci, rajoutez les 2 modules (p4-clockmod et cpufreq_ondemand) au fichier /etc/modules, installez le paquet sysfsutils et ajoutez les lignes suivantes dans le fichier /etc/sysfs.conf :

devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand
devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate = 500000
devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold = 60

Et voili voilou, rien d'autre à faire!