Jak ustawić intel_idle.max_cstate = 1

12

Jak mogę ustawić Intel Idle Max Cstate na 1 i jak mogę sprawdzić, kiedy to zrobi. mam problem z zamrażaniem z powodu rdzeni zatoki.

Próbowałem jądra 4.5 4.1.12 4.4, ale problem z zawieszaniem się nadal trwa. w tej chwili 4.4 jest moją wersją jądra.

Ozan Temel
źródło
Na dzień dzisiejszy (8/2019) ten wątek tak naprawdę nie stwierdza, że ​​ustawienie intel_idle.max_cstate = 1 jest oficjalnym rozwiązaniem błędu opublikowanego w 2011 roku. Ponieważ w moim przypadku jest to (musiałem zduplikować) problem sporadyczny, zanim ja DODAJ intel_idle.max_cstate = 1 do mojego GRUBA, lubię otrzymywać dokumentację, która to potwierdza. Oryginalny dokument Bugzilli jest niejasny. Czy jakiś uczestnik tego forum może mi pomóc oficjalnie zweryfikować tę „poprawkę”?
Jan Hus

Odpowiedzi:

21

Jeśli używasz GRUB:

Za pomocą sudo, edytuj /etc/default/grubi edytuj GRUB_CMDLINE_LINUX_DEFAULTlinię dodając intel_idle.max_cstate=1do wszystkiego, co może już tam być. Po zapisaniu uruchom plik sudo update-grub, a następnie uruchom ponownie. Sugeruje się, aby najpierw zapisać kopię oryginalnego pliku grub.

Aby sprawdzić, czy twój stan nie schodzi głębiej niż 1, użyj turbostatu (pakiet: linux-tools-common).

Przykład (gdzie jest już coś na GRUB_CMDLINE_LINUX_DEFAULT):

Przed (edytowane):

$ 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

Wprowadź zmiany (używając mojej metody do kontroli konfiguracji):

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

Zmień to:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"

Do tego:

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

I aktualizacja:

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

Teraz sprawdź (edytowano):

$ 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

Powinieneś również zobaczyć te wiadomości w ( dmesgi var/log/kern.logedytowane):

~$ 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
źródło
Zastanawiam się, jaką wartością w danych wyjściowych turbostatjest pokazanie, że stan nie idzie głębiej niż 1. Co masz na myśli deeper? Co robić inaczej, jeśli idzie głębiej?
Stephane
1
@Stephane: Przez „głębsze” miałem na myśli wyższe stany c niż 1. jeśli poprawnie ustawiłeś wiersz poleceń grub, nie powinno ono przechodzić do cstate głębiej (wyżej niż) 1. Możesz obserwować procesor i pakiet, cstates większe niż 1 pokazuje 0,00% czasu w tych stanach na linii wyjściowej turbostatu.
Doug Smythies,
1
Mój Thinkpad X201i co godzinę bardzo się restartuje. Włączyłem intel_idle.max_cstate=1w grub jak GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_idle.max_cstate=1"z aktualizacją grub sudo update-grubi ponownie uruchomiłem maszynę. Nie występują już żadne twarde restarty. Cieszę się, że rozwiązałem problem. Zastanawiam się, co dokładnie ta właściwość mówi procesorowi.
Stephane
Do Twojej wiadomości obserwuję ten raport o błędach od około roku i może Cię również zainteresować: bugzilla.kernel.org/show_bug.cgi?id=109051 . Również tutaj w AU: askubuntu.com/questions/803640/…
WinEunuuchs2Unix
3

Po tych samych problemach z zawieszaniem się w systemie Linux i moim asrocku Q2900 znalazłem na niemieckiej stronie IT rozwiązanie / obejście dostarczone przez firmę Intel. ( https://www.golem.de/news/intel-einfrieren-bei-intels-bay-trail-socs-durch-patch-abgefedert-1609-123546.html ) Istnieje ogólny problem z Bay-Trail-SoCs od Intela. Link do łatki: https://bugzilla.kernel.org/attachment.cgi?id=223851

Dalsze informacje: Ten patch / skrypt uzyskuje tryb oszczędzania energii. Powyższe rozwiązanie tematyczne w ogóle usuwa ten tryb.

Helle
źródło
Witamy w Ask Ubuntu! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośniki.
Elder Geek
1

Edytuj / etc / defaults / grub:

GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=1"

Biegać

update-grub
shutdown -r now
BSDguru
źródło
0

Nie ma już potrzeby aktualizowania gruba, jeśli przejdziesz na najnowsze jądro.

Zgodnie z komentarzem # 1013 w zgłoszeniu błędu jest teraz naprawiony:

Dawno nie sprawdzałem tego wątku, ale pomyślałem, że powinienem opublikować swoje odkrycia, na wypadek, gdyby były przydatne dla kogokolwiek.

Komputer z niższej półki napędzany procesorem Intel N2807, który nigdy nie działał więcej niż 30 minut bez awarii, gdy nie ustawiłem ... max_cstates = 1 teraz działa doskonale dobrze z podstawowym jądrem wer. 5.3.1 lub 4.19.75. Uruchomiłem go przez kilka dni z każdą wersją bez żadnych problemów. Średnie zużycie energii również spadło o nieco ponad 10%.

Naprawienie błędu zajęło około czterech lat, po raz pierwszy zgłoszono 8 grudnia 2015 r.

WinEunuuchs2Unix
źródło