Linux 已经放弃休眠了吗?如何改进解冻过程?

Linux 已经放弃休眠了吗?如何改进解冻过程?

有人尝试在 Linux 下使用休眠功能(带有 HDD),还是我是唯一的一个?

有人对它的工作方式感到满意吗?或者我是唯一一个解冻需要 20 到 30 分钟系统才再次响应的人?

我通常使用 10 GB RAM(共 16 GB)。我的 HDD 速度大约为 100 MB/s,因此将 RAM 的全部内容写入 HDD 或从 HDD 读取大约需要 1 分 40 秒。事实上,从点击休眠按钮到系统关机只需要 2 分钟。系统看起来正处于压力之下:

解冻后内存和CPU使用情况

我仍然无法理解为什么解冻时需要 20 到 30 分钟才能恢复响应系统。所有内容(包括内核文档)看起来好像内核只是将最小量的数据读回 RAM 以使其运行,并让用户空间进程以无序的方式从交换分区换入。

这可以解释整个过程的持续时间(从 HDD 随机读取而不是顺序读取),也可以解释为什么许多进程会超时:Firefox 和 Thunderbird 会指出“某些脚本没有响应”,KDE 合成器会认为 GPU 驱动程序正在运行在另一台计算机上,我有一个SSD,这让事情变得可以忍受,但仍然令人哭笑不得,解冻比休眠需要更多的时间。

我尝试应用内核文档中所述的解决方法;我问了一个类似但更狭窄的问题两年前给出的解决方案确实有所改善,但情况仍然令人震惊。

我不明白为什么休眠触发的进程冻结直到RAM恢复到休眠前状态后才被释放。为什么决定这样做不是内核工作?

如何在休眠之前手动冻结进程(使用 STOP 信号?),记下 RAM 中的内容(与换出的内容相比),在解冻时将这些数据从交换恢复到 RAM,等待此操作完成,然后解冻进程(使用 CONT 信号?)。

相关内容