-
MADV_COLD 与 MADV_PAGEOUT 改用 per_vma 读锁
MADV_COLD 与 MADV_PAGEOUT 改用 per_vma 读锁替代 mmap_lock 读锁,避开无关 VMA 写锁阻塞,调用耗时降约 115 倍
-
把大进程退出的地址空间销毁延后到 mm_reaper
把大进程的 __mmput 延后到 mm_reaper kthread 异步销毁,16GB 进程 kill 的 reap 延迟从 282ms 降到 0.15ms
-
用 checksum 加速 page 比较
KSM 以 page checksum 作 tree ordering key,仅匹配时 fallback memcmp,全不同页扫描加速 3.42 倍
-
为非 x86 架构优化 this_cpu 操作
为 ARM64 引入每 CPU 页表映射本地 percpu 区,this_cpu 操作免 preempt 保护,内核镜像减 184KB 且构建 sys 时间降 13% 至 18%
-
把 nr_cached_objects 的 memcg 门控下放到各文件系统
把 memcg 门控从 fs/super.c 下放到 btrfs 与 shmem 回调并删 blanket 跳过,恢复被误关的 XFS 每 memcg inode 回收
-
用连续内存加速 ioremap 与 vmalloc 及 vmap
用单次页表遍历按粒度设大页并对连续页批量映射,让大缓冲 vmap 加速约 8 倍且 TLB 填充骤降
-
为 MGLRU 添加 proactive aging 控制接口
MGLRU 新增 memory.aging,在 reclaim 前重排 generation 修正 hot/cold inversion,keep-alive +15.4%
-
块设备 swap 批量化与 swap_ops 新结构
块设备 swap 改用 swap_iocb 批量攒 bio 摆脱单 bio 低效,swap_ops 统一注册两类设备方法;内核构建下 writeout 合并度 2x、回读 1.2x,整体时间不变
-
为 cgroup swap 控制引入 swap tier
在 priority 之上引入 swap tier 按性能分组,用 per-memcg effective mask 在热路径过滤免遍历 cgroup,冷启动降低近 80%
-
global direct reclaim 取得进展时清除 hopeless kswapd
global direct reclaim 取得进展时清除 hopeless,让闲置 kswapd 恢复异步回收,移出分配同步 direct reclaim,分配停顿骤降约 98%
-
修复 NULL mapping order-0 folio 的 GUP-fast 回退
secretmem 检查合并后 NULL mapping 的 order-0 folio 一律回退 GUP 慢路径,殃及 alloc_page()+vm_insert_page() 的驱动页;NULL mapping 即可证非 secretmem,仅 reject_file_backed 才回退
-
为内存分配剖析引入 IOCTL 过滤
/proc/allocinfo 文本接口要求用户态全量读取解析,内核为每个 tag 聚合全 CPU 计数器开销大;新增 IOCTL 二进制接口把过滤条件下推到聚合之前,过滤查询快约 20 倍
-
VM guest 内存的工作集跟踪
userfaultfd 新增 RWP 读写保护跟踪,guest 内存读与写都触发 fault 通知 VMM,支持异步就地恢复与运行时模式切换,工作集识别不再只看写访问
-
重构 anon_vma 并移除 anon_vma_chain
用基于地址不变量的 fractal 双链表移除 anon_vma_chain,让 fork 不再逐个分配链节点,耗时降约 15% 且省约 35MB 内存