ZRAM 基本上是够用的,默认就有,默认压缩算法是 lzo-rle,大小是 1/2 的内存大小或者至少 4G。
可以设置压缩算法为 zstd,相比较 lzo-rle 属于时间 (CPU) 换空间 (内存),并且手动设置大小优化一下,如
/etc/systemd/zram-generator.conf:
1 2 3
| [zram0] zram-size = # in MiB, 1/2 ram size or 1 ram size compression-algorithm = zstd
|
即可
但内存空间确实不够的时候,ZRAM 对 OOM 无能为力,因此可以设置一个低 Priority 的小 Swapfile 用来在 OOM 的时候有腾挪空间
当然如果要考虑休眠,那 Swapfile 还是要很大的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| ❯ sudo btrfs subvolume create /var/swap Create subvolume '/var/swap'
~ ❯ sudo btrfs filesystem mkswapfile --size 4G /var/swap/swapfile create swapfile /var/swap/swapfile size 4.00GiB (4294967296)
~ ❯ sudo -E nano /etc/systemd/system/var-swap-swapfile.swap
[Unit] Description=Swapfile
[Swap] What=/var/swap/swapfile Priority=10
[Install] WantedBy=swap.target
~ ❯ sudo systemctl daemon-reload
~ ❯ sudo systemctl enable --now var-swap-swapfile.swap Created symlink '/etc/systemd/system/swap.target.wants/var-swap-swapfile.swap' → '/etc/systemd/system/var-swap-swapfile.swap'.
~ ❯ sudo swapon -a
~ ❯ sudo swapon NAME TYPE SIZE USED PRIO /dev/zram0 partition 16G 0B 100 /var/swap/swapfile file 4G 0B 10
|
参考文档: