内核内查杀:memorystatus 单循环健康检查,210 band × 15 kill reason;回收不前进时 pageout 线程内直接杀(vm_pageout.c:2730)
用户态查杀:lmkd + PSI + oom_score_adj;内核只出卖机制,direct reclaim 停在 throttle 等 OOM/PSI 事件
每任务打包段:c_segment 变长槽 + 压缩页计入 phys_footprint + 段年龄驱动整段换出 NAND;「压缩不驱逐」哲学
逐页独立:zram/zsmalloc 全局块设备;压缩池物理页记账在 root;上游无自动年龄换出策略
freezer = 定向换出:挂起 app → 全量压缩 → 写 NAND → 提升 band 75 保护;解冻按需拉回
cgroup freezer 只停 CPU:冻结 app 内存全量驻留,驱逐靠全局 LRU,与挂起状态无关
选向标准:① 直接服务两目标——性能 A / 冷热有效性 B(记账口径、kill 归因类议题不入选) ② XNU 已证明价值 ③ 机制骨架已备
反向视角:Linux 在 PSI / MGLRU / DAMON / 可配置性上已领先——原则是「学 XNU 的语义,用 Linux 的机制表达」
| # | 方向 | 目标 | 一句话理由 | 落点 | 优先级 |
|---|
目标列:冷热 = 冷热页管理有效性(目标 B),性能 = 内存管理性能(目标 A);C1/C4 已被 Android 17(mmd + memory-limiter)部分落地验证
① XNU 已证明移动端冷热处置语义的价值——Android 17 正沿同一路径收敛,方向被产业验证
② Linux 的机制骨架全部就绪——MGLRU 世代 / zram writeback / DAMON / cgroup 只待语义嫁接,多数方向可从用户态起步
③ 避免整体搬入「一体化内核策略」——那会推翻 Linux 十年建立的机制/策略分层;PSI 与 MGLRU 正是分层的红利