当您尝试休眠但没有足够的可用交换时会发生什么?

当您尝试休眠但没有足够的可用交换时会发生什么?

我有一个 Linux 机器,其交换分区大小为 RAM +X. 假设超过X的交换空间已在使用中。现在我尝试休眠。内核是否会

  • 随机终止休眠和/或非休眠进程,直到有足够的交换空间来容纳 RAM
  • 不休眠并警告/要求继续?

或者这种情况永远不会发生,因为内核总是保留足够的交换来安全地休眠?

我可以配置行为吗?

编辑:如果这有区别的话,我目前正在使用带有 Linux 3.2.0-39-generic 的 Ubuntu 12.04 并使用 进行休眠pm-hibernate

答案1

在更高版本的 Linux 内核中,您需要有一个交换才能休眠。但也有解决方法。您可以在任何地方设置交换文件,而无需分区。

点击这里了解详情。 https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt

快速解决方案(感谢 Robert Munteanu)

Create the swap file : dd if=/dev/zero of=/swapfile bs=1024 count=8388608 ( 8GB )
Setup the swap file: mkswap /swapfile
Only when you need to set suspend you can activate it: swapon /swapfile
When you resume you can deactivate it: swapoff /swapfile

相关内容