Linux 平台下zRAM 和 swap 使用(内存交换)

当内存不足时,linux 系统可以向ROM 要空间给内存使用,zram 和 swap 可以完成该功能。

zram: 是把物理内存的一部分划分出来,把不是常用的内存数据压缩后放到zram里, 用到的时候把数据解压出来, 相当于牺牲了一些cpu效率,变相增大了内存。

磁盘 swap:是把磁盘的一部分作为内存, 对应用来说完全是透明的,相当与增大了内存, 但是缺点很明显, 当用到swap的时候,速度会变的很慢。

查看设备是否支持ZRAM

cd /dev/block/ 下, 看是否有zram0 或zram1。如果没有该文件则表明内核没有打开ZRAM选项或者是不支持ZRAM功能

M 平台开启下zRam 使用方法

  1. 1.kernel 下,打开zram
  +  CONFIG_ZSMALLOC=y
  +  CONFIG_ZRAM=y
  +  CONFIG_ZRAM_DEBUG=y

开启三个宏,打开M平台的zRam 功能,其它平台更多zram开关参考:
https://blog.csdn.net/qq_22182835/article/details/83117043

  1. android device下,fstab.xxx 设置属性和大小
+/dev/block/zram0 none swap defaults zramsize=104857600

在fstab.xxx 文件中,添加/dev/block/zram0 节点,并设置属性及节点文件大小,选项类似大体类似其它的system,boot分区

  1. android device下,init.xxxx.rc 脚本设置属性
         on fs
         + write /proc/sys/vm/page-cluster 0
         + swapon_all /fstab.xxx

设置page-cluster 属性,挂载分区。修改完成后,重新编译code ,顺兴boot.img 分区。验证办法:busybox free可以看到swap size

文件作为SWAP分区

1.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)。
# dd if=/dev/zero of=/root/swapfile bs=1M count=1024

2.格式化为交换分区文件:
# mkswap /root/swapfile #建立swap的文件系统

3.启用交换分区文件:
# swapon /root/swapfile #启用swap文件

4.使系统开机时自启用,在文件/etc/fstab中添加一行:
/root/swapfile swap swap defaults 0 0

快捷脚本

#!/system/bin/sh

#SWAP_FILE=“/data/swap1”

if [ ! -f “/data/swap1” ]; then
dd if=/dev/zero of=/data/swap1 bs=390250 count=256
fi

busybox mkswap /data/swap1
busybox swapon -p 0 /data/swap1
echo 0 > /proc/sys/vm/swappiness
cat /proc/sys/vm/swappiness
busybox free -m

/proc/sys/vm/swappiness 里的值代表使用swap的优先级, 0 就是不用, 100代表最大程度的使用

新建磁盘分区作为SWAP分区

步骤如下:

     a 使用fdisk来创建交换分区(假设 /dev/sdb2 是创建的交换分区)
     b 使用 mkswap 命令来设置交换分区:
   # mkswap /dev/sdb2
     c 启用交换分区:
   # swapon /dev/sdb2
     d 写入/etc/fstab,以便在引导时启用:
      /dev/sdb2swap swap defaults 0 0

查看SWAP空间大小

# free-m
默认单位为k, -m 单位为M
                    total      used      free    shared   buffers    cached
  Mem:          377       180       197         0        19       110
  -/+buffers/cache:      50        327
  Swap:         572         0         572

查看SWAP空间信息

包括 文件 和 分区 的详细信息
  # swapon -s
  等价于
  # cat /proc/swaps

引用链接:
https://blog.csdn.net/qq_22182835/article/details/83117043
https://www.cnblogs.com/wuxie1989/p/5888595.html
https://blog.csdn.net/wj78080458/article/details/83532798
https://blog.csdn.net/xinyuanqianxun1987/article/details/52065786

发布了101 篇原创文章 · 获赞 19 · 访问量 33万+

猜你喜欢

转载自blog.csdn.net/kehyuanyu/article/details/102551683