如何限制交换空间的使用?

如何限制交换空间的使用?

我希望我的电脑在 UPS 切换到电池供电时自动休眠,因此我随时都需要足够的可用交换空间。但是如果我激活交换分区,即使在休眠之前,它也会被内存页面占用。

我发现的唯一解决方案是设置/proc/sys/vm/swappiness0并完全禁用分页。但这不是最好的选择。

是否可以以字节为单位指定最大交换使用量?

答案1

cat /proc/sys/vm/swappiness
0

表示除非绝对必要(RAM 已满),否则将避免交换。Swappiness 取介于 之间的值0-100

要使更改永久更新/etc/sysctl.conf并重新启动机器:

vm.swappiness = 10

您无法以字节为单位配置交换量,但 swappines10表示当 RAM 已满 90% 时将使用交换。交换区域的大小在系统安装期间给出,您需要调整分区大小才能更改。交换中占用的量取决于您正在运行的软件的 RAM 分配要求。

答案2

我发现的唯一解决方案是使用交换文件您可以创建任意大小的空间,比如说几 GB,然后将其安装为交换区域。

head -c 2G /dev/urandom > your.filename

您可以修改下面的代码,它将使用随机密钥创建加密交换文件。当然,您需要将变量设置$filename为交换文件所在的位置。

filename="????"
head -c 4k /dev/urandom | sha512sum | cryptsetup open --type plain $filename /dev/mapper/swap
cryptsetup status /dev/mapper/swap
mkswap /dev/mapper/swap
swapon /dev/mapper/swap
sysctl vm.swappiness=0

编辑:如果您希望在重启后可以访问交换,只需用已知密钥替换随机密钥。

相关内容