CPU frequency scaling (Français)
Afin, principalement, d'augmenter l'autonomie d'un portable, les processeurs actuels disposent de technologies pouvant influer sur la fréquence du cpu pour mieux réguler la consommation et le dégagement de chaleur selon l'utilisation. Notons aussi que cette technologie existe pour les postes fixes, bien que le gain en énergie soit marginal, contrairement à la différence de chaleur évacuée. :)
Deux technologies existent, une pour chaque constructeur (les plus connus) :
- SpeedStep ou EIST pour Intel
- PowerNow ou Cool'n'Quiet pour Amd
Installation
Vous pouvez installer le paquet cpupower avec Pacman.
pacman -Syu cpupower
Configuration
La configuration se passe dans le fichier: /etc/default/cpupower
/etc/default/cpupower
# valid governors: # ondemand, performance, powersave, # conservative, userspace governor="ondemand" # valid suffixes: Hz, kHz (default), MHz, GHz, THz min_freq="1.87GHz" max_freq="3GHz" # use freq to set up the exact cpu frequency using it with userspace governor #freq=
governor correspond à la politique de gestion :
- ondemand: toujours à la fréquence mini, sauf en cas de sollicitation de la part d'un processus. Retombe aussitôt (performances affectées).
- performance: toujours à la fréquence max.
- powersave: toujours à la fréquence mini.
- conservative: ressemble à ondemand sauf que le changement de fréquence se fait par paliers avec un petit délai, et non par sauts. (n'a pas le souci de performance d'ondemand)
- userspace: délègue la tâche à un programme dans l'espace utilisateur.
Tester
Pour tester avant de redémarrer (Amd: remplacer acpi_cpufreq par powernow-kX) :
modprobe acpi_cpufreq
Une fois le module chargé, on peut vérifier la prise en compte par :
cpupower frequency-info
cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006 Veuillez rapportez les erreurs et les bogues à linux@brodo.de, s'il vous plait. analyse du CPU 0 : pilote : acpi-cpufreq CPUs qui doivent changer de fréquences en même temps : 0 limitation matérielle : 1.87 GHz - 3.07 GHz plage de fréquence : 3.07 GHz, 2.67 GHz, 2.40 GHz, 2.13 GHz, 1.87 GHz régulateurs disponibles : ondemand, performance tactique actuelle : la fréquence doit être comprise entre 1.87 GHz et 3.00 GHz. Le régulateur "ondemand" est libre de choisir la vitesse dans cette plage de fréquences. la fréquence actuelle de ce CPU est 2.13 GHz. analyse du CPU 1 : pilote : acpi-cpufreq CPUs qui doivent changer de fréquences en même temps : 1 limitation matérielle : 1.87 GHz - 3.07 GHz plage de fréquence : 3.07 GHz, 2.67 GHz, 2.40 GHz, 2.13 GHz, 1.87 GHz régulateurs disponibles : ondemand, performance tactique actuelle : la fréquence doit être comprise entre 1.87 GHz et 3.00 GHz. Le régulateur "ondemand" est libre de choisir la vitesse dans cette plage de fréquences. la fréquence actuelle de ce CPU est 2.13 GHz.
Vous pouvez vous inspirer des lignes limitation matérielle et plage de fréquence pour configurer cpufreq.
Pour spécifier une politique de gestion, on peut le faire (en root) par le biais de la commande cpupower frequency-set
:
cpupower -c 0 frequency-set -g performance
ou directement:
echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Et réutiliser cpupower frequency-info pour vérifier.
Si ça fonctionne, il n'y a plus qu'à modifier /etc/default/cpupower
puis lancer :
systemctl start cpupower
Jusque là, on a spécifié une seule politique de gestion des fréquences et on demande au système de s'y tenir ; mais si on veut pousser un peu la configuration et avoir un contrôle plus fin sur la fréquence du processeur, on peut utiliser le service cpufreqd ou laisser l'utilisateur modifier la configuration.
Avancé
Daemon
Pour lancer le service automatiquement au démarrage, vous devez lancer la commande suivante :
systemctl enable cpupower.service
cpufreqd
On commence par installer le paquet AUR cpufreqdAUR.
Puis, on le rajoute aux services à lancer au démarrage :
systemctl enable cpufreqd
cpufreqd remplace le service cpufreq (sans le d)
Ce paquet est fourni avec un fichier de configuration assez simple dans sa construction (/etc/cpufreqd.conf
) et qui conviendra sûrement à la majorité des utilisations.
Sans être exhaustif, le fichier comporte :
- des profiles définissant la politique à appliquer.
[Profile] name=On Demand High minfreq=40% maxfreq=100% policy=ondemand [/Profile]
L'exemple est assez explicite.
- des règles regroupant un certain nombre de critères à tester.
[Rule] name=AC Off - High Power ac=off battery_interval=70-100 profile=On Demand High [/Rule]
Cette règle permet d'appliquer le profile donné en exemple pour un fonctionnement sur batterie avec un taux de charge supérieur à 70%.
Une fois le fichier configuré aux petits oignons, il suffit de démarrer le service :
systemctl start cpufreqd
Espace utilisateur
Avant d'utiliser les outils permettant de modifier la fréquence dans l'espace utilisateur, il faut s'assurer que les politiques qui vous intéressent (qui sont en fait des modules) soient chargées :
- cpufreq_powersave
- cpufreq_ondemand
- cpufreq_conservative
Le governor performance étant par défaut et le cpufreq_userspace étant obligatoire.
modprobe cpufreq_powersave cpufreq_ondemand cpufreq_conservative cpufreq_userspace
Trayfreq
Trayfreq-frAUR[broken link: package not found] est un outil permettant de gérer la fréquence du processeur comme l'applet de Gnome.
Vous pouvez installer le paquet trayfreq-frAUR[broken link: package not found] depuis AUR.
Configuration:
Pour gérer finement ce que doit afficher l’icône, il faut modifier le fichier de configuration: ~/.trayfreq.config
. Vous pouvez éventuellement vous servir du fichier exemple:
cp {/usr/share/trayfreq/,~/.}trayfreq.config
~/.trayfreq.config
[battery] show=1 # 1 pour afficher l'icône de la batterie , 0 pour la cacher governor=powersave # Le profil à charger quand la batterie se décharge [events] # événement (bouton gauche de la souris sur l'icône.) activate=/usr/bin/xterm # ici on lance /usr/bin/xterm. [governor] default=ondemand # C'est le profil par défaut que trayfreq utilise au démarrage [ac] # Branché governor=ondemand [frequency] default=800000 # Fréquence par défaut
trayfreq
dans les programmes démarrés.BatterySystemTray & UCpufreq
batterysystemtray-gitAUR[broken link: package not found] est une application de gestion de batterie et prends aussi en charge la modification de la fréquence et du profile. La gestion du cpu est faite à l'aide du daemon ucpufreq-gitAUR[broken link: package not found], lancé automatiquement par dbus quand le service sera réclamé.
"USE_CPUPOWER=1"
.Une fois ces deux applications installées, lancez "ptbatterysystemtray" et rendez-vous dans l'onglet "UCpufreq" ou sur l'icône dans la zone de notification pour gérer votre profile.
Configuration avancée
La configuration de cpufreq ne se limite pas seulement à changer la politique de gestion (governor), on peut l'affiner en modifiant directement les valeurs utilisées par les governors. Ces paramètres sont accessibles depuis :
/sys/devices/system/cpu/cpu*/cpufreq/{ondemand,conservative}
cpu* représente le cpu sur lequel est appliqué la politique.
On modifie ces valeurs par un simple :
echo x > chemin_vers_valeur
Valeur | ondemand | conservative | Description | Valeur par défaut |
---|---|---|---|---|
ignore_nice_load | x | x | Prise en compte des processus lancés avec nice (0) ou pas (1) | 0 |
sampling_rate | x | x | Intervalle de temps en micro-secondes pour relever la charge cpu | 160000 |
up_threshold | x | x | Seuil de charge au delà duquel la décision de monter la fréquence est prise | 80 |
down_threshold | x | Seuil de charge au dessous duquel la décision de descendre la fréquence est prise | 20 | |
sampling_down_factor | x | Nombre de mesures (cf. sampling_rate) avant la prise de décision | 1 | |
freq_step | x | Palier de changement de fréquence | 5 |