内存压缩算法有哪些

图片[1]-内存压缩算法有哪些-不念博客

1.zSwap

zSwap 是在 memory 与 flash 之间的一层“cache”,当内存需要 swap 出去磁盘的时候,先通过压缩放到 zSwap 中去,zSwap 空间按需增长。

达到一定程度后则会按照 LRU 的顺序(前提是使用的内存分配方法需要支持 LRU)将就最旧的 page 解压写入磁盘 swap device,之后将当前的 page 压缩写入 zSwap。

2.zRram

zRram 即压缩的内存, 使用内存模拟 block device 的做法。

实际不会写到块设备中去,只会压缩后写到模拟的块设备中,其实也就是还是在 RAM 中,只是通过压缩了。

由于压缩和解压缩的速度远比读写 IO 好,因此在移动终端设备广泛被应用。

zRam 是基于 RAM 的 block device, 一般 swap priority 会比较高。只

有当其满,系统才会考虑其他的 swap devices。

当然这个优先级用户可以配置。

3.zCache

zCache 是 oracle 提出的一种实现文件页压缩技术,也是 memory 与 block dev 之间的一层“cache”,与 zswap 比较接近,但 zcache 目前压缩的是文件页,而 zSwap 和 zRAM 压缩是匿名页。

这些算法可以将原始数据块压缩成较小的文件,但是解压缩的工作量相对较大,会消耗相对较多的 CPU 资源。

因此,在内存压缩方案中,我们需要综合考虑压缩比和解压缩速度等方面的因素。

© 版权声明
THE END