CPU frequency scaling (Français) - ArchWiki

Jump to content

# CPU frequency scaling (Français)

From ArchWiki

Related articles

- Power saving
- Laptop Mode Tools
- Undervolting CPU
- PHC

Cet article ou section a besoin d'être traduit(e).

Notes: Cet article ne respecte pas la structure de sa version anglophone, merci de le réécrire en conséquence. Vous pouvez aussi ajouter à la version anglophone les informations à-jour et dignes d’intérêt qui ne seraient portées que par la version francophone. Voir ArchWiki:Translation Team (Français) (Discuss in Talk: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

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.

#### 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é.

Attention: depuis que cpufrequtils est déprécié et a été remplacé par cpupower. ucpufreq doit être compilé avec qmake `"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

Attention: Le changement de ces valeurs peut entraîner une instabilité !

## Liens

cpu-freq, Kernel Documentation (en)

Categories:

- Power management (Français)
- CPU (Français)

Hidden categories:

- Pages or sections flagged with Template:Translateme
- Pages with broken package links