启用交换后关机需要 10 分钟

启用交换后关机需要 10 分钟

一年多来,我一直有关机问题。以下是需要满足的条件:

  • 已启用交换
  • 交换空间已使用:我有 8GB,当我开始使用 4~5GB 以上时,我开始在交换空间中看到一些东西。通常在我运行虚拟机或大型游戏时发生。

在这些情况下,当我关闭电脑时,我看到以下内容:

  • 大多数关闭发生在
  • 几分钟甚至十分钟以上什么都不做
  • 最后关机

当然,此时我使用Alt+SysRq同步、挂载只读并强制关机。

禁用交换后,我不会遇到这个问题,但是我可能会耗尽内存(这会导致 Linux 挂起一分钟,然后 OOM 决定杀死某个进程,这是另一个问题)。

有人知道问题出在哪里吗?或者我该如何调试它?

我试过获取堆栈跟踪使用Alt+ SysRq,但在关机期间分辨率较低,并且有四个核心,大多数跟踪都在屏幕之外,所以我似乎无法弄清楚它在哪里停顿。


PS:我不确定我在 14.04 中是否受到了这个问题的影响,但我相当确定它在 systemd 之前和之后都发生过。


编辑:

我真傻,我可以往回滚动查看关机日志。如果我在关机卡住时打印堆栈跟踪,则有三个核心cupidle_enter_state()或类似的东西,并且打印堆栈跟踪的线程有此跟踪:

第2部分

第1部分


编辑:

我考虑过swapoff在关机前进行检查,这样问题可能就会消失。结果显示交换区以 8MB/s 的超慢速度关闭。这可能是关机速度如此缓慢的原因,也许是在执行swapoffswapoff速度慢似乎影响了很多人。我将进行进一步调查,如果能够得出一些结论性结论,我会写一个答案。

相关内容