Ubuntu 16.04 每天卡死约 1 次。这种情况发生在我浏览网页或使用桌面应用程序时,而不是在启动时。当它发生时,鼠标指针仍会自由移动,但点击或按键对我的系统没有影响,直到我进行硬重启。
对于我来说,调试这个问题的最佳方法是什么?
以下是一些信息:
selah@selah-Precision-Tower-5810:~$ uname -a
Linux selah-Precision-Tower-5810 4.4.0-59-generic #80-Ubuntu SMP Fri Jan 6 17:47:47 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
此外,如果相关的话,我有一个“非常大”的显示器,一个戴尔 42 英寸,分辨率为 3840x2160。
selah@selah-Precision-Tower-5810:~$ lspci | grep VGA
03:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Quadro K2200] (rev a2)
更新:
按照 Artyom 的建议,我在错误日志中发现了以下消息:
Apr 27 09:47:25 selah-Precision-Tower-5810 kernel: nouveau 0000:03:00.0: fifo: SCHED_ERROR 0a [CTXSW_TIMEOUT]
Apr 27 09:47:29 selah-Precision-Tower-5810 kernel: nouveau 0000:03:00.0: fifo: SCHED_ERROR 0a [CTXSW_TIMEOUT]
Apr 27 09:47:33 selah-Precision-Tower-5810 kernel: nouveau 0000:03:00.0: fifo: SCHED_ERROR 0a [CTXSW_TIMEOUT]
这让我发现了这个描述类似行为的错误: https://bugs.freedesktop.org/show_bug.cgi?id=93629
答案1
这是 Nouveau 视频驱动程序(内核扩展)的 bug。有关详细信息,请查看以下 bug:bugs.freedesktop.org或GitLab, 尤其:#93629,#99900和#100567SCHED_ERROR
(与/相关CTXSW_TIMEOUT
)。
要调试冻结,您可以使用神奇的 SysRq 键, 例如:
注意:考虑持有⇧ Shift (取决于您的键盘)。
- Alt- SysRq- 9(否⇧ Shift) - 将控制台日志级别设置为 9 以显示更多内核消息
- Alt- SysRq- w- 显示阻塞(D状态)任务列表
- Alt- SysRq- l- 显示所有活动 CPU 的堆栈回溯。
- Alt- SysRq- t- 输出当前任务列表和它们的信息到控制台
- Alt- SysRq- p- 将当前寄存器和标志输出到控制台
- Alt- SysRq- q- 显示所有活动的高分辨率计时器和时钟源。
- Alt- SysRq- m- 输出当前内存信息到控制台
冻结期间可尝试的其他事项:
注意:考虑持有⇧ Shift (取决于您的键盘)。
- Alt通过点击- SysRq-重置所有高优先级和实时任务的良好级别n。
- Control尝试通过按- Alt- F1(从F1到F12)强制返回文本控制台。
- Alt通过点击- SysRq-来终止当前虚拟控制台上的所有进程(可以终止 X)k。
- Alt通过- SysRq-执行系统崩溃(如果已配置)c。
如果什么都不起作用,你应该执行安全重启由Alt- SysRq-REISUB可得:
- Alt- SysRq- R:联合国Raw(从 X 收回键盘控制权)。
- Alt- SysRq- E:吨埃结束(发送信号终端所有流程)。
- Alt- SysRq- I: 千我ll(发送终止信号所有进程,强制它们立即终止)。
- Alt- SysRq- S:年代同步所有已安装的文件系统(将数据刷新到磁盘)。
- Alt- SysRq- U:乌nmount(以只读模式重新挂载所有文件系统),
Alt- SysRq- B:立即回复乙启动系统。
注意:如果上述硬重启组合不起作用,则冻结可能是由硬件缺陷而不是视频驱动程序引起的。
注意:如果某些 SysRq 选项不起作用,则由于“此 sysrq 操作已被禁用“错误,启用方式:
echo 1 | sudo tee /proc/sys/kernel/sysrq
重启后,检查kern.log
详细信息,尤其是上述内核命令生成的调用跟踪。这可以帮助找到正确的错误报告,并找到解决方案。检查以下内容kern.log
例子。
您可以通过以下方式检查最新的崩溃日志:
journalctl -b -1 # Then hit Shift-G to jump to the end.
建议的解决方案:
- 将您的 Ubuntu 和内核升级到最新版本。
- 如果问题重复出现,解决方法是安装NVIDIA 驱动程序,它取代了 Nouveau 视频驱动程序。
- 如果 NVIDIA 驱动程序也出现同样的情况,则可能与硬件问题或显卡过热有关(尝试降低超频功能)。
答案2
启用持久日志记录
sudo mkdir /var/log/journal
重启
/var/log/journal
通过浏览并检查随机命名的目录是否存在,确保启用了持久日志记录。
事件发生后
列出系统启动项
sudo journalctl --list-boots
提取事件引导
sudo journalctl -b caf0524a1d394ce0bdbcff75b94444fe > /tmp/errorlog
要不就
sudo journalctl -b caf0524a1d394ce0bdbcff75b94444fe
检查日志。