本期检索说明

先读取 content/collections/deep-radar 中截至 2026-08-29 的原文链接,并按 URL 与标题语义复查。最近 24 小时内只有 Rust DenseBitSet 重构同时具备源码、rustc-perf 数据、原理解释和工程迁移价值;为达到两篇,检索窗口回溯至 2026-08-23,补充 8 月 27 日发布、8 月 25 日提交 v11 补丁的 Linux steal governor。

本期最终收录 1 篇 Linux、1 篇 Rust。Java/JVM、Kotlin 与 Zig 在窗口内没有达到三项硬门槛的新增材料;Rust 浮点转整数优化虽给出了新旧汇编,但没有提供可复核的定量 benchmark,因此只列入文末延伸阅读。

主题 原始发布日期 一手来源与交叉验证 截稿状态 推荐强度
steal time 驱动的 vCPU 动态收缩 LWN 2026-08-27;v11 补丁 2026-08-25 LWN / LKML 12-patch v11 / PowerPC、x86、s390 实测 提议进入 Linux 7.4 必读
DenseBitSet 固定长度存储重构 2026-08-29 rustc PR / 源码 diff / rustc-perf Open,未合入 推荐

01 · Steal governor:少向宿主机索取 vCPU,反而让数据库吞吐提高 41%–53%

原文与日期: Jonathan Corbet,2026-08-27;Using steal time to moderate CPU demands。实现与完整数据见 Shrikanth Hegde 于 2026-08-25 发布的 PATCH v11 00/12

为什么值得读: 虚拟机的 vCPU 越多并不必然越快。物理 CPU 池过量分配后,hypervisor 会频繁抢占 vCPU;如果被抢占者正持锁、关闭中断或处于关键区,损失不仅是那段 CPU 时间,还包括其他线程等待、TLB/cache 冷却和宿主调度开销。这组补丁把 guest 已经能观测到的 steal time 变成闭环反馈信号,让虚拟机主动减少竞争的 vCPU 数量。

核心技术结论: 12 个补丁把机制与策略分为两层。调度器新增 cpu_preferred_mask,并保证它始终是 cpu_active_mask 的子集:唤醒路径优先选择 preferred CPU,tick 发现任务运行在非 preferred CPU 时用 stopper thread 推走任务,load balance 也只在 preferred 集合内拉取任务。独立的 steal_governor 驱动每隔一段时间采样全机 steal ratio;超过默认 5% 就减少一个 preferred core,低于 2% 则增加一个,至少保留一核,并且始终尊重用户显式 affinity。

TEXT
steal > high_threshold  -> preferred_cpus -= 1
steal < low_threshold   -> preferred_cpus += 1
otherwise               -> keep current footprint

这比 CPU hotplug 或重写 cpuset 轻得多:它不重建拓扑,也不破坏用户态亲和性。策略模块可以按需装载,推荐采样间隔为 500–5000ms;没有 steal 时,preferred 集合会重新扩张。

最有价值的实验、源码与 benchmark 细节: PowerPC 测试让两台虚拟机共享 50 个 SMT8 物理核心:VM1 配置 60VP/30EC,VM2 配置 30VP/20EC。高压 hackbench 的 20、40 groups elapsed time 分别从 11.39 降到 7.09、从 20.32 降到 11.31,改善 37.75% 和 44.34%;kernbench 从 231s 降到 199s,改善 14%。更接近真实数据库的 Daytrader/DB2 代理负载,在 30% 与 60% load 下从 1x 提升到 1.53x1.41x。没有 steal time 时,启用与禁用 governor 的吞吐相同,说明空闲路径的额外成本很小。

x86 Cascade Lake 的多 VM 实验覆盖 hackbench、pgbench、sysbench:高争用组合最高改善 90.73% ± 9.97%,16 台 VM、每台 4 vCPU 的 pgbench 改善 31.77% ± 2.44%;但低争用或纯 CPU 组合也出现 -1.16%-3.22% 的回退。s390 z16 上最高点为 pgbench 73.50% ± 35.91%,16 台 VM、每台 4 vCPU 的 pgbench 与 hackbench 分别为 61.30% ± 4.09%54.11% ± 4.38%,同时也保留约 -0.79%-2.73% 的负结果。数据说明该机制适合锁敏感、过量配置的共享 CPU 池,不是通用的 CPU benchmark 加速器。

适合的工程师背景: 熟悉 CFS、vCPU steal time、KVM/PowerVM、数据库调度或大规模虚拟化超分,并需要在吞吐与单 VM 可用 CPU 数之间做动态折中的内核和平台工程师。

预计阅读收益: 约 45–60 分钟;可以获得一个完整的反馈控制范例:选择宿主争用的 guest 可见信号、把调度机制与策略解耦、规定上下阈值与最小资源边界,并用多架构数据识别适用区间和负收益区间。

02 · DenseBitSet:固定长度集合不需要 Vec 的 capacity 字段

原文与日期: Zalathar,2026-08-29;rust-lang/rust PR #161957,性能结果见 rustc-perf comparison

为什么值得读: DenseBitSet 的 domain size 在构造后固定,却用 Vec<Word> 保存 words。64 位平台上的 Vec 携带 pointer、length、capacity 三个机器字;capacity 对固定长度集合永远无用,但当编译器把大量 bitset 放进 matrix、IndexVec 或 MIR 数据流结构时,这个额外机器字会反复占据 cache。补丁没有追求复杂压缩,而是先让所有权容器准确表达“固定长度”。

