-
让 VMA 扫描过滤器不再挡住 promotion
把 promotion-only 扫描与 placement 扫描分离,MM_CP_PROT_NUMA_PROMO_ONLY 随 protection walk 传递;shared folio 允许升 tier,只读文件映射与 PID 不活跃 VMA 在 tiering 模式下做 promotion 扫描,placement 扫描单独跟踪以防饿死回退被推迟;实测 DRAM 带宽 150-200 提升至 250 GB/s 以上,请求延迟 5 ms 以上降至 0.8-2 ms
-
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 字节
-
跳过 bdev inode 的 foreign dirty tracking
bdev inode 被所有 buffered 用户共享却只有一个 wb 属主,属主错配是常态,foreign flush 顺带写出普通文件数据破坏覆写合并;对 bdev inode 跳过 foreign dirty tracking,覆写文件设备写入量 -69.6%,前台带宽 +16.8%
-
NUMA 感知回收的自适应多线程 kswapd
每个 NUMA 节点的 kswapd 从单线程扩展为上限 16 的线程池,默认 1 保持现状,唤醒数量按节点空闲核数的 10 秒滑动平均自适应决定,回收能力随 NUMA 负载伸缩;Cassandra 实测吞吐 +7.3%,p99 响应延迟 -5.9%
-
swapcache 稀少时 GFP_NOIO 回收跳过 anon 扫描
GFP_NOIO 回收能收回的 anon folio 只有 swapcache 里的,新增 swapcache 水位判定,传统 LRU 下水位过低时整轮跳过 anon 扫描,消除观测到的超过 150 ms 空转
-
清理并解耦匿名与文件 folio 的拆分路径
把匿名、page cache、swap cache 混在一起的拆分函数按类型分家成两个助手,swap cache 全归匿名侧;修复两处错误路径,未映射匿名大页免 anon_vma 锁即可拆分,__folio_split 单次调用耗时从 68.52µs 降至 67.38µs
-
为 f2fs 启用 buffered RWF_DONTCACHE
为 f2fs 打开 buffered RWF_DONTCACHE 入口,dropbehind 写 bio 改在任务上下文完成以即时失效 folio,normal 与 dropbehind folio 允许共享写 bio。手机真机 64 GiB 流式写:kswapd0 CPU 从约 20% 归零,Cached 从约 4.8 GiB 降到约 0.6 GiB,写吞吐下降 23% 到 68%;限压 memcg 下 1 MiB 写吞吐反升 286.90%
-
用 trie 降低持久化栈记录的内存占用
持久化栈记录改用 path-compressed trie 共享公共帧前缀,默认关闭、boot 参数启用;实测 KASAN 服务器 pool 预算占用 x86-64 从 100% 降到 24%,arm64 从 32% 降到 11%,代价是首次插入慢约 12 至 14 倍
-
让 huge PFN 映射绕过 THP tuneables
让 huge PFN 映射(VM_PFNMAP 且注册 huge_fault)绕过 THP tuneables 门控,缺页时直接建立大页映射,smaps THPeligible 上报保持准确;128 GiB GPU BAR 映射耗时 20.7 秒降至 0.4 秒,4 GPU 虚拟机启动 97 秒降至 17 秒
-
修复非 kswapd 回收下的内存保护失效
非 kswapd 全局回收无人计算 memcg 保护值,memory.min/low 拿陈旧值做判断而失效;沿祖先链 O(depth) 补算保护值,使保护在该路径恢复生效