zram是linux的一种内存优化技术,基本工作原理是:通过划定一片区域,将压缩过后的硬盘数据放入该区域,以实现高速读取。
zram是内存压缩,所有写入内存的东西都会经过压缩,会少量增加CPU负担swap是交换分区,类似Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
zram通过在RAM内的压缩块设备上分页,直到必须使用硬盘上的交换空间,以避免在磁盘上进行分页,从而提高性能。由于zram可以用内存替代硬盘为系统提供交换空间的功能,zram可以在需要交换/分页时让Linux更好利用RAM,在物理内存较少的旧电脑上尤其如此。
发展由来
zram在年的时候就进了kernel的staging目录,并于年3月30日发布的3.14版本正式合并入Linux内核主线。在年6月8日发布的3.15版本的Linux内核中,zram已可支持LZ4压缩算法,而LZO仍然作为默认的压缩后端。内核3.15中的修改还改进了性能,以及经由sysfs切换压缩算法的能力。
Lubuntu于13.10开始使用zram。截至年12月,Ubuntu考虑为小内存的计算机默认启用zram。Google在ChromeOS中使用zram,它也成为了Android4.4及以后版本设备的一个选项。
zRAM作用
zRAM是一个Linux内核驱动,zRAM大体上可以看成是用内存做一块虚拟盘,拿来作为Linux的交换分区。和普通的ramdisk不同,zRAM对存放的内容会进行实时的压缩,以提高实际的容量。
利用zRAM并不是减小Android的内存占用,而是通过zRAM来提供交换空间,从而在内存紧张时释放出更多的可用内存,同时又避免传统的交换到文件系统的开销。
ZRAM是Linux的一种内存优化技术,它划定一片内存区域作为SWAP的交换分区,但是它本身具备自动压缩功能,从而可以达到辅助Linux匿名页的交换效果,变相“增大”了内存。
zRAM可以分出一块内存,然后让系统当作虚拟内存来使用。传统的虚拟内存是存放在磁盘上的,而zRAM存在内存里,并会进行压缩。这样的虚拟内存访问速度可以提高很多,内存利用率也会大幅提高。所以对于小内存设备,比如M内存的Android设备,或者1G内存的电脑,都会有很大帮助。应该和OSX10.9的内存压缩效果差不多,而且设计得更为巧妙。在CPU有较快速度的年代里,利用CPU的资源对内存进行压缩,以便在小内存设备里也能存下更多的后台进程,是个很不错的方法。
ZARMSWAP优点
可以让小内存的设备在多任务的情况下切换自如,提高用户体验。
zram把压缩的page直接交换到内存中,速度远远快于io操作。
ZARMSWAP缺点:
如果在大内存的设备上使用,不仅不会快,反倒因为不断复制内存并且CPU反复压缩解压内从而拖慢速度。
往往只有低端设备才会使用zram技术。
cpu就可能是单核心或性能低,压缩/解压会占用cpu时间,影响性能。
内存小还要再开一块交换区,也增加了负担。