Comment définir intel_idle.max_cstate = 1

12

Comment puis-je définir Intel idle max cstate à 1 et comment puis-je vérifier quand cela sera fait. J'ai un problème de gel à cause des cœurs des sentiers de la baie.

J'ai essayé le noyau 4.5 4.1.12 4.4 mais le problème de gel continue. en ce moment 4.4 est ma version du noyau.

Ozan Temel
la source
Pour l'instant (8/2019), ce fil ne dit pas réellement que la définition de intel_idle.max_cstate = 1 est une résolution officielle du bogue publié en 2011. Étant donné que dans mon cas, il s'agit (a dû dupliquer) d'un problème intermittent, avant que je AJOUTER intel_idle.max_cstate = 1 à mon GRUB, j'aime obtenir de la documentation le mentionnant. Le document original de Bugzilla n'est pas clair à cet effet. Un participant à ce forum peut-il m'aider à vérifier officiellement ce «correctif»?
Jan Hus

Réponses:

21

Si vous utilisez GRUB:

Avec sudo, éditez /etc/default/grubet éditez la GRUB_CMDLINE_LINUX_DEFAULTligne en ajoutant intel_idle.max_cstate=1à tout ce qui pourrait déjà y être. Après avoir enregistré le fichier exécuté sudo update-grub, redémarrez. Nous vous suggérons d'enregistrer d'abord une copie de votre fichier grub d'origine.

Pour vérifier que votre état ne va pas plus loin que 1, utilisez un turbostat (package: linux-tools-common).

Exemple (où il y a déjà quelque chose sur le GRUB_CMDLINE_LINUX_DEFAULT):

Avant (édité):

$ sudo turbostat -S --debug sleep 10
 Avg_MHz   %Busy Bzy_MHz TSC_MHz     SMI  CPU%c1  CPU%c3  CPU%c6  CPU%c7 CoreTmp  PkgTmp Pkg%pc2 Pkg%pc3 Pkg%pc6 PkgWatt CorWatt GFXWatt
       1    0.04    1654    3411       0    0.12    0.03   99.82    0.00      29      29    0.07    0.03   99.51    3.85    0.20    0.23
10.001629 sec

Faites le changement (en utilisant ma méthode pour le contrôle de configuration):

~/config/etc/default$ cp /etc/default/grub ./
~/config/etc/default$ cp grub grub.original
~/config/etc/default$ nano grub

Change ça:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"

Pour ça:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 intel_idle.max_cstate=1"

Et mettre à jour:

~/config/etc/default$ sudo cp grub /etc/default
~/config/etc/default$ sudo update-grub
~/config/etc/default$ sudo reboot -r now

Maintenant, vérifiez (édité):

$ sudo turbostat -S --debug sleep 10
 Avg_MHz   %Busy Bzy_MHz TSC_MHz     SMI  CPU%c1  CPU%c3  CPU%c6  CPU%c7 CoreTmp  PkgTmp Pkg%pc2 Pkg%pc3 Pkg%pc6 PkgWatt CorWatt GFXWatt
       0    0.02    1920    3411       0   99.98    0.00    0.00    0.00      39      39    0.00    0.00    0.00   10.49    6.66    0.23
10.001079 sec

Vous devriez également voir ces messages dans dmesget var/log/kern.log(modifiés):

~$ dmesg | grep intel_idle
[    1.019709] intel_idle: max_cstate 1 reached

$ grep intel_idle /var/log/kern.log
Mar 23 08:10:32 s15 kernel: [    1.019709] intel_idle: max_cstate 1 reached
Doug Smythies
la source
Je me demande quelle valeur, dans la sortie de turbostat, montre que l'état cstate ne va pas plus loin que 1. Que voulez-vous dire deeper? Que faire différemment si cela va plus loin?
Stephane
1
@Stephane: Par "plus profond", je voulais dire des états c plus élevés que 1. si vous avez défini correctement la ligne de commande grub, cela ne devrait pas aller plus profondément cstate (plus haut que) 1. Vous pouvez observer le CPU et le package, cstates plus grand 1 indique 0,00% de temps dans ces états sur la ligne de sortie du turbostat.
Doug Smythies
1
Mon Thinkpad X201i faisait des redémarrages brusques toutes les heures. J'ai activé le intel_idle.max_cstate=1dans le grub comme GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_idle.max_cstate=1"avec une mise à jour grub sudo update-grubet redémarré la machine. Aucun redémarrage dur ne se produit plus. Je (suis content d'avoir résolu mon problème. Je me demande ce que cette propriété dit exactement au CPU.
Stephane
Pour info, je suis en train de suivre ce rapport de bug depuis environ un an et il pourrait aussi vous intéresser: bugzilla.kernel.org/show_bug.cgi?id=109051 . Aussi ici en AU: askubuntu.com/questions/803640/…
WinEunuuchs2Unix
3

Après avoir eu les mêmes problèmes de gel avec Linux et mon asrock Q2900, j'ai trouvé sur un site Web informatique allemand la solution / solution de contournement fournie par Intel. ( https://www.golem.de/news/intel-einfrieren-bei-intels-bay-trail-socs-durch-patch-abgefedert-1609-123546.html ) Il y a un problème général avec Bay-Trail-SoCs d'Intel. Le lien vers le patch: https://bugzilla.kernel.org/attachment.cgi?id=223851

Informations supplémentaires: Ce patch / script obtient le mode d'économie d'énergie. La solution de sujet ci-dessus supprime ce mode du tout.

Helle
la source
Bienvenue sur Ask Ubuntu! Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir les liens de référence.
Elder Geek
1

Modifiez / etc / defaults / grub:

GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=1"

Courir

update-grub
shutdown -r now
BSDguru
la source
0

Il n'est plus nécessaire de mettre à jour grub si vous passez à un noyau le plus récent.

Selon le commentaire # 1013 dans le rapport de bogue, il est maintenant corrigé:

Je n'ai pas vérifié ce fil depuis longtemps, mais j'ai pensé que je devrais poster mes résultats au cas où cela serait utile à quiconque.

Un ordinateur bas de gamme alimenté par un Intel N2807 qui n'a jamais fonctionné plus de 30 mn sans planter quand je n'ai pas réglé ... max_cstates = 1 fonctionne désormais parfaitement avec un noyau d'origine v. 5.3.1 ou 4.19.75. Je l'ai exécuté pendant quelques jours avec chaque version sans aucun problème. La consommation électrique moyenne a également baissé d'un peu plus de 10%.

Il a fallu environ quatre ans pour corriger ce bogue signalé pour la première fois le 8 décembre 2015.

WinEunuuchs2Unix
la source