1. mm v7.4-rc1

    kmemleak 批量扫描 struct page 数组

    kmemleak 的 struct page 扫描由每页取一次锁改为按 MAX_SCAN_SIZE 攒段批量扫描,struct page 阶段的 scan_block 调用从 4390k 次降到 69k 次,debug 内核整轮扫描快约 20%

  2. mm 未合并

    MADV_PAGEOUT 的页在 swap 写回完成时即释放

    MADV_PAGEOUT 在异步 swap 设备上只打 PG_reclaim 标记并不真正释放内存,改为隔离时打 dropbehind 标记,写回完成即从 swap cache 摘下,内存随每次写完成立即回收

  3. mm v7.4-rc1

    zswap writeback 完成后及时释放 cold folio

    扩展 dropbehind 到 swap cache folio,zswap 写回完成即释放 cold folio,MySQL OLTP +6.1%、内核构建 -3.6%

  4. mm 未合并

    通过挂载到 cgroup 的 struct_ops 定制 memcg 策略

    新增可挂到 cgroup 的 struct_ops 类型 bpf_memcg_ops,首个成员 high_policy 让 BPF 决定 memory.high 在何处执行;示例标记持 cgroupfs kernfs 锁的任务并把内联回收延后到返回用户态,锁最长持有时间从 2.049 秒降到 199 微秒,旁观负载吞吐恢复

  5. mm v7.4-rc1

    把 memcgid 引用计数移入 objcg 让 dying memcg 不再被钉住

    memcgid 引用计数从 css 移入 objcg,xarray 改持 objcg 引用,offline 时 reparent 让残留 ID 引用解析到祖先,换出页不再钉住 dying memcg

  6. mm v7.4-rc1

    从 barn 补充预填充的 sheaf

    sheaf 补充此前只从 partial slab 取对象,barn 的 full 列表饱和后 RCU sheaf 只能 flush 回 slab,本补丁让补充优先从 barn 取并引入 partial sheaf 收留剩余对象,will-it-scale mmap1 吞吐提升 24.2%,page allocator churn 下降 97.76%

  7. mm v7.4-rc1

    改变 pfn range 时优化 zone 连续性检查

    zone 新增 pages_with_online_memmap 计数代替全 zone 扫描判定连续,256G/512G 插拔耗时降 64%-81%

  1. mm 未合并

    内核在线更新期间不间断运行的孤儿虚拟机

    KHO/LUO 已能跨 kexec 保留 guest RAM 与设备状态,但物理 CPU 会被复位,vCPU 在整个 blackout 窗口被迫停顿。本系列引入四层架构:内核内 vCPU 状态 LUO 保留、cpu_preserve 物理 CPU 保留、oncore 核上时间片调度、KVM Caretaker 执行引擎,让 VM 在宿主机内核 live update 期间于保留 CPU 上不间断执行,覆盖 Intel VMX、AMD SVM 与 ARM64 VHE,新内核启动后经控制块状态机回收 vCPU 恢复正常执行

  2. mm v7.4-rc1

    把错过轮转的 folio 放到 LRU 尾部

    传统 active/inactive LRU 回收中,异步 swap 设备写回快于回收批次处理时 folio_rotate_reclaimable() 落空,已写回的干净 folio 被放回 LRU 头部造成冷热反转。本 patch 给 move_folios_to_lru() 增加 do_rotate 参数,在 shrink_inactive_list() 放回路径把疑似错过轮转的 folio 改放 LRU 尾部,测试环境空闲内存从 299Mi 升到 322Mi,swap 已用从 678Mi 降到 328Mi

  3. mm 未合并

    让 xswap 页写回物理 swap 后端

    xswap 基础系列中 swapout 页全部留在 zswap 池,池满拒绝后页无处可去形成 livelock,且按物理 swap 计费名不符实。本系列为 xswap slot 引入物理后端:zswap 拒绝时在最高优先级真实 swap 设备取 slot 一页一次 IO 写入,两侧 swap table 互相登记,读回跟随指针从后端读,配套 swapoff 回读、冗余 slot 回收、large folio 连续预留与 THP swapin,计费改为拿到后端才收,memory.swap.current 只计真实磁盘占用

  4. mm 未合并

    WP fault 时一次性复用整个 exclusive large folio

    fork 后父进程 WP fault 的复用检查对整个 large folio 成立却只处置触发页,本系列在确认 folio 为 exclusive 后把 VMA 内映射它的整段 PTE 成批标记 exclusive 并置可写,64K folio 上 256 MiB 逐页写的 WP fault 从 65601 次降到 4164 次、耗时从 30.8 ms 降到 5.7 ms,Redis BGSAVE 后 redis-server 的 CPU 时间降约 10%

  5. mm 未合并

    为 shmem 增加 mTHP collapse 支持

    khugepaged 此前只能把 shmem 折叠成 PMD 大小的 THP,本系列沿用匿名 mTHP collapse 的 bitmap 策略让 shmem 可按多阶折叠,扫描时记下哪些页已填充内容、扫完按实况选择最有效阶数,只开非 PMD 阶的配置也能唤醒折叠

  6. mm 未合并

    为 VM 统计接口新增合成性能基准

    新增 KUnit 模块 vmstat_kunit,对热路径高频调用的 VM 统计接口做 10000 次循环的双时钟计时,量化单次操作的 cycle 与纳秒开销,为改进或回归分析提供可重复的合成基准

  7. mm 未合并

    在 cgroup v2 上实现 memsw 限制

    为 cgroup v2 实现 v1 已有的内存加 swap 合并限制,新增 memory.memsw.current 与 memory.memsw.max,并为此把 page_counter 的 protection 字段拆出独立结构使其从 192 字节降到 128 字节,抵消了拆分计数器的内存成本