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 Codecompcache 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].

外部链接[编辑]


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的地址空间,不会开机时就占用物理内存。



### Linux Kernel ZRAM Menuconfig Configuration Guide ZRAM 是一种将内存用作压缩块设备的技术,主要用于交换空间或临时文件系统。以下是关于如何在 Linux 内核中配置 ZRAM 的指南。 #### 1. 启用 ZRAM 内核模块 首先需要确保内核支持 ZRAM 模块。可以通过以下命令检查当前内核是否已经启用 ZRAM: ```bash lsmod | grep zram ``` 如果未加载,可以尝试手动加载模块: ```bash modprobe zram ``` #### 2. 在内核配置中启用 ZRAM 对于自定义编译的内核,需要通过 `menuconfig` 或其他内核配置工具启用 ZRAM 支持。具体步骤如下: - 运行以下命令进入内核配置界面: ```bash make menuconfig ``` - 导航到以下选项并启用 ZRAM: ``` Device Drivers ---> Block devices ---> <*> ZRAM: Compressed RAM Block Device ``` - 如果需要动态调整 ZRAM 参数(如内存分配比例),还需启用以下选项: ``` General setup ---> [*] Enable loadable module support ``` - 配置完成后保存 `.config` 文件,并重新编译内核[^1]。 #### 3. 设置 ZRAM 参数 在内核支持 ZRAM 后,可以通过 `/sys/class/zram-control` 和 `/dev/zramX` 接口管理 ZRAM 设备。以下是一些常用操作: - 创建一个 ZRAM 设备: ```bash echo $((1024 * 1024 * 512)) > /sys/class/zram-control/hot_add ``` - 设置 ZRAM 设备大小(例如 512MB): ```bash echo $((1024 * 1024 * 512)) > /sys/block/zram0/disksize ``` - 格式化 ZRAM 设备为交换分区: ```bash mkswap /dev/zram0 swapon /dev/zram0 ``` - 查看 ZRAM 使用情况: ```bash cat /proc/swaps ``` #### 4. 调整压缩算法 ZRAM 提供了多种压缩算法,默认情况下使用的是 `lzo` 算法。可以通过修改内核参数选择其他算法,例如 `lz4` 或 `zstd`。以下是设置方法: - 编辑内核配置文件,启用所需压缩算法: ``` Device Drivers ---> Block devices ---> <*> ZRAM: Compressed RAM Block Device Compression algorithm (LZO) ---> ( ) LZO ( ) LZ4 ( ) ZSTD ``` - 保存配置并重新编译内核[^2]。 #### 5. 自动化配置 为了在系统启动时自动启用 ZRAM,可以将相关命令添加到启动脚本中。例如,在 `/etc/rc.local` 或 systemd 服务文件中添加以下内容: ```bash #!/bin/bash echo $((1024 * 1024 * 512)) > /sys/class/zram-control/hot_add echo $((1024 * 1024 * 512)) > /sys/block/zram0/disksize mkswap /dev/zram0 swapon /dev/zram0 ``` ### 注意事项 - 确保系统有足够的物理内存以支持 ZRAM 的运行。 - 不同硬件平台可能需要调整 ZRAM 参数以优化性能。 - 如果使用 U-Boot 引导程序,建议禁用控制台输出以减少干扰[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值