数据压缩文件原理 手机解压zip暴力破解器

1. 技术背景说到压缩这个词,我们并不陌生,应该都能想到是降低占用空间,使同样的空间可以存放更多的东西,类似于我们平时常用的文件压缩,内存压缩同样也是为了节省内存 。
尽管当前android手机6GB,8GB甚至12GB的机器都较为常见了,但内存无论多大,总是会有不够用的时候 。当系统内存紧张的时候,会将文件页丢弃或回写回磁盘(如果是脏页),还可能会触发LMK杀进程进行内存回收 。这些被回收的内存如果再次使用都需要重新从磁盘读取,而这个过程涉及到较多的IO操作 。就目前的技术而言,IO的速度远远慢于这RAM操作速度 。因此,如果频繁地做IO操作,不仅影响flash使用寿命,还严重影响系统性能 。内存压缩是一种让IO过程平滑过渡的做法, 即尽量减少由于内存紧张导致的IO,提升性能 。
2. 主流内存压缩技术目前linux内核主流的内存压缩技术主要有3种:zSwap, zRAM, zCache 。
2.1 zSwapzSwap是在memory与flash之间的一层“cache”,当内存需要swap出去磁盘的时候,先通过压缩放到zSwap中去,zSwap空间按需增长 。达到一定程度后则会按照LRU的顺序(前提是使用的内存分配方法需要支持LRU)将就最旧的page解压写入磁盘swap device,之后将当前的page压缩写入zSwap 。

数据压缩文件原理 手机解压zip暴力破解器

文章插图
数据压缩文件原理 手机解压zip暴力破解器

文章插图
数据压缩文件原理 手机解压zip暴力破解器

文章插图
数据压缩文件原理 手机解压zip暴力破解器

文章插图
数据压缩文件原理 手机解压zip暴力破解器

文章插图
数据压缩文件原理 手机解压zip暴力破解器

文章插图
数据压缩文件原理 手机解压zip暴力破解器

文章插图
数据压缩文件原理 手机解压zip暴力破解器

文章插图
6. zRAM技术应用本节描述一下在使用ZRAM常遇到的一些使用或配置,调试的方法 。
6.1 如何配置开启zRAM1) 配置内存压缩算法
下面例子配置压缩算法为lz4
echo lz4 > /sys/block/zram0/comp_algorithm
2) 配置ZRAM大小
下面例子配置zram大小为2GB
echo 2147483648 > /sys/block/zram0/disksize
3) 使能zram
mkswap /dev/zram0
swapon /dev/zram0
6.2 swappiness含义简述swappiness参数是内核倾向于回收匿名页到swap(使用的ZRAM就是swap设备)的积极程度,原生内核范围是0~100,参数值越大,表示回收匿名页到swap的比例就越大 。如果配置为0,表示仅回收文件页,不回收匿名页 。默认值为60 。可以通过节点“/proc/sys/vm/swappiness”配置 。
6.3 zRam相关的技术指标1) ZRAM大小及剩余空间
Proc/meminfo中可以查看相关信息
SwapTotal:swap总大小, 如果配置为ZRAM, 这里就是ZRAM总大小
SwapFree:swap剩余大小, 如果配置为ZRAM, 这里就是ZRAM剩余大小
当然,节点 /sys/block/zram0/disksize是最直接的 。
2) ZRAM压缩率
/sys/block/zram/mm_stat中有压缩前后的大小数据,由此可以计算出实际的压缩率
orig_data_size:压缩前数据大小,单位为bytes
compr_data_size :压缩后数据大小,单位为bytes
3) 换出/换入swap区的总量, proc/vmstat中中有相关信息
pswpin:换入总量,单位为page
pswout:换出总量,单位为page
6.4 zRam相关优化上面提到zRam的一些缺陷, 怎么去改善呢?
  1. zRam大小是可灵活配置的, 那是不是配置越大越好呢? 如果不是配置多大是最合适的呢?
zRam大小的配置比较灵活, 如果zRam配置过大, 后台缓存了应用过多, 这也是有可能会影响前台应用使用的流畅度 。另外, zRam配置越大, 也需要关注系统的内存碎片化情 。因此zRam并不是配置越大越好,具体的大小需要根据内存总大小及系统负载情况考虑及实测而定 。
  1. 使用zRam,可能会存在低内存场景由于频繁的内存压缩导致kswapd进程占CPU高, 怎样改善?
zRam本质就是以时间换空间, 在低内存的情况下, 肯定会比较频繁地回收内存, 这时kswapd进程是比较活跃的, 再加上通过压缩内存, 会更加消耗CPU资源 。改善这种情况方法也比较多, 比如, 可以使用更优的压缩算法, 区别使用场景, 后台不影响用户使用的场景异步进行深度内存压缩, 与用户体验相关的场景同步适当减少内存压缩, 通过增加文件页的回收比例加快内存回收等等 。
  1. 增大了zRam配置,对系统内存碎片是否有影响?
【数据压缩文件原理 手机解压zip暴力破解器】