I zram 概述
1.1 技术背景
说到压缩这个词,我们并不陌生,应该都能想到是降低占用空间,使同样的空间可以存放更多的东西,类似于我们平时常用的文件压缩,内存压缩同样也是为了节省内存。
尽管当前android手机6GB,8GB甚至12GB的机器都较为常见了,但内存无论多大,总是会有不够用的时候。当系统内存紧张的时候,会将文件页丢弃或回写回磁盘(如果是脏页),还可能会触发Low Memory Killer(LMK)、OOM Killer(OOM)杀进程进行内存回收。这些被回收的内存如果再次使用都需要重新从磁盘读取,而这个过程涉及到较多的IO操作。就目前的技术而言,IO的速度远远慢于这RAM操作速度。因此,如果频繁地做IO操作,不仅影响flash使用寿命,还严重影响系统性能。内存压缩是一种让IO过程平滑过渡的做法,
即尽量减少由于内存紧张导致的IO,提升性能。
1.2 zram概念
ZRAM内存压缩技术,你可以把它想象成一位非常勤快的魔术师,它能把你的房间(内存)里的杂物(数据)变得更小,从而腾出更多的空间来放新东西。
具体来说
假设你有一个房间,里面可以存放一些物品(内存)。一开始你可以轻松地把所有东西都放进房间,但慢慢地,你的房间里东西越来越多,空间越来越小。很快,你的房间就快装不下了(内存快满了),你开始发愁,想着要不要把东西丢出去(把数据写到硬盘上,或者使用Swap)。
这时候,“ZRAM魔术师”登场了!它告诉你:“别急,我有个办法,我能把你的东西变小(压缩数据),这样它们就不会占那么多地方啦!”
如何操作
魔术师的魔法——压缩:ZRAM就像这位魔术师,它能在内存快装满时,把里面的数据“压缩”成更小的块。比如,原本需要10个积木块的玩具,它能把它们压缩成5个积木块的大小,从而节省了一半的空间。
放回房间——压缩后的存储:被压缩后的数据还是放在房间(内存)里,只是它们占的地方少了。所以,ZRAM不会像传统Swap那样,把数据搬到硬盘里,而是通过压缩的方式继续留在内存中。
需要时解压——魔术变回原样:当你需要使用某个被压缩的数据时,魔术师会立刻把它变回原来的大小(解压)。虽然需要一点点时间,但比起从远处的仓库(硬盘)里取回数据要快得多。
ZRAM的好处
提升系统性能:
ZRAM能通过压缩数据,减少对硬盘或SSD的读写操作。相比传统的Swap方式,它可以让数据依然留在内存中,而不是转移到更慢的硬盘中。因此,它在需要Swap时可以提供更快的响应速度,特别是对没有足够内存的设备来说(如嵌入式设备、树莓派、老旧PC等)。
省空间:ZRAM的魔术让你的房间看上去更大了,因为压缩后,内存里的数据占用更少的空间。
更快速:与传统的Swap相比,ZRAM的压缩和解压都是在内存中进行的,这比去硬盘上读取数据要快得多,减少了读取时间。
少打扰:如果没有ZRAM魔术师,你的系统可能会频繁地将数据“搬家”(写入硬盘),这样不但慢,还会让硬盘更容易磨损。ZRAM可以帮你减轻这种麻烦。
延长硬盘寿命:对于使用SSD或嵌入式存储的设备来说,频繁写入Swap分区可能会加速存储介质的磨损。ZRAM通过将数据压缩后存放在内存中,减少了对硬盘的读写次数,从而有助于延长硬盘的使用寿命。
提高内存利用率:ZRAM通过压缩技术,能够在有限的内存空间中存储更多的数据。比如,原本1GB的数据经过ZRAM的压缩,可能只占用500MB内存,这样就等于“扩大”了可用内存容量,使系统可以在内存压力下运行更多的进程。
对低内存设备非常有用:在内存非常有限的设备上,ZRAM能够显著提高可用内存空间,从而减少OOM(Out Of
Memory,内存不足)问题的发生。这对于树莓派、物联网设备和老旧PC等场景尤其有效。
你可以把传统Swap想象成把多余的东西搬到地下室(硬盘)里,虽然地下室也有足够的空间,但来回搬运会很累人。而ZRAM就像是个会变魔术的管家,它能帮你把房间里的东西直接变小(压缩),让你不用把东西搬到地下室也能腾出更多空间。虽然有时候魔术师解开压缩会稍微花点时间,但比起去地下室拿东西快多了!
ZRAM的缺点
占用CPU资源:
ZRAM的压缩和解压过程是需要计算的,