-
可回收的内核栈
阻塞线程内核栈中栈顶之后的页由 shrinker 异步回收,再调度前先重建栈,PF_RECLAIMABLE_STACK 标注安全阻塞点防回收死锁;Android 多任务测试内核栈内存占用降超 50%
-
按 LLC 粒度扩展 cache 感知聚合
为 cache 感知调度构造按 preferred LLC 排序的固定亲和序列,按线程组总利用率估算可用 LLC 范围,范围内目标有容量即可迁入;hackbench 中位提升 27.7%,schbench p99 唤醒延迟中位改善 16.8%
-
避免 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%。
-
mTHP 友好的内存 compaction
proactive compaction 的目标从固定 order-9 改为最小 always 使能的 mTHP order,已达标的 folio 不再被无谓迁移,anon_fault_fallback 降约 35%
-
虚拟 swap 空间(swap table 版)
swap entry 与物理 slot 解耦,虚拟 swap 设备动态分配 cluster、按需获得 zswap 或磁盘后端,memhog 耗时 -4.4%
-
避免网络 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%
-
arm64 把 .text 与 .init.text 合并分配
arm64 模块的 .text 与 .init.text 合入同一次 execmem ROX cache 分配,两段永不超出直接分支范围,init 专用 PLT 与 ftrace trampoline 随之删除
-
reparent 时搬移 LRU size 记账而非复制
memcg offline 时 reparent 只贷记父级却不清零子级,dying memcg 留下幽灵计数器使扫描空转、shadow node 限额超配;改为搬移后子级归零
-
清理 folio 拆分并放开 swapcache 拆分限制
folio 拆分按 anon 与 file 分离,放开 swapcache 高 order 与 non-uniform 拆分限制,单次拆分约快 2%
-
修剪而非清空 per-cpu charge stock
charge stock 高水位与清空目标同值致交错流量下持续清空失效,借页分配器水位分离改为超上限才修剪到下限,消除抖动
-
为较小的 large folio 启用 LRU cache
将 per-CPU LRU cache 准入放宽到较小的 large folio(含 mTHP)走缓存批量下发,摊薄 zone LRU 锁,主 LRU 锁获取降约 88%