En tant que passionné de performances Web, je suis toujours à la recherche de moyens d'améliorer les performances du système et d'accélérer les applications Web. Et aujourd'hui, je vais partager avec vous la magie de la mise à l'échelle de la fréquence du processeur et un guide pratique pour désactiver la mise à l'échelle de la fréquence du processeur afin de faire fonctionner votre système à pleine vitesse.
Avant d'aborder la désactivation de la mise à l'échelle de la fréquence du processeur, comprenons ce qu'est la limitation du processeur.
Qu'est-ce que la mise à l'échelle de la fréquence du processeur ?
Depuis Kernel v. 2.6.18 (CentOS) et 2.6.32 (Ubuntu), une nouvelle fonctionnalité appelée Mise à l'échelle dynamique de la fréquence du processeur (également appelée limitation du processeur) a été introduite.
Cette variation de fréquence du processeur permet à un processeur de fonctionner à une fréquence inférieure à la fréquence maximale autorisée. Ceci est fait uniquement pour préserver la consommation d'énergie, mais l'inconvénient est que vous ne pouvez pas utiliser la pleine vitesse de votre processeur.
Comment puis-je savoir à quelle vitesse mon processeur fonctionne ?
Exécutez cette commande, comme vous le voyez ci-dessous :
grep -E '^model name|^cpu MHz' /proc/cpuinfo
Le résultat devrait ressembler à ceci :
[[email protected]:~]grep -E '^model name|^cpu MHz' /proc/cpuinfo model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000
Comme vous le voyez, la vitesse du processeur d'origine est de 3,40 Ghz, mais la vitesse du processeur en Mhz est d'environ 1600. Le processeur fonctionne à la moitié de sa vitesse totale.
Cela peut également être réalisé avec un package CPU sympa appelé cpufrequtils / cpupoweruitls
Installer cpupowerutils sur CentOS/Debian
yum install cpupowerutils -y
Installer cpupowerutils sur Ubuntu/Debian
apt-get install cpufrequtils
Exécutez maintenant cette commande, et elle vous montrera des informations sur la vitesse minimale et maximale de votre processeur, entre autres détails :
cpupower frequency-info
Le résultat attendu devrait ressembler à ceci :
[[email protected]:~]cpupower frequency-info analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 1.60 GHz - 3.80 GHz available cpufreq governors: performance powersave current policy: frequency should be within 1.60 GHz and 3.80 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: 1.60 GHz (asserted by call to hardware) boost state support: Supported: yes Active: yes 3600 MHz max turbo 4 active cores 3700 MHz max turbo 3 active cores 3800 MHz max turbo 2 active cores 3800 MHz max turbo 1 active cores
Désactiver la mise à l'échelle de la fréquence du processeur sous Linux (RedHat et Ubuntu)
Voyons comment désactiver la mise à l'échelle de la fréquence du processeur sur les plates-formes Linux les plus populaires.
Pour les utilisateurs de CentOS/RHEL
Modifions la fréquence du processeur à la vitesse maximale disponible avec la commande suivante :
cpupower frequency-set -g performance
Voyons à nouveau s'il y a un changement dans la vitesse d'exécution du processeur :
[[email protected]:~]grep -E '^model name|^cpu MHz' /proc/cpuinfo model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3497.218 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3392.296 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3397.742 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 2283.578 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3457.640 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 2133.234 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.257 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3740.265 [[email protected]:~]
Comme vous le voyez dans la commande précédente, le processeur tourne maintenant plus haut qu'avant lorsqu'il est nécessaire.
Une autre façon de le faire manuellement consiste à exécuter cette commande qui fera passer le gouverneur du processeur du mode "à la demande" au mode "performance" pour tous vos processeurs :
for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do [ -f $CPUFREQ ] || continue; echo -n performance > $CPUFREQ; done
Si votre système exécute l'un des démons contrôlant la vitesse du processeur, arrêtez-le simplement pour que votre système fonctionne à pleine vitesse :cpuspeed, cpufreqd ou powerd.
service cpuspeed stop
Pour les utilisateurs d'Ubuntu/Debian
Modifiez ce fichier, et s'il n'existe pas, créez-le simplement :
nano -w /etc/default/cpufrequtils
Ajoutez la ligne suivante à l'intérieur :
GOVERNOR="performance"
Enregistrez en appuyant sur CTRL + X, puis appuyez sur Y.
Étape suivante :désactivez le démon ondemand pour éviter de perdre vos modifications après le redémarrage du serveur, exécutez cette commande :
update-rc.d ondemand disable
C'est tout. Vérifiez à nouveau vos paramètres avec cette commande :
cpufreq-info
Conclusion
Faire fonctionner votre processeur à pleine vitesse peut vraiment améliorer les performances de vos applications. La plupart des processeurs modernes ont déjà de très bons systèmes de refroidissement du processeur, donc cela ne devrait pas être un problème, mais assurez-vous que cela ne provoque pas une énorme consommation d'énergie supplémentaire ou une surchauffe du processeur. Comme vous le voyez, vous pouvez facilement désactiver la mise à l'échelle de la fréquence du processeur pour les distributions basées sur RedHat et Debian. Veuillez nous faire savoir si vous avez des problèmes ou des questions à ce sujet.
Autres lectures :
- Mise à l'échelle de la fréquence du processeur sous Linux avec cpufreq
- Documents sur la mise à l'échelle de la fréquence du processeur ArchLinux
- Documentation RedHat CPUFreq Governors