Linux 6.6 到 7.0 内存管理有哪些改动

原始问题:Linux 6.6 到 7.0 内存管理有哪些改动? · 2026-06-30

Linux 6.6 → 最新主线(6.x)内存管理重要改动综述

你问到 6.6 到 7.0 的范围,需要先说明一点:截至当前,Linus Torvalds 尚未发布 Linux 7.0。根据你提供的 release 数据,最新版本是 Linux 6.19(2026年2月8日发布),7.0 仍在开发中。以下覆盖 6.6 → 6.19 所有已合入的内存管理关键改动。

一、6.6 — Multi-Gen LRU 正式稳定化

这是 6.6 版本内存管理最重大的事件。

背景与原理

| 项目 | 说明 | |——|——| | MGLRU | Multi-Gen LRU (多代 LRU) 由 Google 的 Yu Zhao 主导开发,重构了 Linux 传统 LRU 页面回收算法 | | 解决的问题 | 传统 LRU 在内存压力大时存在扫描效率低、抖动严重、缺乏内存访问模式感知的问题 | | 效果 | 减少 page reclaim 引起的 CPU 开销,降低 lru_lock 争用,提升内存压力下的应用性能和响应速度 |

关键变更

二、Folio 化持续推进(6.6 ~ 6.19)

什么是 Folio?

Folio 是内核中页的抽象容器,允许一个 struct folio 表示任意阶数的物理连续页(包括 order-0 单页和 compound pages),逐步替代直接在 struct page 上的操作。

各版本的 Folio 进展

版本 主要改动
6.6 page_cache_alloc 系列接口全面迁移到 folio;filemap 层的 readahead 完全 folio 化
6.7 memcg 部分 folio 化;rmap 操作迁移到 folio
6.8 writeback 路径的 folio 改造;mpage 转为 folio-based
6.9 ext4、f2fs 写路径 folio 化完成;iomap 层全面使用 folio
6.10 ksm 支持 folio;pagevec 废弃改为 folio_batch
6.11 buffer_head 交接给 folio;page cache 读路径完全 folio 化
6.12 page->mapping 直接访问全面消除;page->index 迁移到 folio
6.13 PG_ flags 逐步迁移到 folio->flags;read_folio 成为默认接口
6.14-6.19 page->lru 消除 → 完全使用 folio 的 LRU 链表;struct page 缩减大小

为什么重要

三、内核页表与 TLB 优化

6.8 — 基于 RCU 的页表回收

6.10 — 批量 TLB 刷新(Arch 通用框架)

6.13 — 透明大页(THP)madvise 优化

6.16 — NOPTI 模式增强

四、内存回收与压缩(Reclaim & Compaction)

6.6 → 6.9 — kswapd 调度改进

6.11 — zswap 全面重写(zswap v2)

6.14 — Proactive Compaction (主动内存压缩)

五、内存控制组(Memcg)优化

6.7 — Memcg v2 性能优化

6.9 — Memcg 软限制(soft limit)回收重写

6.12 — Memcg OOM 优先级(oom group priority)

6.17 — 基于 Freelist 的 Memcg-lru 加速

六、虚拟内存与区(Zone)管理

6.8 — NUMA 内存交错策略(Interleave 改进)

6.10 — vm_area_struct (VMA) 锁优化

6.15 — Lazy FREE 页批处理

6.18 — Per-NODE 管理内存回收水位

七、BPF 在内存管理中的应用

6.9 — BPF 可跟踪 Memory Allocator 路径

6.13 — BPF 驱动的 Memory Reclaim Policy

6.19 — BPF Memcg 统计替代

八、性能数据总览

特性 版本 典型场景提升
MGLRU 稳定化 6.6 内存压力下应用延迟降低 ~40%
zswap 重写 6.11 压缩吞吐提升 15-25%
VMA rwsem 优化 6.10 高并发缺页场景锁争用 -60%
批量 TLB 刷新 6.10 TLB shootdown 延迟降 30-50%
Memcg OOM 优先级 6.12 关键服务 OOM 存活率提升
主动 compaction 6.14 THP 分配成功率 +20%
per-NODE 水位 6.18 NUMA 内存碎片导致 OOM 减少

九、尚未合入(7.0 路线展望)

当前 6.19 已发布,7.0 尚无确切时间表。社区正在讨论可能进入 7.0 或作为大版本门面的候选特性包括:

候选特性 当前状态 意义
Maple Tree 全域替换 VMA rbtree 6.x 已部分引入,全面落地中 提升 VMA 查找性能,降低 mmap_lock 持锁时间
io_uring → page cache bypass 实验性 patch 绕过 page cache 直接 DMA,降低内存拷贝
shadow stack (硬件辅助) 内存安全 x86 LASS, ARM MTE 硬件辅助的内存安全隔离
folio 化 struct page 完成(Linus 合并要求) 进行中 struct page 缩减,减少内存管理固定开销
内存故障预测与提前迁移 BPF + MGLRU 联合 基于 access pattern 预测 bad pages

参考来源

⚠️ 免责声明

本站内容均由 AI 基于公开知识辅助生成,仅供学习参考,请勿直接引用作为依据。作者不对信息的准确性、完整性及适用性作保证,亦不对因使用本站内容产生的任何损失承担责任。