众所周知,现代计算机的瓶颈在于硬盘,而Linux系统在设计时,为了高负载下的安全性而牺牲性能,使用了虚拟内存swap作为权宜之计,不至于系统缺乏可用内存而崩溃,结果可想而知,就是一旦swap到硬盘就会慢如牛,性能就会直线下降。因此理论上,一旦使用了swap,就意味着你应该加内存条了。


zram算是穷人的福音,将一部分物理内存虚拟成特殊的具有压缩功能的块设备(类似tmpfs,但tmpfs不具备压缩功能),用作swap分区,通过压缩swap获得额外的性能提升,压缩比约3:1。


zram使用的内存不是预分配,而是按需分配,并且拥有最大阀值。


zram 在linux kernel 3.13开始正式进入生产状态。ubuntu 14.04.5 内核是3.16,可以放心的使用zram 。实际上,很多企业在很早就开始使用zram 了。


1、导入模块zram,会产生新的块设备/dev/zram0

modprobe zram num_devices=1


2、调整容量,这里使用512M内存

echo 512M > /sys/block/zram0/disksize


3、创建swap分区

mkswap /dev/zram0

4、挂载swap分区

swapon -p 100 /dev/zram0

使用free -m 命令可以发现swap分区多了512M,-p指优先级,数值约大优先级越高。


如果swap超过了512M,还会跟Linux预设的一样:系统变慢。毕竟zram不是银弹。


另外,zram还可以一定程度代替tmpfs,比如用作/tmp分区,不详述。


参考文档

https://wiki.gentoo.org/wiki/Zram