麒麟os需启用zram虚拟内存压缩以缓解i/o延迟:先停用原有swap,加载zram模块并设lz4算法,分配50%物理内存大小,格式化启用后配置systemd开机自启。

麒麟OS系统运行内存紧张时,页面换入换出频繁导致I/O延迟升高,需开启虚拟内存压缩(zram)以在内存中直接压缩交换页,避免写入磁盘Swap带来的性能损耗。
确认当前zram状态并停用原有Swap
打开终端,以root身份执行:swapon --show,观察输出中是否已有zram设备(type为partition、path含/dev/zram0)。若存在已启用的Swap文件或分区(如/usr/swap/swapfile或/dev/sda3),必须先停用:swapoff -a。这一步不可跳过,否则zram无法接管内存交换逻辑。
执行free -h确认Swap total为0,且Mem可用值明显回升——说明物理内存压力暂时缓解,为zram启用腾出空间。
加载zram内核模块并配置压缩算法
执行modprobe zram加载模块。若提示“Module zram not found”,说明内核未内置支持,需先安装对应版本内核头文件包(如kylin-kernel-headers-$(uname -r))并重新编译模块。
设置zram设备使用LZ4压缩算法(比默认LZO更快,压缩率相当):echo "lz4" > /sys/block/zram0/comp_algorithm。该算法在麒麟OS V10 SP2及以上版本稳定支持,不兼容旧版内核会报错“Invalid argument”。
分配zram设备大小为物理内存的50%(示例:16GB内存设8GB):echo $(( $(grep MemTotal /proc/meminfo | awk '{print }') / 2 )) > /sys/block/zram0/disksize。
格式化并启用zram作为Swap
将zram0格式化为Swap:mkswap /dev/zram0。
立即启用:swapon /dev/zram0。
验证生效:swapon --show | grep zram,确认type为partition、size与上步设定一致、priority高于其他Swap设备(默认为100)。【priority必须高于现有Swap,否则内核优先使用磁盘Swap,zram形同虚设】
配置zram开机自启(systemd方式)
创建systemd服务单元文件:vim /etc/systemd/system/zram-generator.service。
输入以下内容(注意缩进与等号间空格):
[Unit]
Description=Enable zram swap
After=local-fs.target
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo lz4 > /sys/block/zram0/comp_algorithm && echo $(( $(grep MemTotal /proc/meminfo | awk "{print \$2}") / 2 )) > /sys/block/zram0/disksize && mkswap /dev/zram0 && swapon -p 100 /dev/zram0'
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
启用服务:systemctl daemon-reload && systemctl enable zram-generator.service。
重启后执行free -h,Swap行应显示/dev/zram0且state为active。










