我有一台旧电脑,一直想在上面运行 Ubuntu,但它总是死机。Windows 运行完美,在高负载下可以正常运行数天,没有问题。这不是 19.10 独有的,我尝试过早期版本的 Ubuntu,结果相同。
冻结似乎是随机的。有时我可以玩火箭联盟一个小时而没有任何问题,几分钟后机器就会在桌面上空转或重启后 2 分钟冻结。我唯一确定的是,我找不到更频繁触发它的方法。
当它冻结时,它就是硬冻结。与计算机的 SSH 会话中断。键盘无响应,无法转到另一个控制台或打开/关闭大写锁定灯。
内存测试无故障。无高温。升级到最新主板 bios,无变化。跟踪 dmesg、内核和系统日志,未发现任何异常。
Hardware:
Intel i5 760
Gigabyte P55-USB3
Geforce GTX 670 2GB (Running 435 driver)
4x 4GB DDR3 1600
2x Samsung 830
IDE DVD/RW
Corsair HX750
我不知道如何进一步分析该问题,因为我从未看到任何错误/警告,并且找不到触发该问题的方法。
有什么方法我可以看到更多详细信息吗?
根据@K7AAY 的要求添加信息
我没有启用休眠模式,除非它默认启用。
free -m
total used free shared buff/cache available
Mem: 16004 1130 13883 3 990 14582
Swap: 2047 0 2047
答案1
我解决了这个问题。
该系统有轻微的超频,我忘了。超频本身没有问题,BIOS 中的设置 100% 稳定。
但是!现代 Linux 内核通过 Intel_idle 驱动程序覆盖了 Intel C 状态的 bios/uefi 设置。因此,原本应该从 bios 设置的 C 状态设置实际上在 Linux 中被覆盖了。
这就是导致随机冻结的原因,因为只要 C 状态不变,系统就非常稳定。这意味着它在重负载下工作正常,但一旦系统开始在空闲和轻负载之间切换,C 状态就会大幅波动并导致系统挂起。
我的解决方案是通过内核参数锁定 grub 中的 C 状态。GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_idle.max_cstate=1"