1. mm 未合并

    让 zswap shrinker 回写与 iocost 协作

    zswap shrinker 回写原来带 REQ_SWAP 以 root 发出、事后向 cgroup 记债,应用的 swapin、读页与分配被迫还债等待;改为 REQ_BACKGROUND 接受 cgroup IO 限速并把回收驱动的回写挪到 per-lruvec kworker,生产负载 memory PSI full 降 94%,MySQL TPS 从 413 升至 609

  2. mm 未合并

    从命令行配置内核栈大小

    为 arm64 新增 kernel_stack_pages= 命令行参数,内核栈虚拟区域保持 THREAD_SIZE 不变但只映射顶部页面,栈大小可在 8kB 到 16kB 之间按页粒度选择,Android 场景约 100MB 的内核栈占用最高可减半

  3. mm v7.4-rc1

    为 DAMOS quota goal 引入目标指标 complement 标志

    为 DAMOS quota goal 自动调节引入 complement 标志,置位后反馈回路改用目标指标的补值作为调节目标,内存分层 demotion 等反向调节场景无需新增补值指标即可表达

  4. mm 未合并

    为刻意冷页卸载保留 swap 区域

    引入 SWAP_FLAG_OFFLOAD_ONLY 把 swap 区域标记为只供显式主动回收使用,压力回收在分配、保留 entry 写出、zswap 等路径被全面拦截,ZFS zvol 与压缩 swap 等写入需内存的后端可安全承载冷页卸载

  5. mm v7.4-rc1

    让用户态页表释放 RCU 安全

    把剩余架构全部转换为 RCU 宽限期后释放页表并删除 CONFIG_MMU_GATHER_RCU_TABLE_FREE;THP collapse 改为 deposit 新分配的 PTE 页表、旧表延迟释放,仅凭 RCU 的无锁页表遍历从此安全

  6. mm 未合并

    new_below=0 拆分时跳过 file rmap 树的重复插入

    new_below=0 的 file VMA 拆分中排序键不变,原 VMA 无需从 mapping 的 rmap 区间树 remove 再 insert,只沿祖先链重算子树聚合;实测 192C/384T 上 UnixBench execl 吞吐提升约 14%

  7. mm 未合并

    把内核工作记账到它为之服务的 cgroup

    新增 set_active_cgroup() 让内核线程声明为哪个 cgroup 工作,其 CPU 时间与 PSI 停顿记入该 cgroup 并事后从 cpu.max 配额扣除,high_work 回收不再记在 root;端到端测试中 memcg 的 usage_usec 与 bpftrace 实测偏差小于 1%,无可测性能回归

  1. mm 未合并

    用 AMD IBS Memory Profiler 采样驱动热页提升

    为 pghot 接入 AMD Zen6 IBS Memory Profiler 硬件提示源:硬件按周期采样访存并直接给出 PFN 与数据来源,驱动经 per-CPU SPSC ring 与 cpuhp 生命周期调用 pghot_record_access(),不需要 hint fault 与 PTE 扫描;Graph500 相对无分层基线 3.17x(base NUMAB2 2.34x)、pointer-chase p5008 3.48x、NAS BT 2.15x、llama.cpp decode 1.22x

  2. mm 未合并

    优化匿名 swapbacked large folio 的页表拆除

    把匿名 swapbacked large folio 的 PTE 清空与 swap PTE 写入合并为按批操作,摊销原子操作、内存屏障与 arm64 contpte-unfolding 的 TLB flush,sparc64 的 ADI 标签保存也改为按 PTE 范围处理;arm64 上 64K large folio 换出 256M 速度提升逾 2 倍。

  3. mm 未合并

    用 slab_tiny 启动参数取代 CONFIG_SLUB_TINY

    把 SLUB_TINY 从编译期选项改为 slab_tiny 启动参数,新增 slab_debug=N 复用调试慢路径关闭 percpu 对象缓存,让共用 vmlinux 的 kdump 内核按启动场景选择省内存形态

  4. mm 未合并

    为 auto-movable online 策略缓存 zone 统计

    auto-movable online 策略在 nid 为 NUMA_NO_NODE 时每个 memory block 都重算全 zone 的 MOVABLE 与 KERNEL_EARLY 统计,改为缓存并在 present_pages 与 present_early_pages 变更时失效

  5. mm 未合并

    共享 bdev 的 foreign page 单独回写

    共享 bdev inode 被多个 memcg 弄脏时不再对整个 owner wb 发起 foreign flush,改为按设备号单独跟踪并只回写 bdev 的 page cache,后台写入设备 I/O 降 72.7%,前台带宽升 23.0%

  6. mm v7.4-rc1

    新增 bpf_proactive_reclaim kfunc 让 BPF 主动回收 memcg 内存

    新增 sleepable kfunc 让 BPF 按自观测信号对指定 memcg 主动回收,语义对齐 memory.reclaim,单次调用最多回收 32 页,经 bpf_wq 逐批异步执行,受压高优先级负载中位完成时间 15.3 秒降至 2.0 秒

  7. mm 未合并

    system heap 分配阶对齐 ARM64 巨页大小

    system heap 的固定分配阶 `{8, 4, 0}` 与 ARM64 的 PMD 块错位,改为按页粒度取 PMD 块与 CONT PTE 对应的阶,4K 页下最大块升至 2 MiB,IOMMU 可用单个 block entry 映射以降低 TLB 压力