-
BPF 驱动的 memcg 主动回收
新增 sleepable kfunc 让 BPF 按自观测信号对指定 memcg 主动回收,语义对齐 memory.reclaim,单次调用最多回收 64 页,经 bpf_wq 逐批异步执行,受压高优先级负载中位完成时间 12.0 秒降至 2.1 秒
-
共享 bdev 的 foreign page 单独回写
共享 bdev inode 被多个 memcg 弄脏时不再对整个 owner wb 发起 foreign flush,改为按设备号单独跟踪并只回写 bdev 的 page cache,后台写入设备 I/O 降 72.7%,前台带宽升 23.0%
-
vrealloc 扩容时原地映射新增物理页
vrealloc 扩容超出已映射页数时,在现有虚拟地址范围尾部原地分配并映射新物理页,避免全量重分配与 O(n) 数据拷贝,失败回退旧路径
-
hibernation 镜像的 swap 槽位连续分配与批量 I/O
hibernation 写镜像时把空闲 swap cluster 按盘序整段发给镜像,再按连续段批量读写 I/O,5G 镜像写入时间降 18% 到 25%,读取降 11% 到 20%
-
forced readahead 改用 large folio
page_cache_ra_unbounded() 从按最小 order 逐页分配改为按 mapping 允许的最大 large folio 分配,fio randread 256k 吞吐从 2,142 提升至 2,977 MB/s
-
mincore 页表遍历改用 per-VMA 锁
mincore 走页表查询页驻留时,从持有进程全局 mmap_lock 读锁改为只持有目标 VMA 的 per-VMA 读锁,只读查询不再争抢全局锁
-
改变 pfn range 时优化 zone 连续性检查
zone 新增 pages_with_online_memmap 计数代替全 zone 扫描判定连续,256G/512G 插拔耗时降 64%-81%
-
匿名 THP 的 PMD 级 swap entry
以 PMD 级 swap entry(HPAGE_PMD_NR 连续 slot 的紧凑编码)为匿名 THP swap-out 整段占位,让 swap-in 直接恢复 PMD 映射,避免拆 PMD 与后续 khugepaged collapse,保留 TLB 大页收益。
-
esz 低于 min_region_sz 时短路跳过 min_score 计算
DAMOS 的 effective size quota 低于 min_region_sz 时,min_score 在本 charge window 内不会被使用,damos_adjust_quota() 却仍遍历全部 region 计算它,该补丁在 min_score 计算前增加配额已满的短路检查提前返回
-
可随负载伸缩的无后备存储 swap 设备 xswap
新增无后备存储的 xswap 设备,换出页只存于 zswap,cluster_info 数组驻留在 VM_SPARSE vmalloc 区域随用量按需增长与收缩,空闲设备零元数据成本,吞吐与 plain swap+zswap 差距 2-3% 以内
-
传统 LRU 对隔离期间完成回写的 folio 重试回收
把 MGLRU 已有的「隔离期间完成回写的 folio 重试回收」逻辑抽成公共函数 find_folios_written_back(),复用到传统 active/inactive LRU 的 shrink_inactive_list(),memcg 场景下未被计费的 swap 浪费从 350M+ 降至约 2M
-
拆分 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 秒
-
costly __GFP_NORETRY 分配跳过 direct compaction
对 costly __GFP_NORETRY 分配在 slowpath 令 can_direct_reclaim 与 can_compact 为 false,跳过 direct compaction 与跨 CPU IPI,后台整理照常,吞吐回升 172.7%