为什么需要内存压缩
说到压缩这个词,我们都可以想到是降低占用空间,使同样的空间可以存放更多的东西,如我们平时常用的压缩文件等。内存压缩同样也是为了节省内存。
内存无论是多大,总是不够用的(至少目前如此),而当系统内存紧张的时候,系统会将匿名页swap出去disk(flash).而这涉及到IO操作,这RAM操作速度不是一个数量级的。因此,如果频繁地做IO操作,不仅影响flash使用寿命,还严重影响系统性能。
内存压缩是一种让IO过程平滑过渡的做法。
目前主流的内核压缩技术
ZSWAP
ZSWAP是在memory与disk(flash)之间的一层“cache”,当内存需要swap出去disk的时候,先通过压缩放到zswap中去,swap的空间按需增长。达到一定程度zswap写到flash中去。
ZRAM
使用内存模拟block dev的做法。实际不会写到块设备中去,只会压缩后写到模拟的块设备中,其实也就是还是在内存中,只是通过压缩了,但压缩和解压缩的速度远远比读写IO好。因此在嵌入式设备广泛使用。压缩算法常用LZ4(压缩率不高&#x