admin管理员组文章数量:1534890
2024年6月19日发(作者:)
谈谈内存压缩那些事
展开全文
1. 技术背景
说到压缩这个词,我们并不陌生,应该都能想到是降低占用空间,使同样的空间可以
存放更多的东西,类似于我们平时常用的文件压缩,内存压缩同样也是为了节省内存。
尽管当前android手机6GB,8GB甚至12GB的机器都较为常见了,但内存无论多
大,总是会有不够用的时候。当系统内存紧张的时候,会将文件页丢弃或回写回磁盘(如
果是脏页),还可能会触发LMK杀进程进行内存回收。这些被回收的内存如果再次使用
都需要重新从磁盘读取,而这个过程涉及到较多的IO操作。就目前的技术而言,IO的速
度远远慢于这RAM操作速度。因此,如果频繁地做IO操作,不仅影响flash使用寿命,
还严重影响系统性能。内存压缩是一种让IO过程平滑过渡的做法, 即尽量减少由于内存紧
张导致的IO,提升性能。
2. 主流内存压缩技术
目前linux内核主流的内存压缩技术主要有3种:zSwap, zRAM, zCache。
2.1 zSwap
zSwap是在memory与flash之间的一层“cache”,当内存需要swap出去磁盘的时
候,先通过压缩放到zSwap中去,zSwap空间按需增长。达到一定程度后则会按照LRU
的顺序(前提是使用的内存分配方法需要支持LRU)将就最旧的page解压写入磁盘swap
device,之后将当前的page压缩写入zSwap。
zswap本身存在一些缺陷或问题:
1) 如果开启当zswap满交换出backing store的功能, 由于需要将zswap里的内存
按LRU顺序解压再swap out, 这就要求内存分配器支持LRU功能。
2) 如果不开启当zswap满交换出backing store的功能, 和zRam是类似的。
2.2 zRram
zRram即压缩的内存, 使用内存模拟block device的做法。实际不会写到块设备中
去,只会压缩后写到模拟的块设备中,其实也就是还是在RAM中,只是通过压缩了。由
于压缩和解压缩的速度远比读写IO好,因此在移动终端设备广泛被应用。zRam是基于
版权声明:本文标题:谈谈内存压缩那些事 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1718732864a718057.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论