Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
utilisateurs:naziel:gestion_energie_processeur [Le 03/01/2019, 19:25] – [Pré-requis] naziel | utilisateurs:naziel:gestion_energie_processeur [Le 03/01/2019, 23:03] (Version actuelle) – [Gestion simple des C-states] ajout exemple naziel | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | |||
+ | ====== Gestion avancée de l' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | ===== Pré-requis ===== | ||
+ | |||
+ | * Disposer des [[: | ||
+ | * installer l' | ||
+ | |||
+ | ===== Bloquer les C-states via le BIOS ===== | ||
+ | |||
+ | Il arrive que le BIOS contienne un paramètre " | ||
+ | |||
+ | ===== Gestion simple des C-states ===== | ||
+ | |||
+ | La commande | ||
+ | <code bash> | ||
+ | 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 governor: menu | ||
+ | analyzing CPU 0: | ||
+ | |||
+ | Number of idle states: 9 | ||
+ | Available idle states: POLL C1 C1E C3 C6 C7s C8 C9 C10 | ||
+ | POLL: | ||
+ | Flags/ | ||
+ | Latency: 0 | ||
+ | Usage: 33293 | ||
+ | Duration: 3698149 | ||
+ | C1: | ||
+ | Flags/ | ||
+ | Latency: 2 | ||
+ | Usage: 10487775 | ||
+ | Duration: 3916810744 | ||
+ | C1E: | ||
+ | Flags/ | ||
+ | Latency: 10 | ||
+ | Usage: 11362373 | ||
+ | Duration: 2533863708 | ||
+ | C3: | ||
+ | Flags/ | ||
+ | Latency: 33 | ||
+ | Usage: 6611768 | ||
+ | Duration: 2724211142 | ||
+ | C6: | ||
+ | Flags/ | ||
+ | Latency: 133 | ||
+ | Usage: 1759894 | ||
+ | Duration: 1052846310 | ||
+ | C7s: | ||
+ | Flags/ | ||
+ | Latency: 166 | ||
+ | Usage: 4240156 | ||
+ | Duration: 3148722366 | ||
+ | C8: | ||
+ | Flags/ | ||
+ | Latency: 300 | ||
+ | Usage: 3673897 | ||
+ | Duration: 4457909063 | ||
+ | C9: | ||
+ | Flags/ | ||
+ | Latency: 600 | ||
+ | Usage: 2747610 | ||
+ | Duration: 7647149692 | ||
+ | C10: | ||
+ | Flags/ | ||
+ | Latency: 2600 | ||
+ | Usage: 635019 | ||
+ | Duration: 11682828891</ | ||
+ | |||
+ | 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> | ||
+ | |||
+ | Afin de voir l' | ||
+ | <code bash> | ||
+ | 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' | ||
+ | |||
+ | < | ||
+ | |||
+ | ===== 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, | ||
+ | <code bash> | ||
+ | où N est à remplacer par le C-state qui pose problème. | ||
+ | On peut aussi chercher à empêcher logiciellement d' | ||
+ | |||
+ | ===== Voir aussi ===== | ||
+ | |||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | // | ||
+ | |||
+ | //Basé sur [[http:// |