一、zram
zram swap 主要原理就是从内存分配一块区域出来用作 swap 分区,每次如果内存空间不够了,不是把应用程序杀掉,而是把应用程序所占用的内存数据复制到 swap 分区,等切换回来的时候就可以直接把这部分数据恢复到内存当中,节省重新开启所需的时间。而被放到 swap 分区的应用程序,所占用的内存都是被压缩过的,比如,微信在普通内存中占用 50 MB 的空间,如果压缩率为 0.4,则放到 swap 分区里面的数据只需要 20 MB 的空间,这样 swap 分区里面就可以存放更多后台临时不用的应用程序,变相扩展了内存的大小。
zram 块设备驱动结构:
驱动部分
该部分创建了一个块设备,然后提供了处理 IO 请求的接口;
数据流操作部分
该部分主要提供串行或者并行的压缩和解压操作;
解压缩算法部分
该部分主要是一个个压缩和解压算法,每个算法都提供统一的压缩和解压接口给数据流操作部分调用。
二、lmk
进程等级:空进程、后台进程、内容提供点、可见进程、前台进程、NATIVIE进程
杀进程原则:选优先级最大的、其次选内存占用量最大的、然后kernel释放SIGKILL信号