zram 用压缩的方式在内存里挤出交换空间
内存吃紧时,符合条件的冷页可能被回收到交换空间。作为交换设备的 zram 把页面压缩后放在 RAM 中,以处理器工作和内存开销换取潜在余量。收益依赖工作负载,不是一份固定增加的内存,也不保证每台机器都只有很小的处理器成本。 内存里的压缩块设备 zram 是驻留在 RAM 中的压缩块设备。配置为交换时,它可以保留符合条件的页面,避免普通磁盘交换输入输出。但可选写回功能能够使用另行配置的后备设备,因此“永不接触磁盘”不是通用性质。压缩可能降低延迟,具体仍取决于算法、处理器负载和数据。逻辑设备容量与真实 RAM 占用必须分开观察,二者也都不能直接替代系统剩余内存。 压缩就是这笔交易 「压缩」就是这笔交易赚头所在,也是「一台小机型显得能装下比物理内存更多内容」的根源。一页值不值得压要看内容:全零页、文本和有结构的数据都缩得不错,而图片、压缩包这类已经被压缩过的对象几乎缩不动。站在工程视角看,zram 等于把暂时闲置的 CPU 换算成「看似更多」的内存;当工作负载多半是可压缩的、又特别想避开真实磁盘换页的延迟时,这笔交易才划算。 适合服务器与低端设备 它最合身的地方是那些内存不多、换页压力又不过度的机器:小 VPS、容器宿主机,以及手机、路由器这类如今要把袖珍机器安排得明明白白的角色。反过来,内存本来就充裕、或者本来就要换到冷冷盘上的服务器,同一笔钱买一张真实磁盘往往能装下更多,因此未必轮到 zram。实用的判断方法是盯住压缩率和 swap 使用量:当驻留数据始终很小、又够可压缩、且 CPU 相对空闲,才是让 zram 出场的时刻。 坏掉的样子 压缩效果差可能消除预期收益。照片、视频、加密缓冲和已压缩归档可能几乎缩不动。应比较 orig_data_size 与 compr_data_size,同时查看包含分配器碎片和元数据的 mem_used_total。池占用、可用 RAM、负载需求与压力仍然重要。接近一的压缩比不能决定是否发生 OOM,也不能预测其时间;冷页驻留与回收行为同样影响结果。不能把一组字节比率当成故障倒计时。 昂贵的压缩算法可能增加处理器占用与交换延迟。可用算法及参数取决于内核构建,应在代表性压力下比较 lzo-rle、lz4 或 zstd 等候选,而不是断言某一个总适合交互机器。系统态占用高或 kswapd 忙碌,也不能单独证明压缩器就是原因。修改策略前,应把应用延迟、有效进展、压缩统计和回收活动放在同一观察窗口,保留原配置并验证实际变化。 ...