内存压缩¶
当编码节省超过存储、CPU 和恢复成本时,压缩可以降低保留冷 RAM 的成本。 先选择实例本地所有权;只有跨实例共享足以抵偿协调成本时,才引入池化服务。
目标与现状¶
实例内压缩 已在 Linux x86_64 实验性交付:默认关闭的
vm.cold_ram_compression / --vm-cold-ram-compression 使用 runtime 持有的
userfaultfd pager 及有界本地存储,不需要 FUSE 或外部池。它区别于
vm.ram_compression(FUSE 文件 backing),采用驱逐/refault 探测,而非
读访问热度检测。它与池化服务器压缩都不是生产
收益承诺。macOS/HVF 堆冷池仍属实验,服务丢失可能导致依赖它的 VM 失败;
客户端持有不可变 backing 的方案仍属提案。
所有权与数据流¶
每个实例独立负责 checkpoint 保存、压缩和恢复,不依赖运行态优化。 完整环境快照包含机器状态与持久性合同; 运行态冷对象只保留当前 RAM 片段。压缩 checkpoint 不会自动回收活跃 RAM。
VM 运行时负责冷页选择和映射变更;codec 转换字节,backing 承载字节。
memfd 不会自动压缩。即使对象共享,目标设计也将可写页恢复到实例私有 RAM。
选择与取舍¶
本地压缩避免服务协调,但不能跨实例共享 payload。 池化增加可选的去重、共享存储和宿主级预算, 代价是 IPC、竞争和更广的故障风险。 两者都需要临时内存与恢复余量、CPU 预算,以及可接受的尾延迟。
实施方向与证据¶
Linux 本地 pager 在回收 RAM 前发布并校验对象,恢复通过经过校验的
UFFD_COPY 完成。必须具备内核缺页 userfaultfd 权限;编译支持不代表
授权,缺少权限时启动失败。它拒绝去重、文件/FUSE backing、快照捕获/恢复、
整 VM offload 及外部内存池,见本地合同。
Linux sealed memfd 池化交付仍是提案,macOS 的等价 sealed 方案尚未交付。
从优化架构出发;内存证据
尚未建立已知的生产净收益,也未验证净物理内存节省。