Ubuntu 桌面在正常使用过程中偶尔会挂起

Ubuntu 桌面在正常使用过程中偶尔会挂起

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.orgGitLab, 尤其:#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(从F1F12)强制返回文本控制台。
  • 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- Unmount(以只读模式重新挂载所有文件系统),
  • Alt- SysRq- B:立即回复启动系统。

    注意:如果上述硬重启组合不起作用,则冻结可能是由硬件缺陷而不是视频驱动程序引起的。

注意:如果某些 SysRq 选项不起作用,则由于“此 sysrq 操作已被禁用“错误,启用方式:

echo 1 | sudo tee /proc/sys/kernel/sysrq

看:在 Linux 中配置 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

检查日志。

相关内容