Julien De Bona
Free Software, Cooking, and Everything


Gestion du processeur du Gdium

Publié le 2009-07-07.

Dans son état d'origine, le Gdium chauffe pas mal et a une autonomie assez mauvaise. Voici les opérations permettant de gérer ces problèmes.

Note: ces surchauffes semblent être le fait de ce premier Gdium défectueux, mais les instructions ci-dessous restent utiles.

Contrôle de la fréquence

Aspects bas-niveau

La fréquence du processeur se contrôle via les fichiers dans /sys/devices/system/cpu/cpu0/cpufreq :

cpuinfo_cur_freq
Indique la fréquence actuelle du processeur (en kHz)
scaling_max_freq et scaling_min_freq
Indique les limites (toujours en kHz) des fréquences auxquelles le processeur peut tourner. On peut écrire dans ces fichiers pour fixer ces limites
scaling_available_frequencies
La liste de toutes les fréquences utilisables
scaling_available_governors
La liste des modes de gestion de la fréquence du processeur; par défaut, il n'y en a qu'un: performance, qui garde toujours le processeur à fond. Cette liste est mise à jour lorsque les modules du kernel adéquats sont chargés.
scaling_governor
Le mode de gestion des fréquences courant. On peut y écrire la valeur du governor désiré, par exemple ondemand, qui garde le processeur à la vitesse minimale, sauf en cas de besoin. Le module pour ce mode est cpufreq_ondemand.

Mise en oeuvre

On peut faire un petit script pour mettre sa politique préférée en oeuvre, mais il existe déjà.

  1. Installer le paquet cpufreq (onglet Configurer, Ajout/Suppression de programmes)
  2. Dans le fichier /etc/sysconfig/cpufreq, décommenter la ligne #GOVERNOR=ondemand
  3. Vérifier que le service est lancé au démarrage, soit par la présence d'un lien S50cpufreq dans /etc/rc5.d, ou l'outil graphique de gestion des services.
  4. Editer /etc/init.d/cpufreq, qui n'est pas adapté à finit. En effet, finit (plus précisément /usr/sbin/services.sh) teste les services en lançant ce script avec l'argument status pour ne le lancer que s'il n'a pas déjà été activé. Or, le script retourne toujours dans ce cas un code de retour de succès, et n'est donc pas lancé au boot. La modification précise à faire se trouve plus bas

Modification de /etc/init.d/cpufreq

Aller dans la section status) et ajouter ce qui suit juste avant les deux points-virgules:

if [ -f /var/log/subsys/cpufreq ]; then
RETVAL=0
else
RETVAL=1
fi

Le refroidissement

Aspects bas-niveau

Le ventilateur est géré par une sonde (module lm75). Les fichiers dans /sys pour sa gestion sont /sys/class/hwmon/hwmon0/device/temp1_*. temp1_input rapporte la température courante de la sonde, temp1_max indique au delà de quelle température le ventilateur se déclenche et temp1_max_hyst la température en-dessous de laquelle le ventilateur s'éteint. Mise en oeuvre

Les valeurs peuvent se configurer avec lm_sensors (ficnier de configuration /etc/sensors.conf et script chargeant ce fichier /etc/init/d/lm_sensors). Par défaut, /etc/sensors.conf contient:

chip "lm75-*"
set temp_over 60
set temp_hyst 55

A noter que les températures sont en degrés dans sensors.conf et en millièmes de degrés dans /sys. temp_over correspond au fichier temp1_max et temp_hyst au fichier temp1_max_hyst.


tags: gdium, linux

Quelques tags ...