如何设置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年发布的bug的正式解决方案。由于在我而言,它是(不得不重复)一个间歇性问题,在我之前将intel_idle.max_cstate = 1添加到我的GRUB,我希望获得一些说明文件。原始的Bugzilla文档尚不清楚。这个论坛的一些参与者可以帮助我正式验证此“修复”吗?
Jan Hus

Answers:


21

如果使用GRUB:

使用sudo,编辑/etc/default/grub并编辑该GRUB_CMDLINE_LINUX_DEFAULT行,将其添加intel_idle.max_cstate=1到可能已经存在的行中。保存文件后运行sudo update-grub,然后重新启动。建议您首先保存原始grub文件的副本。

要检查您的cstate深度不超过1,请使用turbostat(软件包: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

您还应该在dmesgvar/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什么?如果更深入,该怎么做?
Stephane

1
@Stephane:“更深”是指高于1的c状态。如果正确设置了grub命令行,则不应将cstate设置为更深(高于1)。可以观察到CPU和Package,cstate更大在涡轮增压器输出线上的那些状态下,大于1表示0.00%的时间。
道格·史密斯

1
我的Thinkpad X201i每小时进行一次硬重启。我intel_idle.max_cstate=1像启用GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_idle.max_cstate=1"grub更新一样在grub中启用,sudo update-grub然后重新启动了计算机。不再发生硬重启。我(很高兴我解决了我的问题。我想知道这个属性到底是在告诉CPU什么
。– Stephane

仅供参考,我一直在关注此错误报告大约一年,您可能也会对此感兴趣:bugzilla.kernel.org/show_bug.cgi?id=109051。同样在澳大利亚的这里:askubuntu.com/questions/803640/…–
WinEunuuchs2Unix

3

在对Linux和华擎Q2900遇到相同的冻结问题之后,我在德国IT网站上找到了英特尔提供的解决方案/解决方法。(https://www.golem.de/news/intel-einfrieren-bei-intels-bay-trail-socs-durch-patch-abgefedert-1609-123546.html)Bay-Trail-SoC存在一个普遍问题来自英特尔。补丁程序链接:https : //bugzilla.kernel.org/attachment.cgi?id=223851

更多信息:此补丁/脚本确实获得了省电模式。上面的主题解决方案根本没有删除此模式。


欢迎来到Ask Ubuntu!虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
年长者怪胎

1

编辑/ etc / defaults / grub:

GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=1"

update-grub
shutdown -r now

0

如果切换到最新内核,则不再需要更新grub。

根据错误报告中的注释1013,现在已修复:

我已经很长时间没有检查过此线程了,但是我认为我应该发布我的发现,以防万一它对任何人都有用。

一台搭载Intel N2807的低端计算机,在我未设置... max_cstates = 1时,其工作时间从未超过3000万而不崩溃,现在与5.3.1或4.19.75版本的内核完美兼容。我在每个版本上都运行了几天,没有任何问题。平均功耗也下降了10%多一点。

最早于2015年12月8日报告此错误,大约花了四年的时间来解决。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.