-
改用 walk_page_range_vma() 消除 find_vma()
walk_page_range() 每次页表遍历都做一次 find_vma(),对已知单 VMA 范围的调用方属冗余;mincore、mprotect、mlock、migrate_device 四处改用 walk_page_range_vma()
-
避免碎片化下的 reclaim 与 eviction 循环
把可失败分配意图传给 shrinker 使其跳过无益驱逐,打断碎片化下的回收驱逐循环,WebGL 帧率约升 5 倍
-
vmalloc 的 vmap_area 索引从 rbtree 迁移到 maple_tree
把 vmap_area 索引从红黑树迁到 maple tree 使区间查询原生化并减少缓存行触碰,饱和吞吐提升约 65%
-
memcg slab 回收跳过非 memcg 感知的 nr_cached_objects
给非 memcg 感知的文件系统钩子加 memcg 闸门,使其只在全局回收路径放行,消除逐组冗余调用并堵住跨组回收 inode
-
swap readahead 移除不必要的 lru_add_drain
移除 swap readahead 结尾无调用者依赖的 LRU 刷洗、改由 per-CPU 批次自然排走,消除每分钟约 2.8 万次冗余锁流量
-
khugepaged 支持 mTHP 折叠
khugepaged 改用 bitmap 记录整段占用并按对齐子段挑最大可用 mTHP 折叠,兑现此前流失的中等大页,降低 TLB 未命中
-
simple xattr 改进
让 simple_xattr 哈希表整个 superblock 共享来摊薄固定开销,单属性内存占用降回约 111 字节
-
将 compact_gap 封顶于 COMPACT_CLUSTER_MAX
把 compact_gap 封顶于 compaction 单批隔离容量,让 kswapd 更早把高阶回收交班 compaction,生产主机扫描量降约 70%
-
改进可执行内存的 large folio 预读
让可执行映射跳过投机节流计数并放宽强制预读阶门槛,恢复被永久禁用的 large folio 预读,cold fault 快约 50%
-
削减 xarray 查找并用 folio batching 优化 shmem 读
削减 shmem 读的多余 xarray 查找,用大块填零与 folio batching 摊薄逐页开销,大块读吞吐最高提升约 42%
-
批量处理 partial slab 链表操作
SLUB 批量取 slab 时追踪连续 slab 段整段搬移、只改两端指针,缩减自旋锁临界区指针改写,mmap 压测吞吐提升约 5%
-
THP shrinker 改用 list_lru
改用节点与 cgroup 交集的 list_lru 组织 THP 延迟分裂队列,让节点受限回收只扫目标节点,避免误分裂、保留更多 THP
-
优化匿名 large folio 的取消映射
匿名 large folio 换出时一次清空并重设整批 swap PTE,让 TLB flush 随批量下降,arm64 换出耗时减半
-
缩小 obj_stock_pcp 并缓存多个 objcg
让 per-CPU 计费缓存多槽并存使各 NUMA 节点变体同时驻留,免去跨节点反复清空重填,修复约 68% 吞吐回归