📅 Linux 内核性能日报 - 2026-08-04

三周洞察(07-14 ~ 08-04)· 调度器 · 内存 · 内核热路径 · crypto · 虚拟化 · 架构

📊 今日概览

14
深度分析篇
3 周
覆盖窗口
9
子系统

📈 三周洞察(2026-07-14 ~ 08-04)

本窗口的性能优化主线
本页聚合 07-14 ~ 08-04 三周内核邮件列表中最具性能价值的高热度补丁/系列(已排除 08-03 日报覆盖的 16 篇),共 14 篇深度分析,覆盖 锁竞争、热路径、调度、内存、crypto、虚拟化、架构 七个性能主题维度。
跨主题趋势(解读(AI 分析))
  • 锁竞争仍是内存子系统热点:vmscan lru_lock(-61%)与 zs_free 等延续"把记账/次要工作移出热锁临界区"的思路,与 08-03 的 per-VMA locks 方向一致。
  • 热路径免全局访问成主流:futex(runtime constants)、kcfi(text_poke 翻转分支)、arm64 preempt(删特判)三篇异曲同工——把"每次调用都做的冗余工作"改为"启动时一次完成"。
  • 硬件加速侵入内核:KVM FEAT_HACDBS 脏页清理(-70%~-87%)、crypto fallback 代理消除——硬件特性正在改写内核通用路径。
  • review 把关严格:bpf string kfuncs 因复杂度被 Andrii 否决撤回、NMI-irq 的 irq 补丁被 Peter 质疑后作者撤回——性能优化必须过"复杂度/收益比"关。

🧠 内存管理(2 篇)

在内存压力大、持续 swap-out/refault 的多核主机(176 核 / 256 GB)上,页回收路径的 anon/file 扫描平衡成本原本由每个回收生产者(shrink_inactive_list、shrink_active_list、workingset_refault)在 lru_lock 下做,作者改为在 reclaim 侧用专用 cost_lock 从 vmstat 单调计数器增量一次性推导,perf lock 实测总 LRU 锁等待 4.23s→1.66s(-61%),两个成本记账点完全消除(-100%)(数据作者自报,未独立验证)。
在机密计算场景需把敏感页移出内核 direct map 以防御侧信道攻击时,旧的 AS_NO_DIRECT_MAP 机制每分配/释放一页都要逐页 set_memory + TLB flush、无法摊销;本补丁(26 篇系列收尾)让页分配器直接提供已免映射的页(ALLOC_UNMAPPED)并经 mermap 临时映射清零,把 TLB flush 从每页一次变成整块批量摊销——系列基准(Firecracker 填充 guest 内存,Sapphire Rapids,作者自报未独立验证)populate_latency 从 1.04s 降至 313.02ms(-70.0%)。

⚡ 调度器(2 篇)

cache-aware 调度每 10ms 全量扫描所有 CPU 来选「偏爱 LLC」,在多 NUMA 大机上开销大(Redis 场景 0.81% 周期、p99 恶化 -25.68%);本补丁用 visited_cpus 位图把扫描范围从 384 收窄到进程真实访问过的 14~16 个 CPU,p99 回收到 -1.14%,状态 In Review。
为 sched_ext 子调度器场景下"被 cap-reject 反复弹回而卡死/空烧 CPU"的任务新增 SCX_ENQ_RESCUE 内核兜底执行:按默认 2% CPU 带宽(token bucket)与 5ms 量子保证前向推进,必要时升级为受保护执行强制抢占,已合入 sched_ext/for-7.3(作者未提供基准测试数据)。

🔧 内核热路径(6 篇)

