众所周知,现代计算机的瓶颈在于硬盘,而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