Les processeurs inactifs affichent une fréquence de 800 MHz dans /proc/cpuinfo en raison d'une optimisation introduite dans le noyau Linux 5.11 et versions ultérieures. Utilisez cpupower ou turbostat pour obtenir des mesures de fréquence précises.
Description du problème
Lorsqu'une instance est inactive, le fichier /proc/cpuinfo peut indiquer une fréquence de processeur de 800 MHz pour certains cœurs. Cette valeur diffère de la fréquence indiquée dans les spécifications de l'instance, comme illustré ci-dessous.
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 2996.976
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 3192.046
cpu MHz : 800.000
cpu MHz : 3200.000
cpu MHz : 800.000
cpu MHz : 2975.717
cpu MHz : 800.000
cpu MHz : 3005.653
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
Cette solution s'applique également aux noyaux et systèmes d'exploitation suivants :
Cause
À partir du noyau Linux 5.11, un correctif (ID de commit : 3fcd6a230fa7d03bffcb831a81b40435c146c12b) a été ajouté afin d'améliorer les performances du système et la réactivité du processeur.
x86/cpu: Avoid cpuinfo-induced IPIing of idle CPUs
Currently, accessing /proc/cpuinfo sends IPIs to idle CPUs in order to
learn their clock frequency. Which is a bit strange, given that waking
them from idle likely significantly changes their clock frequency.
This commit therefore avoids sending /proc/cpuinfo-induced IPIs to
idle CPUs.
Lors de la consultation du fichier /proc/cpuinfo, la fonction rcu_is_idle_cpu vérifie si le processeur est inactif. Si tel est le cas, elle renvoie la valeur min_freq, définie par défaut à 800 MHz. Certaines versions du noyau signalent cette valeur min_freq comme étant la fréquence de base du processeur.
Solution
La fréquence affichée à l'état inactif peut ne pas correspondre aux spécifications, mais les performances réelles ne sont pas affectées, car le processeur atteint toujours sa fréquence spécifiée sous charge.
Pour obtenir des mesures de fréquence précises, utilisez des outils tels que cpupower ou turbostat.
Par exemple, exécutez la commande cpupower pour vérifier la fréquence :
sudo cpupower frequency-info
La sortie indique que la fréquence actuelle du processeur est de 3,20 GHz.
[ecs-user@iZ2zxxx187kyZ ~]$ sudo 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: 800 MHz - 3.80 GHz
available cpufreq governors: performance powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 3.20 GHz (asserted by call to kernel)
boost state support:
Supported: yes
Active: yes
Certains types d'instances peuvent ne pas prendre en charge cette requête de fréquence. Consultez la rubrique Présentation des familles d'instances pour connaître la fréquence de base de votre instance spécifique.