Cpupower : Différence entre versions

De ArchwikiFR
(Tester : utilisation du template {{rc}})
(Tester : utilisation du template {{rc}})
Ligne 94 : Ligne 94 :
 
Si ca fonctionne, y a plus qu'à modifier {{Codeline|/etc/conf.d/cpufreq}} puis lancer:
 
Si ca fonctionne, y a plus qu'à modifier {{Codeline|/etc/conf.d/cpufreq}} puis lancer:
  
/etc/rc.d/cpufreq start
+
{{rc|cpufreq}}
  
 
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.
 
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.

Version du 17 mai 2011 à 22:46


Afin, principalement, d'augmenter l'autonomie d'un portable, les processeurs actuels disposent de technologie 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 constructeurs (les plus connus):

Pré-requis

Pour pouvoir manipuler la fréquence du cpu, il faut installer les paquets suivants:

pacman -S acpid cpufrequtils
  • acpid gère les événements propre à la gestion d'énérgie.
  • cpufrequtils permet de spécifier une configuration

Il faut rajouter les services dans le /etc/rc.conf pour les démarrer au boot, par exemple:

DAEMONS=([...] acpid cpufreq [...])

De même, il faut charger le pilote de votre processeur. La plupart des processeurs récents peuvent être gérés par le module acpi-cpufreq, néanmoins, vous pouvez jeter un oeil aux modules disponibles:

modprobe -l -t cpu/cpufreq

exemple:

MODULES=([...] acpi_cpufreq [...]).

Configuration

La configuration se passe dans le fichier: /etc/conf.d/cpufreq

Fichier: /etc/conf.d/cpufreq
#configuration for cpufreq control

# valid governors:
#  ondemand, performance, powersave,
#  conservative, userspace
governor="ondemand"

# valid suffixes: Hz, kHz (default), MHz, GHz, THz
min_freq="1.87GHz"
max_freq="3GHz"
  • governor correspond à la politique de gestion:
  • ondemand: toujours à la fréquence mini, sauf en cas de sollicitation de la part d'un processus.
  • performance: toujours à la fréquence max.
  • powersave: toujours à la fréquence mini.
  • conservative: ressemble à ondemand à la différence près que le changement de fréquence se fait par palier et non par saut.
  • 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
/etc/rc.d/acpid start

Note : Le daemon acpid est automatiquement lancé par hal, ce n'est donc pas la peine de le lancer manuellement si vous utilisez hal. De même, la commande: "/etc/rc.d/acpid start" produit une erreur s'il est déjà lancé.

Une fois le module chargé et les services lancés, on peut vérifier la prise en compte par:

$ cpufreq-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 inspirez des lignes limitation matériel 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 cpufreq-set:

cpufreq-set -c 0 -g performance

ou directement:

echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Et réutiliser cpufreq-info pour vérifier.

Si ca fonctionne, y a plus qu'à modifier /etc/conf.d/cpufreq puis lancer:

/etc/rc.d/cpufreq start

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é

cpudynd

On commence par installer le paquet:

pacman -S cpudyn

puis, on le rajoute aux services à lancer au démarrage:

DAEMONS=([...] acpid cpudyn [...])

cpudyn remplace le service cpufreq

Ce service fait la même chose que cpufreq mais permet en plus de mettre en veille les disques dur et d'affiner le passage entre les différentes fréquences etc... (on peut se passer de cpudyn et les configurer directement: Configuration avancée)
Il se configure à travers le fichier /etc/conf.d/cpudyn:

Fichier: /etc/conf.d/cpudyn
#
# Parameters to be passed to cpudynd
#

# default
CPUDYN_OPTS="-i 1 -p 0.5 0.90"

# comment 'default' & uncomment this to have your disk spin down.
#CPUDYN_OPTS="-i 1 -p 0.5 0.90 -t 120 -h /dev/hda"

cf. man cpudynd pour plus d'info.

cpufreqd

On commence par installer le paquet:

pacman -S cpufreqd

puis, on le rajoute aux services à lancer au démarrage:

DAEMONS=([...] acpid 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:

/etc/rc.d/cpufreqd start

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

Gnome

Chargez l'applet "Moniteur de changements de fréquence du processeur":

Ajout de l'applet

Si vous avez un cpu avec 2 coeurs ou avec de l'Hyperthreading, il faut rajouter un autre applet et la configurer pour qu'elle prenne en compte le 2ème cpu:

Configuration du 2ème cpu

Une fois tout ca fait, il reste plus qu'a cliquer sur l'applet pour définir la politique de gestion ou carrément la fréquence dans la plage autorisée:

Modification de fréquence


Trayfreq

Trayfreq est un outil permettant de gérer la fréquence du processeur comme l'applet de Gnome.

trayfreq-fr1.jpg
trayfreq-fr2.jpg

Vous pouvez installer le paquet trayfreq-fr 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 

Fichier: ~/.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 sourie 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
Note : Un fichier. desktop est installé dans /etc/xdg/autostart/. Il démarrera automatiquement si vous utilisez un environnement compatible XDG, sinon, il faut rajouter trayfreq dans les programmes démarrés.

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 lequelle 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
Attention : Le changement de ces valeurs peut entraîner un dysfonctionnement du cpu!


Liens

cpu-freq, Kernel Documentation (en)