更新:之前有些地方理解错了。

内存这东西总是不够用,怎么办?紧跟主线内核的好处就体现出来了:

先说ZSWAP,3.11引入,可以将需要换出(swap out)的页压缩存放在内存的压缩池里,这样在压缩池没有满的时候,根本不会有额外的IO;直到压缩池满了,则把最老的页解压后写入swap设备。(压缩池默认是20%内存,通过/sys/module/zswap/parameters/max_pool_percent调节) 不仅提高了swap的整体性能(以前一旦发生swap,简直跟死机没区别),相应的swap空间也变相增大了。 使用方法很简单,编译ZSWAP支持后,内核启动参数增加"zswap.enabled=1"就行了。 线下使用了一段时间,感觉不错!

可能大家对硬盘里交换区的噩梦还是忘不掉,那么考虑下3.14刚刚稳定的ZRAM吧,和ZSWAP类似,都是进行内存页压缩的,简言之就是用内存模拟出的块设备作为交换分区,具体使用方法可以看这里:http://wiki.gentoo.org/wiki/Zram

ZRAM我还没有单独用过,3.14以前一直在staging阶段,但是google已经在自家的chrome os里启用了(基于3.4内核),我说最近打开chrome book发现居然有swap了(基于zram),听说android 4.4也有了。

忘了说了,默认的压缩算法都是LZO,压缩比大概是3:1。

最后,肯定有人想知道,ZSWAP和ZRAM可以一起使用吗?当然是可以了。

PS,目前还没有合适的性能测试,生产环境慎用。