1. mm 未合并

    拆分 folio refcount 的 frozen 位提升并发可扩展性

    把 page refcount 拆成 frozen 死亡位与 31 位计数器,folio_try_get() 的 add_unless 从先读后判的 CAS 循环改为单条乐观增量 RMW,高并发读同一页的吞吐在 353 线程 AMD EPYC 9654 双路上提升 74.7%,24 线程 E5-2690 v3 双路上提升 94.7%

  2. mm 未合并

    KSM 扫描改用 per-VMA 锁

    ksmd 的全 VMA 扫描与 mergeable 页查找从 mmap 读锁改为逐 VMA 读锁,配合 mm_users 引用保护页表生命周期,找不到候选页时用 mmap 序列号校验跳过重复回退遍历,4 个 mmap/munmap 竞争线程下 KSM 全扫描耗时从 90.9 秒降至 30.1 秒

  3. mm 未合并

    在 per-VMA lock 下重试一次 page fault

    让 per-VMA lock 路径下返回 VM_FAULT_RETRY 的 fault 原地重试一次,仍失败才退回 mmap_lock,filemap 吞吐最高提升 69.6%

  4. sched 未合并

    cache 感知调度修复

    修复 cache 感知调度在偏好计数、active balance 迁移语义与统计生命周期上的缺陷,让任务稳定留在 preferred LLC 上,并消除记账路径的 use-after-free

  5. mm 未合并

    硬件采样的访问报告

    把 DAMON 的访问信息来源从 Accessed 位扫描扩展到硬件采样 PMU:per-CPU 无锁 report ring 按 probe class 分区承接 NMI 样本,统一 drain 把报告折算进 region 计数,PMU 供热度、page fault 供年龄,promotion 与 demotion 在同一 kdamond 下双向迁移,实测带宽较最优单节点分别提升 59.5% 与 18.0%

  6. mm v7.4-rc1

    guest_memfd 原地转换支持

    让 guest_memfd 的 shared 与 private 转换原地完成,不再 tear down 重建:memslot 只认 guest_memfd 一个后备,KVM_SET_MEMORY_ATTRIBUTES2 支持增量转换与失败偏移上报,转换前排干 lru 与 mlock 批缓存并按 refcount 确认页未被使用,失效按映射类型精确 zap,get_pfn 时清零页防止泄漏宿主内存,未启用转换的 VM 经死代码消除零开销

  7. mm v7.4-rc1

    HugeTLB 引入按 section 的 vmemmap 优化

    把 HugeTLB 的 vmemmap 优化从专用 early-boot 预填充路径切换到通用 section-based 路径:compound page order 记录进 memory section 元数据,通用 sparse-vmemmap 填充路径据此分配共享尾页 vmemmap,memmap_init_range 跳过共享尾页,SPARSEMEM_VMEMMAP_PREINIT 与相关 bootmem 标志位随之删除

  1. mm v7.4-rc1

    优化 zswap 的失效与存储路径

    把 zswap_invalidate() 改为按 range 批量处理,并在 zswap 从未启用时经 static branch 整体跳过;zswap_store() 回退路径复用同一实现,消除 swap 槽位释放与存储回退路径上的逐槽 xarray 开销

  2. mm v7.4-rc1

    跳过 swapoff 扫描中的空 cluster

    find_next_to_unuse 改按 cluster 扫描,空 cluster 一次计数读整簇跳过,1 TiB 设备填充 512 GiB 时 swapoff 耗时降 81.3%

  3. mm 未合并

    arm64 支持 PUD 级 THP

    为 arm64 补齐 PUD 级 THP 的页表操作集并打开架构开关,DAX 与 pfnmap 的 1GB 映射从 512 个 PMD 项减为 1 个 PUD 项,x86 与 riscv 相同的 pudp_invalidate() 提为通用实现

  4. mm 未合并

    排空 lru_add_drain() 与 lru_add_drain_all() 调用

    让 folio 留在 per-cpu fbatch 上时即置 PG_lru、不加额外引用、可被隔离,视同已在 LRU 上,从而移除散落在 GUP、迁移、memory-failure、CMA、s390、block、fs 各处的大量 lru_add_drain() 与 lru_add_drain_all() 调用

  5. mm v7.4-rc1

    引入 pgidle_set probe 过滤器

    新增 pgidle_set probe 过滤器,只匹配确认被标记为 idle 的页,让回收与压缩类 scheme 精确锁定可被有效处理的冷页,不再把无法显示 idleness 的内存(如 non-present 页)混进冷页目标

  6. mm v7.4-rc1

    引入 probe_hits_wsum DAMOS core 过滤器

    新增 probe_hits_wsum DAMOS core filter,按 probe hits 加权和区间圈定操作目标 region,让 DAMOS 动作可以基于 data attributes 监控结果(如硬件采样热度)驱动;加权和改用 moving sum 计算,适配 DAMOS 自己的 apply_interval

  7. mm 未合并

    把层次化保护移出 struct page_counter

    把仅 memory 计数器与 dmem pool 使用的层次化保护状态从 struct page_counter 剥离到独立的 page_counter_protection 按需挂接,page_counter 从 3 条 cache line 缩到 2 条,每个 memcg 净省 128 字节