ZRAM运行swap¶
在 NVIDIA Jetson GPU硬件环境,默认定制的 Ubuntu Linux 激活了基于 zram - 基于内存的压缩块存储设备 的 Jetson Nano的swap ,当时我关闭了 zram - 基于内存的压缩块存储设备 以便适应 Kubernetes Atlas 部署要求。不过,在 Apple ARM架构芯片M1 Pro Macbook Pro 2022笔记本,内存有限,所以想要通过 zram - 基于内存的压缩块存储设备 来增加内存超卖(通过部分内存构建swap来实现压缩)。
zram - 基于内存的压缩块存储设备 能够在内存中存储更多信息,通过消耗CPU资源来节约内存使用。在 KVM内存优化 可以结合采用 zram - 基于内存的压缩块存储设备 来实现,主要有两种方式:
对于 Arch Linux ,也建议采用 zram-generator 工具来完成简洁的配置:
使用 Arch Linux AUR 安装
zram-generator
并将案例配置复制为/etc/systemd/zram-generator.conf
:
sudo pacman -S zram-generator
sudo cp /usr/share/doc/zram-generator/zram-generator.conf.example /etc/systemd/zram-generator.conf
检查
/usr/share/doc/zram-generator/zram-generator.conf.example
如下:
[zram0]
host-memory-limit = 9048
zram-size = min(ram / 10, 2048)
compression-algorithm = lzo-rle
options =
writeback-device = /dev/zvol/tarta-zoot/swap-writeback
[zram1]
zram-size = ram / 10
fs-type = ext2
mount-point = /run/compressed-mount-point
备注
官方提供的 zram-generator.conf 默认配置了2个zram,但是启动只成功了 zram1 ,看起来是环境问题。
参考Fedora系统,我发现在Fedora上,默认就已经启动了 zram-generator
服务,默认就是使用了配置 /usr/lib/systemd/zram-generator.conf
内容如下
# This config file enables a /dev/zram0 device with the default settings:
# — size — same as available RAM or 8GB, whichever is less
# — compression — most likely lzo-rle
#
# To disable, uninstall zram-generator-defaults or create empty
# /etc/systemd/zram-generator.conf file.
[zram0]
zram-size = min(ram, 8192)
我感觉配置2G RAM应该足够,或者就采用 1/10 内存来构建swap on zram,所以修订配置为:
[zram0]
zram-size = min(ram / 10, 2048)
compression-algorithm = lzo-rle
启动zram0:
systemctl daemon-reload
systemctl start /dev/zram0
此时检查
top
就会看到系统增加了2G的swap,并且执行zramctl
可以看到:NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT /dev/zram0 lzo-rle 2G 16K 103B 16K 10 [SWAP]