Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
utilisateurs:naziel:gestion_energie_processeur [Le 19/02/2025, 10:58]
0ol suppr apres demande sur Mattermost
— (Version actuelle)
Ligne 1: Ligne 1:
-{{tag>​Bionic tutoriel système}} 
  
----- 
- 
- 
-====== 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. 
- 
-<note important>​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!</​note>​ 
- 
-===== Pré-requis ===== 
- 
-  * Disposer des [[:​sudo|droits d'​administration]]. 
-  * installer l'​outil cpupower en installant **[[apt>​linux-tools-common]]** **[[apt>​linux-tools-generic]]** 
- 
-===== Bloquer les C-states via le BIOS ===== 
- 
-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. 
- 
-===== Gestion simple des C-states ===== 
- 
-La commande 
-<code bash>​cpupower idle-info</​code>​ 
-permet de lister les C-states compatibles avec le processeur. 
- 
-Par exemple, sur un processeur Intel Core i5 4210U, voici les C-states: 
-<code bash>​CPUidle driver: intel_idle 
-CPUidle governor: menu 
-analyzing CPU 0: 
- 
-Number of idle states: 9 
-Available idle states: POLL C1 C1E C3 C6 C7s C8 C9 C10 
-POLL: 
-Flags/​Description:​ CPUIDLE CORE POLL IDLE 
-Latency: 0 
-Usage: 33293 
-Duration: 3698149 
-C1: 
-Flags/​Description:​ MWAIT 0x00 
-Latency: 2 
-Usage: 10487775 
-Duration: 3916810744 
-C1E: 
-Flags/​Description:​ MWAIT 0x01 
-Latency: 10 
-Usage: 11362373 
-Duration: 2533863708 
-C3: 
-Flags/​Description:​ MWAIT 0x10 
-Latency: 33 
-Usage: 6611768 
-Duration: 2724211142 
-C6: 
-Flags/​Description:​ MWAIT 0x20 
-Latency: 133 
-Usage: 1759894 
-Duration: 1052846310 
-C7s: 
-Flags/​Description:​ MWAIT 0x32 
-Latency: 166 
-Usage: 4240156 
-Duration: 3148722366 
-C8: 
-Flags/​Description:​ MWAIT 0x40 
-Latency: 300 
-Usage: 3673897 
-Duration: 4457909063 
-C9: 
-Flags/​Description:​ MWAIT 0x50 
-Latency: 600 
-Usage: 2747610 
-Duration: 7647149692 
-C10: 
-Flags/​Description:​ MWAIT 0x60 
-Latency: 2600 
-Usage: 635019 
-Duration: 11682828891</​code>​ 
- 
-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, ... 
- 
-<note important>​Il est contre-productif de chercher à n'​être que sur POLL: le pc consommera plus d'​énergie et il chauffera plus!</​note>​ 
- 
-Afin de voir l'​utilisation des C-states, on passe la commande 
-<code bash>​cpupower monitor</​code>​ 
-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é. Le premier paramètre est souvent suffisant. \\ 
-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é__! 
- 
-<​note>​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.</​note>​ 
- 
-===== Gestion avancée des C-states ===== 
- 
-Il arrive que seul le Nième C-state pose problème. Dans ce cas, au lieu de se limiter aux N-1 C-states précédents,​ on peut chercher à désactiver logiciellement le C-state qui pose problème. Pour cela, on utilise la commande 
-<code bash>​sudo cpupower idle-set -d N</​code>​ 
-où N est à remplacer par le C-state qui pose problème. 
-On peut aussi chercher à empêcher logiciellement d'​utiliser un C-state sur un coeur en particulier avec le paramètre -c . 
- 
-===== Voir aussi ===== 
- 
-  * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=2032778|Un fil traitant du sujet]] sur le forum ubuntu-fr 
-  * [[http://​www.deltasight.fr/​processeurs-gestion-energie-frequence/​|Un tutoriel sur les C-states et P-states]] 
- 
----- 
- 
- 
-//​Contributeurs principaux : [[:​utilisateurs:​naziel|Naziel]] // 
- 
-//Basé sur [[http://​www.deltasight.fr/​processeurs-gestion-energie-frequence/​|« Processeurs sous Linux : gestion de l’énergie et contrôle de la fréquence »]] par Paul Chevalier .// 
  • utilisateurs/naziel/gestion_energie_processeur.1739959096.txt.gz
  • Dernière modification: Le 19/02/2025, 10:58
  • par 0ol