多年来,我在没有交换的情况下设置了我的 Linux 机器,因为它们有足够的内存来做我需要的事情,我宁愿一个进程在使用太多内存时被杀死,而不是变得越来越大并悄悄地减慢一切。
但是我发现我需要交换才能在笔记本电脑上使用休眠,所以我创建了一个交换分区并且休眠一直运行良好。
最近我发现机器进入待机而不是休眠状态,经过调查发现交换分区中没有足够的空间进行休眠。这是因为我认为为休眠保留的交换分区实际上被用作正常的交换空间。
有什么方法可以告诉 Linux 仅将给定的交换分区用于休眠,而不是在正常操作期间将其用于交换?
编辑:根据下面的问题,机器有 8GB 内存,交换分区也是 8GB,因为我只希望它用于休眠而不是实际交换使用,所以任何大于机器内存大小的东西都会被浪费。根本问题是因为 8GB 交换分区被用作附加内存,机器现在可以分配高达 16GB 的内存(8GB 物理 + 8GB 交换)。它最近使用了 10GB,当然不能休眠,因为 10GB 无法放入 8GB 交换分区。
从 中删除或注释相应的行/etc/fstab
。我的系统上的示例已删除,因为pm-hibernate
需要“激活”交换分区才能工作保持交换激活(所以不要管它
/etc/fstab
),但明确要求内核忽略它。这是通过将 sysctl 参数
vm.swappiness
设置为 0 来完成的(有效值为 0-100;更高将使内核交换更积极;默认值为 60)。为确保此设置在重新启动后保持不变,请编辑
/etc/sysctl.conf
并添加一行vm.swappiness=0
.