Cpu-frequtils

Optimiser son serveur Debian 9 avec Cpu-frequtils

Généralités
Installation
Les dossiers et fichiers de configuration
Configuration
Commandes de base
Tests

Cpufrequtils permettent de modifier selon ses besoins la vitesse du processeur (aussi connu sous le nom de mise à l'échelle de la vitesse du CPU), c'est un outil en ligne de commande. Il contient deux utilitaires pour inspecter et configurer la fréquence du processeur via les interfaces noyau sysfs et procfs de CPUFreq.

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

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

Il suffit d'installer le paquet.

apt install cpufrequtils

Nous allons créer 3 fichiers.

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

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

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

Tapez la commande cpufreq-info.

cpufreq-info

Vous devriez voir quelque chose comme ça (exemple le cpu7).

Vous pouvez voir que ces lignes nous montres 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.