zRAM, zSWAP与Android KitKat内存占用

转自:http://zhuanlan.zhihu.com/iobject/19608629


Android 4.4 KitKat的highlights里包括这样一条“减少”内存占用的措施:

swap to zRAM

zRAM是一个Linux内核驱动,从Linux 3.2版本开始进入内核的staging driver,亦即是处于测试阶段。zRAM大体上可以看成是用内存做一块虚拟盘,拿来作为Linux的交换分区。和普通的ramdisk不同,zRAM对存放的内容会进行实时的压缩,以提高实际的容量。

虽然zRAM到目前为止仍然是个staging driver,但其实已经被广泛用于生产环境,像电视机顶盒,ChromeOS以及CyanogenMOD家的Android。zRAM有望在3.12进入Linux内核的稳定驱动。

而KitKat之前的官方(AOSP)Android,一直是没有使用交换分区,所以也谈不上使用zRAM。我曾经试过使用交换分区的Android,发生交换时的那种缓慢程度,确实不如不要打开。

所以严格来讲利用zRAM并不是减小Android的内存占用,而是通过zRAM来提供交换空间,从而在内存紧张时释放出更多的可用内存,同时又避免传统的交换到文件系统的开销。

说到zRAM,就一定要提到zSWAP。最近infoQ中文刚好提供了CLK开发者大会上的一个presentation: 用内存压缩技术缓解磁盘读写过慢导致的性能下降,里面详细介绍了zSWAP,也简单提到了zRAM。

同zRAM不同的是,zSWAP并不虚拟一个块设备,而是hook到普通的swap代码里,在实际发生写入到磁盘/从磁盘读取的操作前,先利用自己管理的内存进行数据的换出/换入,内存不够用以后再使用传统的swap分区。所以zSWAP适用于本身已经有交换分区的系统,而zRAM更适合Android这样本身不配置交换分区的嵌入式系统。

题图是从上面提到的presentation里截的图。在使用硬件压缩的zSWAP的情况下,10G内存的机器在JVM heap size使用达到140%之前,SPECjbb benchmark仍然能跑出70%的性能;在使用普通的LZO压缩时也能达到50%的性能,对比直接交换到文件系统,提升非常显著。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值