-
优化 ZONE_DEVICE 的 memmap 初始化
用首页播种模板、其余页只刷差异字段再整块复制并配 non-temporal stores 绕 cache 初始化 ZONE_DEVICE memmap,耗时最高降约 67%
-
per-VMA lock 无条件使用与清理
让 per-VMA lock 无条件可用并新增 vma_start_read_unlocked(),fast path 完全避开 mmap_lock
-
swap 不可用时避免拆分 large folio
swap 不可用时按失败原因区分,vmscan 与 shmem 两路只在拆小有望放下时才拆,无 swap 场景的 MADV_PAGEOUT 中位延迟从 743.8ms 降至 181.7ms
-
修复 last region 的无条件跳过
DAMOS quota 游标在 last region 处不再附带无条件跳过,到达时只重置游标、按位置关系判定跳过,修复 last region 从未处理却被永久漏掉
-
保留仍被映射的 dropbehind folio
仍被映射的 dropbehind folio 在 writeback 完成后免于淘汰,映射访问免去重新 fault-in 与重读 I/O
-
为 /dev/zero 与 /dev/full splice 全局 zero page
把 /dev/zero 与 /dev/full 的 splice_read 从逐 buffer 分配并清零新页改为直接引用全局 zero page,省去页分配与清零;shmem 的 zero-page splice helper 上移 fs/splice.c 共享
-
为 arm64 添加内核复制特性
按 NUMA 节点复制内核 text 与 rodata(含模块),各节点 CPU 从本地内存取指;Kunpeng 920 四节点微基准最远节点执行耗时降 70%,客户生产环境 CEPH 与 StarRocksDB 提升 5%
-
由 zswap 支撑的可扩展 swap 设备
xswap 解耦 swap slot 与物理后端,换出页只存 zswap,sysfs 创建销毁,cluster_info 按需伸缩,查找 O(1)
-
可回收的内核栈
阻塞线程内核栈中栈顶之后的页由 shrinker 异步回收,再调度前先重建栈,PF_RECLAIMABLE_STACK 标注安全阻塞点防回收死锁;Android 多任务测试内核栈内存占用降超 50%
-
避免 drain_vmap_work 与 vmap_nodes 之间的 false sharing
drain_vmap_work 的 pending 位与 vmap_nodes 使用同一个 cache line,并发 free 每次写 pending 位都让所有 CPU 缓存的该行失效,vmap 读路径反复 cache miss,加 __cacheline_aligned_in_smp 让 work item 独占缓存行,vmalloc.fix_align 耗时 -12.61%
-
修复 zswap writeback 路径的 workingset refault
zswap writeback 会误计 refault 并弄丢 shadow,改为 shadow 随 zswap tree 保存、swap-in 时才评估,refault_anon 降低了 48%。
-
避免网络 socket 上的 swiotlb 拷贝
Confidential Computing 下让 socket buffer 直接从 swiotlb 共享池分配,DMA map 认出池页直接返回地址,收发两向免掉 bounce 拷贝,1-2 队列发送端吞吐从约 50 Gbps 提到 170 Gbps 以上
-
在内核 nofault 循环中批量处理 PSTATE.TCO
Hardware Tag-Based KASAN 的 async 与 asymmetric 模式下,把内核 nofault 循环的 PSTATE.TCO 开关从逐次访问改为逐次操作,非空操作的动态 MSR TCO 执行从 2N 降为 2,BPF 双字符串比较从 4N 降为 2
-
用 slab parking 减少 list_lock 竞争
SLUB free 慢路径做 full→partial/empty 转移遇 trylock 失败时,把 slab 无锁挂到 per-node llist(parking),由消费 partial 链表的路径拿锁后统一 unpark,will-it-scale mmap1 192 进程吞吐 +21.7%,buddy 往返 -52%