Как установить intel_idle.max_cstate = 1

12

Как я могу установить Intel Idle Max Cstate на 1 и как я могу проверить, когда это будет сделано. У меня проблема с заморозкой из-за ядра следа залива.

Я попробовал ядро ​​4.5 4.1.12 4.4, но проблема замораживания все еще продолжается. на данный момент 4.4 - это моя версия ядра.

Озан Темель
источник
На данный момент (8/2019) этот поток фактически не утверждает, что установка intel_idle.max_cstate = 1 является официальным решением для ошибки, опубликованной в 2011 году. Так как в моем случае это (пришлось дублировать) периодически возникающая проблема, до того как я ДОБАВЬТЕ intel_idle.max_cstate = 1 к моему GRUB, я хотел бы получить некоторую документацию, подтверждающую это. Оригинальный документ Bugzilla неясен в этом отношении. Может ли какой-нибудь участник этого форума помочь мне официально подтвердить это «исправление»?
Ян Хус

Ответы:

21

При использовании GRUB:

С помощью sudoредактируйте /etc/default/grubи редактируйте GRUB_CMDLINE_LINUX_DEFAULTстроку, добавляя intel_idle.max_cstate=1к тому, что уже может быть там. После сохранения файла запустите sudo update-grub, затем перезагрузите компьютер. Предложите сначала сохранить копию исходного файла grub.

Чтобы проверить, что ваш cstate не идет глубже, чем 1, используйте турбостат (пакет: linux-tools-common).

Пример (где что-то уже есть GRUB_CMDLINE_LINUX_DEFAULT):

До (отредактировано):

$ 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

Внесите изменения (используя мой метод для контроля конфигурации):

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

Изменить это:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"

К этому:

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

И обновить:

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

Теперь проверьте (отредактировано):

$ 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

Вы также должны увидеть эти сообщения в dmesgи var/log/kern.log(отредактировано):

~$ 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
Дуг Смитис
источник
Интересно, какое значение в выводе turbostatпоказывает, что cstate не идет глубже, чем 1. Что вы имеете в виду deeper? Что делать по-другому, если оно идет глубже?
Стефан
1
@Stephane: Под «глубже» я имел в виду более высокие состояния c, чем 1. Если вы правильно установили командную строку grub, она не должна переходить на cstate глубже (выше) 1. Вы можете наблюдать процессор и пакет, cstates больше чем 1 показывает 0,00% времени в этих состояниях на выходной линии турбостата.
Дуг Смитис
1
Мой Thinkpad X201i делал перезапуски каждый час. Я включил intel_idle.max_cstate=1в grub, как GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_idle.max_cstate=1"при обновлении grub, sudo update-grubи перезапустил машину. Никаких перезапусков больше не происходит. Я рад, что решил свою проблему. Интересно, что именно это свойство говорит процессору, хотя
Stephane
К вашему сведению, я следил за этим сообщением об ошибках около года, и он может вас заинтересовать: bugzilla.kernel.org/show_bug.cgi?id=109051 . Также здесь, в AU: askubuntu.com/questions/803640/…
WinEunuuchs2Unix
3

После таких же проблем с зависанием в linux и моем asrock Q2900 я нашел на немецком IT-сайте решение / обходной путь, предоставленный Intel. ( https://www.golem.de/news/intel-einfrieren-bei-intels-bay-trail-socs-durch-patch-abgefedert-1609-123546.html ) Существует общая проблема с Bay-Trail-SoCs от Intel. Ссылка на патч: https://bugzilla.kernel.org/attachment.cgi?id=223851

Дополнительная информация: этот патч / скрипт получает режим энергосбережения. Приведенное выше решение для темы вообще убирает этот режим.

Хелле
источник
Добро пожаловать в Спросите Ubuntu! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылки для справки.
Старейшина Гик
1

Отредактируйте / etc / defaults / grub:

GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=1"

Пробег

update-grub
shutdown -r now
BSDguru
источник
0

Больше нет необходимости обновлять grub, если вы переключаетесь на самое последнее ядро.

Согласно комментарию № 1013 в отчете об ошибках, это исправлено:

Я давно не проверял эту ветку, но подумал, что должен опубликовать свои выводы на тот случай, если они кому-нибудь пригодятся.

Низкоуровневый компьютер с процессором Intel N2807, который никогда не работал более 30 минут без сбоев, когда я не установил ... max_cstates = 1, теперь прекрасно работает со стандартным ядром версии 5.3.1 или 4.19.75. Я запускал его в течение нескольких дней с каждой версией без каких-либо проблем. Среднее энергопотребление также снизилось чуть более чем на 10%.

Исправление этой ошибки заняло около четырех лет, о чем впервые было сообщено 8 декабря 2015 года.

WinEunuuchs2Unix
источник