核心技术结论: DenseBitSet.wordsVec<Word> 改为 Box<[Word]>,对象内联大小由 32B 降到 24B。原来 GrowableBitSet 直接包装 DenseBitSet,迫使固定与可增长两种语义共享同一存储;补丁把它们拆开,前者使用 boxed slice,后者保留 Vecensure() 扩容。确实需要增大 domain 的少量调用点改用 consuming enlarge(self, new_domain_size),显式完成 Box -> Vec -> resize -> Box,而不是让每个固定 bitset 永久携带 capacity。

Rust
pub struct DenseBitSet<T> {
    domain_size: usize,
    words: Box<[Word]>,
    marker: PhantomData<T>,
}

pub struct GrowableBitSet<T> {
    domain_size: usize,
    words: Vec<Word>,
    marker: PhantomData<T>,
}

最有价值的实验与源码细节: rustc-perf 最可靠的 instructions:u 指标在 4 个 primary benchmark 上平均改善 0.5%,范围 0.2%–0.8%,没有指令数回退;10 个 secondary benchmark 平均改善 0.2%。最终产物从 402.85MiB 降到 402.83MiB,约 -0.01%

负指标同样值得保留:一个 primary 样本 Max RSS 回退 2.6%,一个 primary cycles 样本回退 2.3%,bootstrap 从 474.378s 增至 479.269s,约 +1.03%。这说明结构体缩小带来的 cache/指令收益具有统计信号,但不能直接外推为整个编译器峰值内存与总构建时间同步下降。讨论中有人提出只存 (pointer, domain_size)、把对象压到 16B,但这需要手工推导 allocation length 和更多 unsafe;当前补丁选择停在 24B 的安全实现,是很好的风险收益边界。

源码改动还新增 contains_loose():越过 domain 的值直接返回 false,而严格 contains() 保留断言;coroutine storage liveness 和 SROA 因此可以继续使用固定 bitset,不必为了偶发的 domain 差异退回可增长容器。

适合的工程师背景: 维护编译器数据流分析、ECS、图算法、bitmap index,或需要在 Vec<T>Box<[T]>、small-vector 与内联数组之间选择物理布局的 Rust/C++ 基础设施工程师。

预计阅读收益: 约 25–35 分钟;可以学会先从“容器是否真的需要增长”审计无效元数据,再把固定/可变语义拆成不同类型,并用指令、RSS、cycles 与端到端时间共同验证,避免只用 size_of 推断系统性能。

中国大陆 ToC 硬件价格观察

数据口径

窗口为 2026-07 下旬至 2026-08-30,单位人民币。周末截稿前没有取得六个代表 SKU 的新同口径公开成交记录,因此沿用最近可复核的 8 月 25–26 日快照;没有把网页抓取日期冒充变价日期,也没有插值补齐逐日行情。下图六个面板分别对应 CPU、GPU、主板、DRAM、HDD、SSD。

中国大陆六类 PC 硬件近 30 天价格快照

类别 代表样本与最近可核验价 近 30 天走势 建议
CPU Ryzen 7 9800X3D,8/26 约 ¥3,175 8/10 促销 ¥2,283,8/21 ¥2,597,随后明显回弹 观望;9850X3D 同日约 ¥3,295,仅贵约 ¥120,旧款当前缺少价格优势
GPU 万丽 RTX 5070 OC 12GB,8/25 约 ¥6,899 窗口低点约 ¥5,249,后段明显走高 观望;7 月底涨价后国内渠道仍处高位,非生产力刚需不追高 OC 型号
主板 B850M 同档样本,8/25 约 ¥1,298 原跟踪样本小幅回落;8/26 其他品牌出现 ¥799 促销 可按需入手;跨品牌价差大于时间趋势,优先比较供电、M.2、网卡与售后
DRAM Kingston Fury DDR5-6000 32GB,8/25 约 ¥3,900 8/7 约 ¥3,870,高位横盘 刚需小量买,不囤;上游与渠道报价尚未形成连续下行
HDD IronWolf Pro 8TB,8/25 约 ¥1,540.7 可核验快照持平 容量告警时分批买;不要把一次促销当成供给趋势反转
SSD ZHITAI Ti600 2TB,8/25 约 ¥749 7/26 至最近快照持平 刚需可买但不囤;NAND 现货参考价仍缺少持续回落证据

零售价格来源: 9800X3D 与 9850X3D 国内同日价差9800X3D 历史价格摘要RTX 5070 商品百科B850M 商品百科8 月 26 日 B850M 市场样本Kingston Fury 32GBIronWolf Pro 8TBZHITAI Ti600 2TB

判断依据

经济日报 8 月 14 日的华强北走访记录了 7 月 24 日起显卡快速拉涨、7 月 27 日后高位趋稳:RTX 5060 从约 ¥2,300–2,500 升至约 ¥3,000,RTX 5070 Ti 从约 ¥6,000 升至 ¥8,000 以上。这与跟踪样本的后段抬升一致,因此 GPU 仍给出观望建议,而不是把“涨幅收窄”解释为降价。

存储侧 8 月 28 日 闪存市场现货报价 中多种 TLC/QLC NAND 与同周 DDR5 UDIMM 渠道参考价持平。渠道美元价不进入中国 ToC 折线,但它尚未提供持续下跌的供应侧信号。CPU 建议仍基于同平台新旧型号的即时价差;主板不直接消耗显存或 NAND,跨品牌促销差异已经大于短期时间趋势,适合按功能购买。

其它你可能关心的

本期结论

两篇材料处理的是不同尺度上的同一问题:不要长期保留并不需要的资源。虚拟机在宿主争用时继续占用所有 vCPU,会放大抢占与锁等待;固定长度 bitset 永久携带 Vec capacity,会在大量实例中浪费对象空间和 cache。前者用 steal time 建反馈回路,后者用类型拆分表达固定与可增长语义;两者都用负结果限定了适用边界。