Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
utilisateurs:naziel:gestion_energie_processeur [Le 20/02/2023, 21:59] moths-art correctif <code> auto via wiki-corrector https://forum.ubuntu-fr.org/viewtopic.php?id=2067892 |
— (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 .// |