Frequency scaling pour processeurs qui ne seraient pas censés l'avoir3 min read

Hier, il faisait chaud, et, par je ne sais quel méandre mental, je me suis demandé s’il était vraiment impossible de downclocker un processeur Pentium 4 B ou Celeron D selon la charge du système. Cette technique (connue sous le nom de SpeedStep chez Intel) est normalement appliquée sur les processeurs récents ou processeurs d’ordinateurs portatifs pour réduire la consommation énergétique et la génération de chaleur. Or, le cuiseur automatique qu’est mon Pentium 4 n’est pas censé pouvoir faire ça.
Ha ha. On est sous Linux. On fait ce qu’on veut. C’est ce que j’ai découvert suite à la lecture d’un post solitaire dans un forum, expliquant comment utiliser powernowd sur un Pentium 4. Selon mes recherches et mon expérience, cette technique fonctionne aussi bien avec un Celeron D (c’est le cas de Kirika).
En somme,

  1. sudo modprobe p4-clockmod (c’est là toute l’astuce)
  2. sudo apt-get install powernowd (s’il n’est pas déjà installé, comme dans le cas de mon serveur)
  3. paramétrer powernowd tel qu’indiqué dans le post de forum, si désiré
  4. sudo /etc/init.d/powernowd restart (maintenant que p4-clockmod est chargé, powernowd va fonctionner après son redémarrage)
  5. si tout ça nous satisfait, faire en sorte que p4-clockmod soit chargé au démarrage pour que powernowd l’utilise. Pour ce faire, il faut simplement modifier le fichier /etc/modules et ajouter p4-clockmod quelque part à la fin.

Mon processeur 2.4 GHz se downclocke maintenant jusqu’à 300 MHz, avec 8 niveaux de vitesse selon l’utilisation du système. Maintenant, ceci nous promet un moins grand gaspillage énergétique; est-ce que ça fonctionne vraiment? Eh bien, à en croire les senseurs de mon ordinateur de bureau, la température chute d’environ 2 à 6 degrés Celsius dépendamment de la composante. C’est pas juste le processeur qui en bénéficie.
De gauche à droite, mes senseurs température de la carte mère, le processeur, l’alimentation, et un truc inconnu (j’ai pas de processeur AMD dans cette machine, contrairement à ce que le senseur veut me faire croire ¬_¬). Je ne suis pas certain que les senseurs correspondent vraiment aux composantes, notamment du fait que le processeur serait plus froid que la carte mère et aurait un changement de température moins drastique. Ça va un peu contre la logique.
Avant l’utilisation de p4-clockmod et powernowd:

Après (pour tester empiriquement, j’ai attendu un bon bout de temps, et j’utilisais l’ordinateur normalement. Douze heures plus tard, les températures sont toujours aussi basses):

Je me suis ensuite dit: «woah, j’espère que ça fonctionne avec un Celeron D, parce que franchement, la casserole de Kirika n’a jamais été testée durant l’été». Eh bien oui, en utilisant le même module, p4-clockmod, ça fonctionne aussi pour un Celeron:

Je viens pas un peu d’arnaquer Intel, là?
Avec la température un peu plus fraîche et normale d’aujourd’hui, les résultats sont assez frappants lorsque je laisse l’ordinateur au repos (mais, en tant que rigoureux scientifique, je me garde de comparer ces valeurs aux résultats d’hier soir):

P.s.: hello, planète Ubuntu Québec! Et merci à David Giard de m’avoir ajouté et d’avoir réglé les bugs résultant de l’inclusion du flux de mon blog wordpress.