MATRIX Delayed gratification

给小内存 Linux 服务器开启 ZRAM:低成本提升内存利用率

现在很多小 VPS、NAS 或家用服务器内存都不大,服务一多,后台就容易开始抢内存。
这时候开个 ZRAM 往往能明显缓解压力。

简单来说:

ZRAM 会拿出一部分内存,做成“压缩版 Swap”。

系统会优先把不常用的数据压缩后放进 ZRAM,而不是直接写进硬盘 Swap。
因为数据还在内存里,所以速度会比传统 Swap 快很多。

对于小内存机器来说挺实用。


Debian 开启 ZRAM

现在主流 Linux 基本都已经支持,不需要自己编译内核。

下面以 Debian 为例。


安装

apt update
apt install zram-tools

修改配置

编辑配置文件:

nano /etc/default/zramswap

修改下面几项:

ALGO=zstd
PERCENT=100
PRIORITY=100

参数说明:

  • ALGO=zstd
    使用 zstd 压缩算法,压缩率比较高
  • PERCENT=100
    ZRAM 大小设为物理内存的 100%
  • PRIORITY=100
    提高优先级,让系统优先使用 ZRAM

重启服务

systemctl restart zramswap

调整 Swap 策略(推荐)

如果机器本身开了 Swap,可以顺手调一下内核参数。

新建配置文件:

nano /etc/sysctl.d/99-zram.conf

写入:

vm.swappiness = 100
vm.page-cluster = 0
vm.watermark_boost_factor = 0
vm.watermark_scale_factor = 125

然后执行:

sysctl --system

查看是否生效

查看当前 Swap:

swapon --show

正常会看到:

/dev/zram0

再看详细状态:

zramctl

其中:

  • DATA
    压缩前的数据量
  • TOTAL
    实际占用的物理内存

如果压缩率不错,经常能省下来不少内存。


压缩算法怎么选

zstd

优点:

  • 压缩率高
  • 更省内存

缺点:

  • 会稍微多吃一点 CPU

大多数情况直接用这个就行。


lz4

优点:

  • 速度非常快
  • CPU 占用低

缺点:

  • 压缩率一般

如果机器 CPU 比较弱,可以考虑换成 lz4


查看系统支持哪些算法

cat /sys/block/zram0/comp_algorithm

示例:

lzo lzo-rle lz4 lz4hc [zstd]

[] 的是当前正在使用的算法。


关于 zram-tools

现在很多新系统已经开始用:

zram-generator

相比之下:

zram-tools 维护频率已经不算高了

不过 Debian 上目前还是够稳定、够省事。


适合哪些场景

  • 小内存 VPS
  • NAS
  • Docker 宿主机
  • 多服务混跑
  • 轻量数据库
  • 开发环境

总结

如果你的机器:

  • 内存不大
  • 服务跑得不少
  • 经常吃满内存

那 ZRAM 基本算是很值得开的优化项。

配置不复杂,但很多时候能明显减轻内存压力。

^