因此,我的笔记本电脑在使用我的电脑时,无论是几分钟还是几个小时,都会随机“冻结崩溃”(系统完全没有响应、鼠标冻结、时钟不前进、键盘命令没有任何效果,唯一的解决方法是使用物理电源按钮进行硬重启。
因此,我自然而然地调查了这个问题并试图找到解决办法。查看内核日志后,我发现冻结前最后记录的事件是几个“硬件错误”:
kernel: mce: [Hardware Error]: Machine check events logged
于是我搜索了一下,试图找到解决方案。我确实找到了这帖子。它基本上告诉我添加一些启动参数。它确实解决了这个问题,从那以后我再也没有记录任何硬件错误,也没有出现任何随机冻结。这些是启动参数:
noapic pci=assign-busses apicmaintimer idle=poll reboot=cold,hard
但问题是,现在使用这些启动参数时,我的笔记本电脑的空闲温度要高得多。大约 70 摄氏度,而不是 35-40 摄氏度。现在,显然我已经检查了系统监视器,看看是否有任何东西占用了 CPU 使用率,但什么也没有。它在所有 4 个线程上占用了 0 到 3% 的 CPU 利用率,没有什么不寻常的。
我知道是启动参数导致了这个问题,因为我尝试过移除它们,重启后,风扇不再那么大声旋转,并且它在正常温度下空转。但是,硬件错误又出现了,随机冻结也是如此。
我对 Linux 还很陌生,所以根本不知道这些启动参数有什么用。有经验的人能告诉我它们的作用是什么,以及为什么它们会导致我的 CPU 空闲时温度更高吗?
编辑#1
因此感谢 matigo 和 Doug 的帮助,他们告诉我该idle=poll
参数正在禁用 CPU 的空闲系统,这显然会使 CPU 运行得更热并产生更多的废热。
删除该启动参数后,硬件错误又会出现。
所以,我的冻结和硬件错误似乎与 CPU 在空闲状态之间切换的方式有关。
我的 CPU 是英特尔酷睿 i7-7500U
这是运行的输出grep . /sys/devices/system/cpu/cpu0/cpuidle/state*/name
:
/sys/devices/system/cpu/cpu0/cpuidle/state0/name:POLL
/sys/devices/system/cpu/cpu0/cpuidle/state1/name:C1
/sys/devices/system/cpu/cpu0/cpuidle/state2/name:C1E
/sys/devices/system/cpu/cpu0/cpuidle/state3/name:C3
/sys/devices/system/cpu/cpu0/cpuidle/state4/name:C6
/sys/devices/system/cpu/cpu0/cpuidle/state5/name:C7s
/sys/devices/system/cpu/cpu0/cpuidle/state6/name:C8
/sys/devices/system/cpu/cpu0/cpuidle/state7/name:C9
/sys/devices/system/cpu/cpu0/cpuidle/state8/name:C10
所以基本上我需要的帮助是这样的,如果可能的话,摆脱这些硬件错误和崩溃,而无需完全禁用 CPU 空闲系统。
答案1
启动参数idle=poll
基本上禁用了空闲系统,使空闲成为无操作旋转周期。因此,是的,您会期望产生更多的废热,因为 CPU 永远不会进入休眠状态。
下面是我的测试服务器中使用 turbostat 的一个示例:
doug@s19:~$ sudo turbostat --Summary --quiet --show Busy%,Bzy_MHz,IRQ,PkgWatt,PkgTmp,RAMWatt,GFXWatt,CorWatt --interval 15
Busy% Bzy_MHz IRQ PkgTmp PkgWatt CorWatt GFXWatt RAMWatt
0.01 938 558 36 1.34 0.68 0.00 0.89
0.02 800 455 36 1.33 0.67 0.00 0.89 <<< All idle states enabled
60.14 4799 109298 47 29.48 28.82 0.00 0.89 <<< transition sample
99.76 4800 180297 47 47.24 46.59 0.00 0.89 <<< All idle states disabled, except poll.
99.76 4800 180311 49 47.65 46.99 0.00 0.89
99.76 4800 180305 49 47.82 47.17 0.00 0.89
注意:intel_pstate CPU 频率调节驱动程序“认为” CPU 很忙,但 top 却不这么认为:
top - 19:23:43 up 7:14, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 214 total, 1 running, 213 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu8 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu9 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu10 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu11 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 31936.7 total, 31137.0 free, 312.3 used, 487.5 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 31227.9 avail Mem