Optimisé Debian 9 avec CPU-frequtils

Généralités

Cpufrequtils est un outil en ligne de commande permettant d’ajuster la fréquence du processeur en fonction des besoins (mise à l’échelle de la vitesse CPU). Il fournit deux utilitaires destinés à inspecter et configurer la fréquence via les interfaces du noyau CPUFreq, accessibles à travers sysfs et procfs.

Une fois installé, le paquet cpufrequtils vous donne accès à deux commandes :

cpufreq-info : vous permet d’afficher l’état actuel du CPU.
cpufreq-set : vous permet de changer la fréquence et/ou de mode gouverneur.

Installation

Il suffit d’installer le paquet.

apt install cpufrequtils

Les dossiers et fichiers de configuration

Nous allons créer 3 fichiers.

/etc/init.d/cpugov.sh
/etc/init.d/cpufreq.sh
/etc/systemd/system/cpufreq.service

Configuration

Il y à cinq modes de modulation de la fréquence CPU (conservative, ondemand, performance, powersave et userspace) que l’on appelle gouverneurs.Ils permêttent de changer la fréquence du CPU selon la charge d’utilisation.

Voyont les différents gouverneurs en détails :

userspace : Utilise la frequence prédéfinie par l’utilisateur
powersave : Utilise la fréquence minimum du CPU
performance : Utilise la fréquence maximum du CPU
ondemand : Utilise la fréquence minimale puis augmente au maximum dès que la charge processeur atteint 100% de la fréquence minimale
conservative : Utilise le même principe que « ondemand » mais augmente progressivement par l’utilisation de fréquence intermédiaire avant de tourner au maximum

Fixons maintenant les performances permanentes du processeur au maximum, en créant un nouveau fichier /etc/init.d/cpugov.sh.

nano /etc/init.d/cpugov.sh

Et ajouter le script ci-dessous dedans. Modifiez les paramètres en fonction de votre processeur !

Exemple avec un processeur Intel C2750 (Fréquence : 2.4 GHz / 2.6 GHz – Nombre de threads : 8)

#!/bin/bash

cpufreq-set --cpu 0 --governor performance
cpufreq-set --cpu 1 --governor performance
cpufreq-set --cpu 2 --governor performance
cpufreq-set --cpu 3 --governor performance
cpufreq-set --cpu 4 --governor performance
cpufreq-set --cpu 5 --governor performance
cpufreq-set --cpu 6 --governor performance
cpufreq-set --cpu 7 --governor performance

cpufreq-set -u 2.40GHz
cpufreq-set -d 2.40GHz

cpufreq-set -r -g performance 

Rendez le script exécutable.

chmod +x /etc/init.d/cpugov.sh

Nous allons créer maintenent le second fichier /etc/init.d/cpufreq.sh.

nano /etc/init.d/cpufreq.sh

Et ajouter le script ci-dessous dedans.

#!/bin/sh -e

/bin/sh /etc/init.d/cpugov.sh || exit 1

exit 0 

Rendez le script exécutable.

chmod +x /etc/init.d/cpufreq.sh

Pour finir nous allons créer un service pour executer le script cpufreq.sh au démarrage du système.

Créer un nouveau fichier nommé /etc/systemd/system/cpufreq.service

nano /etc/systemd/system/cpufreq.service

Et ajouter le script ci-dessous dedans.

[Unit]
Description=/etc/init.d/cpufreq.sh
ConditionPathExists=/etc/init.d/cpufreq.sh

[Service]
Type=forking
ExecStart=/etc/init.d/cpufreq.sh
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target 

Notifier systemd qu’un nouveau fichier cpufreq.service existe en exécutant la commande suivante.

systemctl daemon-reload

Pour que le service soit lancé au démarrage du système.

systemctl enable cpufreq.service

Et pour démarrer le service.

systemctl start cpufreq.service

Commandes de base

Mettre le processeur sur le mode ondemand.

cpufreq-set --governor ondemand

Mettre le deuxième coeur sur le mode performance.

cpufreq-set --cpu 1 --governor performance

Mettre le premier coeur sur le mode performance avec une fréquence minimale de 2,40GHz.

cpufreq-set --cpu 0 --governor performance -d 2.40GHz

Mettre le premier coeur sur le mode performance avec une fréquence maximale de 2,40GHz

cpufreq-set --cpu 0 --governor performance -u 2.40GHz

Mettre tous les coeurs sur le mode powersave avec une fréquence maximale de 1,80GHz

cpufreq-set -r --governor powersave -u 1.80GHz

Tests

Tapez la commande cpufreq-info.

cpufreq-info

Vous pouvez voir les différentes fréquences possibles ainsi que les modes gouverneurs supportés.

Plage de fréquence : 2.40 GHz, 2.40 GHz, 2.30 GHz, 2.20 GHz, 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz
Régulateurs disponibles : userspace, powersave, conservative, ondemand, performance, schedutil

Et ces deux lignes nous indique la configuration actuel.

Le régulateur « performance » est libre de choisir la vitesse.
la fréquence actuelle de ce CPU est 2.40 GHz.