-
拆分 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%
-
KSM 扫描改用 per-VMA 锁
ksmd 的全 VMA 扫描与 mergeable 页查找从 mmap 读锁改为逐 VMA 读锁,配合 mm_users 引用保护页表生命周期,找不到候选页时用 mmap 序列号校验跳过重复回退遍历,4 个 mmap/munmap 竞争线程下 KSM 全扫描耗时从 90.9 秒降至 30.1 秒
-
在 per-VMA lock 下重试一次 page fault
让 per-VMA lock 路径下返回 VM_FAULT_RETRY 的 fault 原地重试一次,仍失败才退回 mmap_lock,filemap 吞吐最高提升 69.6%
-
cache 感知调度修复
修复 cache 感知调度在偏好计数、active balance 迁移语义与统计生命周期上的缺陷,让任务稳定留在 preferred LLC 上,并消除记账路径的 use-after-free
-
硬件采样的访问报告
把 DAMON 的访问信息来源从 Accessed 位扫描扩展到硬件采样 PMU:per-CPU 无锁 report ring 按 probe class 分区承接 NMI 样本,统一 drain 把报告折算进 region 计数,PMU 供热度、page fault 供年龄,promotion 与 demotion 在同一 kdamond 下双向迁移,实测带宽较最优单节点分别提升 59.5% 与 18.0%
-
guest_memfd 原地转换支持
让 guest_memfd 的 shared 与 private 转换原地完成,不再 tear down 重建:memslot 只认 guest_memfd 一个后备,KVM_SET_MEMORY_ATTRIBUTES2 支持增量转换与失败偏移上报,转换前排干 lru 与 mlock 批缓存并按 refcount 确认页未被使用,失效按映射类型精确 zap,get_pfn 时清零页防止泄漏宿主内存,未启用转换的 VM 经死代码消除零开销
-
HugeTLB 引入按 section 的 vmemmap 优化
把 HugeTLB 的 vmemmap 优化从专用 early-boot 预填充路径切换到通用 section-based 路径:compound page order 记录进 memory section 元数据,通用 sparse-vmemmap 填充路径据此分配共享尾页 vmemmap,memmap_init_range 跳过共享尾页,SPARSEMEM_VMEMMAP_PREINIT 与相关 bootmem 标志位随之删除
-
优化 zswap 的失效与存储路径
把 zswap_invalidate() 改为按 range 批量处理,并在 zswap 从未启用时经 static branch 整体跳过;zswap_store() 回退路径复用同一实现,消除 swap 槽位释放与存储回退路径上的逐槽 xarray 开销
-
跳过 swapoff 扫描中的空 cluster
find_next_to_unuse 改按 cluster 扫描,空 cluster 一次计数读整簇跳过,1 TiB 设备填充 512 GiB 时 swapoff 耗时降 81.3%
-
arm64 支持 PUD 级 THP
为 arm64 补齐 PUD 级 THP 的页表操作集并打开架构开关,DAX 与 pfnmap 的 1GB 映射从 512 个 PMD 项减为 1 个 PUD 项,x86 与 riscv 相同的 pudp_invalidate() 提为通用实现
-
排空 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() 调用
-
引入 pgidle_set probe 过滤器
新增 pgidle_set probe 过滤器,只匹配确认被标记为 idle 的页,让回收与压缩类 scheme 精确锁定可被有效处理的冷页,不再把无法显示 idleness 的内存(如 non-present 页)混进冷页目标
-
引入 probe_hits_wsum DAMOS core 过滤器
新增 probe_hits_wsum DAMOS core filter,按 probe hits 加权和区间圈定操作目标 region,让 DAMOS 动作可以基于 data attributes 监控结果(如硬件采样热度)驱动;加权和改用 moving sum 计算,适配 DAMOS 自己的 apply_interval
-
把层次化保护移出 struct page_counter
把仅 memory 计数器与 dmem pool 使用的层次化保护状态从 struct page_counter 剥离到独立的 page_counter_protection 按需挂接,page_counter 从 3 条 cache line 缩到 2 条,每个 memcg 净省 128 字节