如何设置 intel_idle.max_cstate=1

如何设置 intel_idle.max_cstate=1

我如何将英特尔空闲最大 cstate 设置为 1 以及如何检查它何时完成。我因 bay trail 核心而遇到冻结问题。

我尝试了内核 4.5 4.1.12 4.4,但冻结问题仍然存在。目前 4.4 是我的内核版本。

答案1

如果使用 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

答案2

在 Linux 和我的 asrock 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

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

答案3

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

根据评论# 1013错误报告现已修复:

我很久没有检查过这个帖子了,但我认为我应该发布我的发现,以防它对任何人有用。

一台搭载 Intel N2807 的低端计算机,在我没有设置 ...max_cstates=1 时,从未运行超过 30 分钟而不崩溃,但现在在原版内核 v. 5.3.1 或 4.19.75 下运行良好。我使用每个版本运行了几天,没有任何问题。平均功耗也下降了 10% 多一点。

修复这个于 2015 年 12 月 8 日首次报告的漏洞花了大约四年时间。

答案4

编辑 /etc/defaults/grub:

GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=1"

跑步

update-grub
shutdown -r now

相关内容