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

Sim*_*n S 5 memory linux hibernate swap

我有一个带有大小 RAM + x交换分区的 Linux 机器。假设超过x的交换已在使用中。现在我尝试休眠。请问内核

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

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

我可以配置行为吗?

编辑:如果这有所作为,我目前使用 Ubuntu 12.04 和 Linux 3.2.0-39-generic 和休眠与pm-hibernate.

小智 2

在更高版本的 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
Run Code Online (Sandbox Code Playgroud)