Enable ZRAM on VPS

我的 VPS 小鸡内存捉襟见肘,如何不花钱“扩容”?我采用了 zram 的方案。

原理

用我自己的理解,简单来说就是:本来是多少大小的内存,通过压缩算法,变成了若干倍。作为代价是需要消耗 CPU 资源来实现算法。

正好我的使用场景整体 CPU 很低,内存占用偏高,符合这个场景。

实现

安装 zram-tools

apt install zram-tools -y

编辑配置 /etc/default/zramswap

ALGO=zstd
# speed: lz4 > zstd > lzo
# compression: zstd > lzo > lz4
PERCENTAGE=100
  • ALGO为压缩算法,根据速率和压缩率综合选择,我配置成了zstd。
  • PERCENT为将百分之几的物理内存用作 zram,默认是50%,网上建议值是70-80%,我激进地配置了100%。

重启服务

systemctl status zramswap.service

配置系统参数

编辑 /etc/sysctl.conf,增加一行

vm.swappiness 参数 = 100

不过作为一个好习惯,一般不直接改系统文件,而是在 /etc/sysctl.d 目录下新建一个 custom.conf 文件,内容一样是上面那一行。
然后使用 sysctl --system 让它生效。

vm.swappiness 参数的作用是把百分之几的概率将数据从物理内存迁移到 swap。默认值是60,一般优化成10,即尽量将数据保留在物理内存,来提升系统速度。但在本场景下,为了将数据尽量迁移到 swap,也就是 zram,设置为100,反正 zram 实体还是物理内存,读写速度几乎不变,只是多了让 CPU 压缩一下的消耗。

观察

zramctl

结果如下:

NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd        961.2M  91M 17.2M 18.8M       2 [SWAP]

即:zram 的大小是961.2M,原始数据是91M,压缩后是17.2M,加上开销是18.8M,大约压缩了5倍。
而 CPU 从原本~17%增长到~21%,基本可以忽略。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注