futex 哈希热路径 __futex_hash():用内核 runtime constants 机制把哈希移位量/掩码/桶数组基址 constify 为指令立即数(启动时 patch 进指令),热路径免去全局变量访存,同时把桶指针数组从 MAX_NUMNODES 静态预留改为按 nr_node_ids 动态分配,消除内存 bloat;补丁未提供基准数据(收益为逻辑分析),同方向已合入的 companion commit(futex: Optimize futex hash bucket access patterns)在 SKL 双路 112 线程 perf bench futex hash 上测得最高 +39.7%(autosize,作者自报未独立验证)。
在 NMI 与中断开关高频进出 preempt_count 的处理器热路径上,preempt_count 位域紧张(NMI 嵌套计数占 4 bit),每次 NMI 进出都要操作共享计数器、中断开关最外层解锁还要重读一次 preempt_count:本系列把 NMI 嵌套计数迁到独立 per-CPU 计数器 nmi_nesting(NMI_BITS 4→1),并让 local_interrupt_enable() 复用 hardirq_disable_exit() 返回值省去一次内存重读。如实记录:Peter Zijlstra 质疑计数式中断开关必要性,irq 优化补丁已被作者撤回。
在 unbound 工作队列场景下,本系列把"pwq 释放/nr_active 记账"的判断从 WQ 类型标志改为 backing pool 类型,并新增可选的 __WQ_PERCPU_POOLS 每-CPU 后端,让 unbound 工作项可钉在入队 CPU 的静态 per-cpu 池上执行——为 Tejun 提出的"per-cpu 成为 unbound 亲和性设置、动态 CPU 隔离"方向铺路;系列自身声明 no functional change、未提供基准数据。
arm64 preempt_enable() 热路径上,旧 __preempt_count_dec_and_test() 的"罕见特判捷径"反而让常见路径背负 2 条条件分支且慢路径无法外提,补丁删特判、改为统一重读判断,使常见路径收敛为单条 not-taken 分支并让慢路径整体外提——语义完全等价,作者明确未提供运行时基准(唯一证据是 GCC 15.2.0 前后汇编对比:常见路径条件分支 2→1),已获 Jinjie Ruan 的 Reviewed-by。
该补丁把 kCFI 间接调用校验序列里"合法时恒跳转"的 je 分支,用启动时 text_poke 改写成"合法时不跳转"的 jne + 内嵌 UDB(0xd6) 陷阱序列,在 CFI 语义完全不变、指令字节数不变的前提下把热路径分支从 taken 翻转为 not-taken;Scott 的 PoC 数据显示间接分支 miss 率 BHI_DIS_S=1 下 redis -38.6%、lmbench syscall -65.6%,BHI_DIS_S=0 下 redis -98.9%(作者自报,未独立验证)。
麒麟软件 Yaxiong Tian 的 5 补丁系列:cpuidle 的 menu governor 每次选 idle 状态都重复聚合低频变化的延迟 QoS 约束,补丁用 per-CPU 缓存 + notifier 失效代数把重算挪到约束真变时,作者自报(ftrace,未独立验证)cpuidle_governor_latency_req() 在 menu_select() 中占比 19.9%→4.2%、每调用约 1.9µs→0.3µs(约 6×)。v2 修复了代数假命中 bug。

🔬 eBPF(1 篇)

在 BPF 字符串 kfunc 的扫描热路径上,作者用内核 word-at-a-time(寄存器内 SIMD/SWAR)技巧把逐字节扫描改为按 8 字节整字加载 + 位掩码并行判定,长串搜索作者自报最高提速 11.3x(bpf_strnstr 约 10x,未独立验证);但 Andrii Nakryiko 评审认为复杂度/收益比不值,作者同意保持现状、系列撤回未合入。

🔐 crypto(1 篇)

在 EIP93 等 crypto 硬件加速器默认关闭动态软件回退时,旧实现常驻注册回退代理导致禁用态热路径仍付一层阈值判断与间接派发开销;补丁将代理注册/注销与 per-device enabled 开关绑定、用 kref + cra_destroy 保留退役代直到旧 transform 释放,使默认关闭态新建 transform 直连硬件、代理开销归零(补丁未单独量化,系列数据显示代理在 4096B 大请求上约 +4.4% 周期,作者自报未独立验证)。

📚 lib(1 篇)

在 RAID5/6 写路径的 P 校验生成场景下,内核 xor_gen() 此前只能选 256 位 AVX、异或指令仅两输入,本补丁用 512 位 ZMM + vpternlogq 三输入异或 + 负索引循环把每字节指令数与依赖链压下来,使校验生成吞吐在 AMD Ryzen 9 9950X 上相对 AVX 提升 26%~43%(作者自报,未独立验证)。

🖥️ 虚拟化(1 篇)

该系列为 KVM/arm64 引入 FEAT_HACDBS 硬件加速脏页清理——把 VM 热迁移每轮的脏页清理从「O(脏页数) 逐页改 stage-2 页表 + 持 mmu_lock」降为「HDBSS 条目数组一次提交 + 硬件批量清 writable-dirty 位 + 轮询完成」,作者自报三个脏页 ioctl 运行时下降 70%~87%,显著缩短迁移每轮脏页扫描/清理开销。

ℹ️ 生成信息

数据来源:kernel-lore MCP lore_message/lore_eq 串行检索(freshness 2026-08-04)+ 本地内核 git 仓库
三周窗口:2026-07-14 ~ 2026-08-04(性能意图词粗筛 176 条候选 → 精排精选 14 篇)· 每篇经 analyzing-lkml-patches/analyzing-kernel-commits 深度分析 + checking-references 引用验证
由 reporting-daily-kernel 工作流生成 · 已排除 08-03 日报覆盖的 16 篇主题
⚠️ 免责声明

本站内容均由 AI 基于公开知识辅助生成,仅供学习参考,请勿直接引用作为依据。作者不对信息的准确性、完整性及适用性作保证,亦不对因使用本站内容产生的任何损失承担责任。