我有一台带有 Ubuntu 20.04 的新 System76 Lemur Pro 笔记本电脑。我真的很想爱上它,但我发现它每周都会完全锁定好几次,这会抑制我的感受。我正在与 System76 支持人员联系,但我也在尝试自己进行一些故障排除。我对 Linux 还很陌生,我希望不仅能学习如何修复我的机器,还能学习对未来有用的一般故障排除步骤。
系统:System76 Lemur Pro,i7,40gb RAM,单 SSD。Ubuntu 20.04。已安装所有更新。只有外围设备是插入鼠标和键盘的 USB 集线器,以及通过 USB-C 连接到 DisplayPort 适配器的外接显示器。没有什么异国情调。
崩溃:一周几次,我会回到我的笔记本电脑(通常是在它整夜闲置后的早晨),发现它对鼠标/键盘完全没有响应。使用 ALT+F_ 尝试切换到终端不会执行任何操作。ALT + PRTSCR + REISUB 不执行任何操作。按下电源按钮没有任何作用。尝试打开内部 LCD 没有任何作用。只有按住电源按钮并硬重置机器才能让我恢复。这种情况只发生过一次,当时我正在积极使用机器,Gnome 桌面保持可见,鼠标和键盘锁定,我正在听的歌曲大约 1/4 秒卡在一个循环中。只有硬重置才能恢复。
我试过的:
- 压力测试CPU。我在运行压力测试几分钟时监控了 CPU 温度。温度从未超过 80 多度,CPU 风扇启动以控制它。这似乎是安全的,因为热/临界温度被列为 100。
- 运行内存测试仪。循环了5次,一切都过去了。
- 安装 Ubuntu 推荐的任何更新。
- 查看系统日志 (/var/log/syslog)。当系统挂起时,这些日志会变成空白,并保持空白,直到我硬重置它。坠机前的任何事情看起来都非常有趣。
- 禁用睡眠。已经被禁用,但我想我会提到它。
在这一点上,我不太确定我的下一步应该是什么。我可以查看其他日志吗?我可以运行的其他诊断程序?我是否应该假设它是一个外围设备并一次断开键盘/鼠标/显示器/集线器一个以尝试隔离?似乎不太可能是一个常见的外围设备,但谁知道呢。
编辑:/var/log/kern.log
根据要求,这是一次崩溃之前的日志。它包含大量有关正在管理的 CPU 节流的信息。但是,当计算机也稳定时,此类消息也会定期出现...
Oct 22 07:52:00 system76-pc kernel: [44320.095989] mce: CPU4: Package temperature above threshold, cpu clock throttled (total events = 7775)
Oct 22 07:52:00 system76-pc kernel: [44320.095990] mce: CPU1: Package temperature above threshold, cpu clock throttled (total events = 4669)
Oct 22 07:52:00 system76-pc kernel: [44320.095992] mce: CPU3: Package temperature above threshold, cpu clock throttled (total events = 719)
Oct 22 07:52:00 system76-pc kernel: [44320.095992] mce: CPU6: Package temperature above threshold, cpu clock throttled (total events = 752)
Oct 22 07:52:00 system76-pc kernel: [44320.095994] mce: CPU7: Package temperature above threshold, cpu clock throttled (total events = 752)
Oct 22 07:52:00 system76-pc kernel: [44320.096970] mce: CPU2: Package temperature/speed normal
Oct 22 07:52:00 system76-pc kernel: [44320.096972] mce: CPU0: Package temperature/speed normal
Oct 22 07:52:00 system76-pc kernel: [44320.096972] mce: CPU5: Package temperature/speed normal
Oct 22 07:52:00 system76-pc kernel: [44320.096973] mce: CPU3: Package temperature/speed normal
Oct 22 07:52:00 system76-pc kernel: [44320.096974] mce: CPU6: Core temperature/speed normal
Oct 22 07:52:00 system76-pc kernel: [44320.096974] mce: CPU7: Core temperature/speed normal
Oct 22 07:52:00 system76-pc kernel: [44320.096975] mce: CPU4: Package temperature/speed normal
Oct 22 07:52:00 system76-pc kernel: [44320.096976] mce: CPU1: Package temperature/speed normal
Oct 22 07:52:00 system76-pc kernel: [44320.096977] mce: CPU6: Package temperature/speed normal
Oct 22 07:52:00 system76-pc kernel: [44320.096977] mce: CPU7: Package temperature/speed normal
这是部分答案,基于当前信息,包括来自评论。
从日志文件中,有迹象表明涉及高 CPU 温度,因此系统不断达到其节流温度限制。但是,CPU 压力测试表明没有问题。
作为测试,找到不可能出现 CPU 热问题的系统操作点,并以该方式运行足够长的时间以确定对系统稳定性的影响。此测试的成本将是性能。稍后,应研究适当的热守护程序(thermald、tlp、...)作为恢复最大性能的方法。
i7-10510U 的默认 CPU 频率缩放驱动程序是 intel_pstate,这个答案是为该驱动程序编写的。通过以下方式检查:
mprime (prime95) 高温折磨测试被用作 CPU 压力测试,因为它在我测试过的所有 CPU 压力测试中消耗最多的能量。为了保护我的示例计算机,它没有运行热守护程序,将从低端找到大约 80 度的所需工作点。首先,记下当前的最大 CPU 频率百分比,同时记下最小值(你的会有所不同):
如果某些热守护程序已经在限制事物,它可能不是 100%。无论如何,我将从 50% 开始:
然后逐渐提高最大 CPU 频率百分比,例如以 10% 的增量,并找到处理器封装温度约为 80 度的工作点:
因此,对于我的系统,将 CPU 频率限制为最大值的 80% 将使它们远离任何内置的额外热节流。以这种方式运行系统一段时间。
这是与 CPU 电源管理相关的内核错误。它在 Ubuntu 20.10 附带的内核 5.8 中得到修复。我升级到 20.10,关闭了所有解决方法,现在运行稳定。
如果您不想升级到 5.8/20.10,您还可以通过阻止 CPU 进入低功耗状态来解决该错误(这显然会缩短电池寿命)。打开并
/etc/default/grub
添加intel_idle.max_cstate=1
.GRUB_CMDLINE_LINUX_DEFAULT
保存,运行sudo update-grub
,然后重新启动。反转该过程以反转解决方法。高于 1 的 cstate 值可能仍然是一种稳定的解决方法,但我从未进行过足够的实验来验证。