休眠需要多大的交换分区?

休眠需要多大的交换分区?

我读了这个问题但它并没有明确回答我的问题。

如果我希望我的电脑能够休眠,我是否需要有一个与我的 RAM 一样大的交换分区,或者如果交换分区可以容纳目前正在使用RAM?我准备在一台具有大量 RAM 和相对较小的硬盘的计算机上安装 Ubuntu,所以我不想使用不必要的硬盘空间。

我想避免给出我的实际规格,以使这个问题更加普遍,但如果有必要我会给出它们。

答案1

很难预测:你的交换需要适应

  • 休眠时交换区中已有的内容
  • 休眠时 RAM 中的内容,但仅限于非磁盘缓存或缓冲区的部分;如果您使用,则 RAM 映像会被压缩uswsusp
  • 一些内核数据结构

因此,即使交换空间大于 RAM,您也可能无法休眠,因为大多数交换空间已被使用。相反,如果您当时没有使用太多交换空间,那么您可以使用小于 RAM 的交换空间成功休眠。

如果由于磁盘太小而不想使用固定大小的交换分区,则可以改用交换文件。它更容易调整大小,并且应该支持休眠到交换文件(不确定它是否目前可以立即使用,Ubuntu 版本之间时有时无;我记得它在 9.10 中可以,但它必须在 10.10 中设置)。

答案2

在调整交换大小以设置休眠时,这个问题继续出现在常见问题中。最初的答案是正确的,因为它可能会根据您的工作负载而有很大差异,但我觉得这不是一个完整的答案。

完整的答案是,您可以根据您的具体工作量判断您需要多少,然后可以适当调整大小。

基本工具是休眠期间的内核消息。您想使用此命令查看使用了多少内存:

sudo cat /var/log/syslog | grep 'PM:'|grep kbytes

你应该得到如下输出:

Aug 14 11:03:20 mike-XPS-15-9570 kernel: [17594.823584] PM: Allocated 11809876 kbytes in 2.65 seconds (4456.55 MB/s)
Aug 14 11:03:20 mike-XPS-15-9570 kernel: [17605.365657] PM: Wrote 11787284 kbytes in 9.09 seconds (1296.73 MB/s)

然后,策略是运行最大负载,并触发休眠状态,查看所需的交换空间,可能的话增加安全裕度,然后使交换空间达到该大小。

相关内容