加钱

咳咳……肯定不会让你加钱的。使用 ZRAM ,通过压缩不活动的内存来缓解内存不足。当然要内核支持的。

需要 root 或者同等权限的账户。

临时启用

modprobe zram num_devices=1 :启用 ZRAM 模块。

echo $(($SIZE*1024*1024)) > /sys/block/zram0/disksize :设置 ZRAM 块大小。$SIZE就是以 MiB 为单位的大小。比如说,如果你想要 1024MiB 的大小,那么命令等效于 echo $((1024*1024*1024)) > /sys/block/zram0/disksize

mkswap /dev/zram0 :在 ZRAM 块上创建交换分区。

swapon /dev/zram0 -p 10 :启用交换分区,优先级 10 。优先级比你放在硬盘上的交换分区(如果有)要高就可以了。

永久启用

以下内容只在使用 systemd 的系统上测试过

创建 /etc/modules-load.d/zram.conf 并写入 zram ;

创建 /etc/modprobe.d/zram.conf 并写入 options zram num_devices=1 ,设置 1 个 ZRAM 块;

创建 /etc/udev/rules.d/99-zram.rules 并写入 KERNEL=="zram0", ATTR{disksize}="512M" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd" ,其中disksize后面的引号里的 512M 是设置大小的地方,改成你想要的大小就好;RUN后面的引号里是 mkswap 的绝对路径,输错是没有效果的。如果你不知道那么使用type mkswap看一眼。

最后在 /etc/fstab 中添加(注意,不是覆盖!):/dev/zram0 none swap defaults 0 0/etc/fstab中最后一个字符似乎必须是个换行符。

安装了 systemd 的话,可以使用 zramctl 看看效果。

你可能想要关闭硬盘上的交换分区。如果移除(注释) /etc/fstab 中的相关行并没有效果,那么看看交换分区是否被定义成了 systemd 单元。可以用systemctl mask 单元名禁用它。