1. mm 未合并

    zswap 用 pool id 为 zswap_entry 瘦身

    zswap_entry 的 pool 指针改用 u8 pool id,pool 表换成按需分配 id 的 xarray,entry 从 56 缩至 48 字节,每 1GiB 省约 2MiB 元数据

  2. mm 未合并

    按访问模式分组 memcg 结构体字段

    memcg 字段挪动反复引入 false sharing 回归,把 struct mem_cgroup 与 struct mem_cgroup_per_node 的字段按访问模式分进命名 cacheline 组,memcg_struct_check() 在编译期校验布局契约,实测提升 0.8% 至 1.3%,无回退。

  3. mm 未合并

    为 vmap drain 启用专用 unbound workqueue

    vmap drain 此前经 system_wq 以 bound worker 运行,高 CPU 数机器上超 10ms 触发告警;迁到专用 WQ_UNBOUND 加 WQ_MEM_RECLAIM 队列并拆分父子队列,顺带简化 helper 调度

  4. mm 未合并

    为 memcg memory.reclaim 增加显式回收目标

    memory.reclaim 新增 goal=progress、goal=evict、goal=demote 三个显式目标,tiering 系统上 evict 让 demotion 不再计入完成量,demote 只做分层放置不驱逐,用户态控制器重获确定的回收语义

  5. mm 未合并

    修复 MGLRU 下的 shadow node 预算

    count_shadow_nodes() 经 lruvec_lru_size() 统计可驱逐页,而 MGLRU 不维护其依赖的 lru_zone_size 数组,shadow node 预算只剩零头致 workingset 保护失效;统计源换回 lruvec_page_state_local() 并把 dying memcg 统计重定向扩到所有层级后恢复

  6. mm 未合并

    为 RSS 引入层级 per-CPU 计数器

    引入层级 per-CPU 计数器通用库并替换 per-mm RSS 计数,近似误差以 O(N·logN) 为界,384 逻辑 CPU 上 /proc RSS 偏差从约 1GB 降到约 80MB

  7. mm 未合并

    MADV_WILLNEED 预取私有文件映射的 COW swap 页

    MADV_WILLNEED 对发生过 COW 的私有文件映射补走 PTE 遍历预取 swap 页,后续访问同步换入从 16718 页降为 0,访问耗时从 752 ms 降到 55 ms

  1. mm v7.3-rc4

    修复 pmd_modify() 丢弃 dirty bit

    pmd_modify() 剔除 _PAGE_DIRTY,可写脏 PMD 修改权限后脏状态凭空消失;补回 _PAGE_DIRTY 后,MADV_FREE 与 NUMA hinting 链路下的数据静默丢失随之消除

  2. mm 未合并

    降低 FS-DAX pmem 的 struct page 开销

    FS-DAX pmem 注册时 vmemmap 全部指向共享只读页,DAX fault 插入用户态映射前才物化私有副本,从未 fault 的 PFN 既不占 vmemmap 内存也跳过 struct page 初始化

  3. mm 未合并

    v1 不可用时 memcg 跳过非层级统计更新

    memcg 非层级统计数组只有 v1 接口会读,CONFIG_MEMCG_V1=n 时从结构体编译移除,cgroup_no_v1= 封锁 memory 时 flush 取空指针跳过更新,整体 flush 耗时降低 2.2%

  4. mm 未合并

    PTE 映射下 mmap 写的 sub-folio 脏页跟踪

    借 folio_mkclean() 的 rmap 遍历回收 PTE 硬件脏位并逐段传给文件系统,缺页路径不再提前置脏整 folio,XFS 上 large folio 每个 folio 写一字节后 msync 的回写量从 512M 降至 1M

  5. mm 未合并

    memblock 用二分查找定位候选区域

    memblock_add_range() 与 memblock_isolate_range() 从 index 0 线性扫描改为二分定位第一个可能相交的 region,KHO 恢复 393k 页保留内存的耗时从约 268s 降至约 50ms

  6. dma 未合并

    DMA 页分配改用精确分配

    DMA 页分配的 buddy 回退从 get_order 整块分配改为 alloc_pages_exact_nid() 精确分配,非 2 的幂请求不再把取整后的尾部页一并占住

  7. mm 未合并

    把 guest_memfd 后备内存绑定到 NUMA 节点

    新增 GUEST_MEMFD_FLAG_BIND_NODE 创建标志,KVM 创建时为指定节点构建 MPOL_BIND 策略并装到整个 guest_memfd inode,不可映射的机密 guest_memfd 也能把全部 folio 落到指定节点