zram

http://zh.wikipedia.org/wiki/Zram


zram是Linux内核的一个模块,之前被称为“compcache”。zram通过在RAM内的压缩块设备上分页,直到必须使用硬盘上的交换空间,以避免在磁盘上进行分页,从而提高性能。由于zram可以用内存替代硬盘为系统提供交换空间的功能,zram可以让Linux在需要大量RAM的情况下在内存上进行交换/分页,而提高内存的使用率,显著得减少系统启动时(此时Linux还不能使用外部存储)对内存大小的要求。在物理内存较少的旧电脑上,尤其如此。[2][3]

即使RAM的价格比较低,这项功能仍对上网本和其他低功率的笔记本电脑、虚拟化有优势,尤其是那些使用闪存的嵌入式设备,其寿命有限且依赖于使用频率,因此用作交换时磨损得很快。[3]

谷歌将为Chrome OS默认启用zram。[4]

参考[编辑]

  1. ^ Increased Performance In Linux With zRam (Virtual Swap Compressed in RAM). [13 October 2011].
  2. ^ Increased performance in Linux with zram (virtual swap compressed in ram). Web Upd8. 2 October 2011 [8 November 2011].
  3. 3.0 3.1 Google Code. compcache Compressed Caching for Linux. 27 April 2010 [11 November 2011].
  4. ^ Dinsan, Francis. Google is Enabling zRAM for Chrome OS By Default. Chrome Story. 28 March 2013 [29 March 2013].

外部链接[编辑]

  • Compcache, Compressed Caching for Linux
  • Nitin Gupta, Compcache: in-memory compressed swapping, LWN, May 26, 2009
  • Dan Magenheimer, In-kernel memory compression, LWN, April 3, 2013

ZRAM 将内存swap并压缩,cpu换取内存的的一种方法。

开启配置

1.KCONFIG配置:

CONFIG_SWAP=y
CONFIG_ZRM=y
CONFIG_ZSMALLOC=y

2.init.rc中设置zram swap分区

swapon_all fstab.zram
#fstab.zram 文件中新增一分区size为1G
/dev/block/zram0 none swap defaults zramsize=1073741824
 
#MTK平台有固定size的策略,一般为内存的50%;无法通过外部再设置
#swap方式也有区别,通过/enableswap.sh脚本来实现
#/system/bin/tiny_mkswap /dev/block/zram0
#/system/bin/tiny_swapon /dev/block/zram0

3.优化swappiness

write /proc/sys/vm/swappiness 100 #提高swap利用率
 
配置 /proc/sys/vm/extra_free_kbytes
#Framework中的Config.xml <integer name="config_extraFreeKbytesAbsolute">目前1G Ram为100M。
#增大系统尽可能保持的free大小,提高swap利用率。同时有利于新程序的内存快速分配,及用户的主观感受

效果验证

1.dumpsys meminfo中会列出ZRAM的数据。

2.通过cat /proc/zraminfo来查看压缩的效果,或者/sys/devices/virtual/block/zram0下的记录值

OrigSize(orig_data_size):原始数据大小

ComprSize(compr_data_size):压缩后数据大小

MemUsed(mem_used_total):压缩使用的内存大小。

如上图中“未压缩前占用”是通过SwapTotal -SwapFree来得出,与OrigSize会有略微差异。

ZRAM 的Size是限制Swap的地址空间,不会开机时就占用物理内存。



你可能感兴趣的:(zram)