Ceci est une ancienne révision du document !



Gestion avancée de l'énergie du processeur

Les C-states sont des états de veille des coeurs du processeur. Le but de ce tutoriel est de voir une méthode pour gérer les C-states sur Linux. Cela est utile dans le cas où la gestion d'énergie du processeur est mal faite et provoque ainsi un gel aléatoire du système. Cela s'observe notamment sur les ordinateurs peu chers avec processeur Intel Bay Trail et quelques Intel Celeron qui sont basés sur les processeurs précédemment cités.

Si le noyau gère bien la gestion d'énergie du processeur et qu'il n'y a donc pas de gels, alors ne suivez pas ce tutoriel!

Il arrive que le BIOS contienne un paramètre "C-states control" pour activer/désactiver les C-states. Si l'option est disponible, désactiver les C-states via le BIOS permettra d'être sûr que c'est la cause des gels aléatoires. C'est donc la première chose à vérifier en cas de gels aléatoires.

La commande

cpupower idle-info

permet de lister les C-states compatibles avec le processeur. POLL correspond à un processeur totalement actif, et plus on avance dans les C-states, plus le processeur est partiellement en veille. On fait correspondre la valeur 0 à POLL, 1 au premier C-state, …

Il est contre-productif de chercher à n'être que sur POLL

Afin de voir l'utilisation des C-states, on passe la commande

cpupower monitor

ce qui permet de déduire les C-states qui pourraient poser problème.

Afin de bloquer logiciellement les C-states, deux paramètres à passer à Grub sont importants ici:

  • intel_idle.max_cstate=N
  • processor.max_cstate=N

où N est à remplacer par le numéro au dernier C-state qui peut être utilisé. Si par exemple le 4ème C-state est mal géré par le noyau Linux et que les 3 premiers ne posent pas problème, alors on remplace N par 3 pour éviter les gels.

Si vraiment aucun C-state à part POLL est correctement géré, passer le paramètre intel_idle.max_cstate=0 ne suffira pas, passer en plus idle=poll permettra de n'utiliser que POLL, mais cela n'est pas recommandé!

En règle générale, sur des processeurs Intel Bay Trail, le paramètre intel_idle.max_cstate=1 suffit à empêcher les gels.
  • utilisateurs/naziel/gestion_energie_processeur.1546542262.txt.gz
  • Dernière modification: Le 03/01/2019, 20:04
  • par naziel