1. mm 未合并

    arm64 把 .text 与 .init.text 合并分配

    arm64 模块的 .text 与 .init.text 合入同一次 execmem ROX cache 分配,两段永不超出直接分支范围,init 专用 PLT 与 ftrace trampoline 随之删除

  2. mm v7.3-rc1

    reparent 时搬移 LRU size 记账而非复制

    memcg offline 时 reparent 只贷记父级却不清零子级,dying memcg 留下幽灵计数器使扫描空转、shadow node 限额超配;改为搬移后子级归零

  3. mm 未合并

    清理 folio 拆分并放开 swapcache 拆分限制

    folio 拆分按 anon 与 file 分离,放开 swapcache 高 order 与 non-uniform 拆分限制,单次拆分约快 2%

  4. mm v7.4-rc1

    修剪而非清空 per-cpu charge stock

    charge stock 高水位与清空目标同值致交错流量下持续清空失效,借页分配器水位分离改为超上限才修剪到下限,消除抖动

  5. mm 未合并

    为较小的 large folio 启用 LRU cache

    将 per-CPU LRU cache 准入放宽到较小的 large folio(含 mTHP)走缓存批量下发,摊薄 zone LRU 锁,主 LRU 锁获取降约 88%

  6. mm 未合并

    为 free_pud_range() 补调度点

    进程退出释放稀疏 2.5 TiB 映射的页表页,连续 20ms 以上无调度点饿死 softirq,free_pud_range() 补 cond_resched() 后最大间隔降到 2ms 以下

  7. mm 未合并

    为 __unmap_hugepage_range() 补调度点

    稀疏 HugeTLB unmap 遍历空 huge PTE,连续 40ms 以上无调度点饿死 softirq,循环开头补 cond_resched(),最大间隔降到 2.5ms 以下

  1. iommu 未合并

    把 iova 区间索引从 rbtree 切换到 maple tree

    iova 区间索引从 rbtree 换为 maple tree,alloc_iova() 由线性搜索变为 O(log n),消除生产环境 soft lockup 隐患

  2. mm v7.3-rc2

    修正 tmpfs 大页资格检查中的 vm_flags 误用

    MADV_HUGEPAGE 流程在 vma->flags 更新前就调用 khugepaged 注册,资格检查直读 VMA 旧标志,huge=advise 的 tmpfs VMA 被误判无大页资格而丢失折叠机会;把注册挪到标志写入之后,恢复 tmpfs 及时折叠成 PMD 级大页

  3. mm 未合并

    引入按 memory tier 的 memcg 记账与控制

    按 (memcg, tier) 建独立 page_counter,memory.tier 逐层读写 high/max,超限在该 tier 节点范围回收或 OOM

  4. mm v7.3-rc1

    stock slot 清空时释放 css 引用

    consume_stock() 把 slot 余额吃到 0 却不放 css 引用,drain 只认有余额的 slot,memcg 滞留 dying;余额归零即放引用、腾出 slot

  5. mm v7.3-rc1

    避免 vmstats 与 events 之间的 false sharing

    vmstats_percpu 与事件计数共 cacheline 引发 false sharing,移 cgwb_list 入对齐空隙隔开,mremap 吞吐恢复

  6. mm 未合并

    直接映射 large folio 的 pool 与 scratchpad bump allocator

    引入直接映射 large folio 的两个 bump allocator,netfilter 事务时延 -13.3%,lockdep 静态数组归零

  7. mm v7.4-rc1

    让 shmem unused huge shrinker 感知 memcg

    shmem unused huge shrinker 列表转为 memcg 感知 list_lru,memcg 回收只走本 memcg 候选,消除误伤与无效扫描