本期检索说明
先读取 content/collections/deep-radar 截至 2026-10-11 的全部原文链接,并按 URL、标题与实现机制去重。最近 24 小时内,Tokio 的共享注入队列缓存行隔离和 rustc 增量依赖图索引复用实验同时满足实测数据、源码证据、原理剖析与工程迁移价值四项要求,因此本期收录 2 篇。OpenJDK RISC-V CAS 围绕 sc.rl 与 RVWMO PPO rule 6 的汇编论证很扎实,但没有运行时 benchmark;Kotlin/Native late shadow stack 也尚无可量化结果,均未越过本栏目的数据红线。Zig 与 Linux 本周期没有找到三类证据同时齐备的新材料,不凑数。
两篇材料的状态不同。Tokio PR 已合并,数据来自 NVIDIA Grace、144 个 runtime worker 的定向基准;rustc PR 仍标为 perf experiment,虽然 instruction count 的改善覆盖面很大,但 bootstrap 回退 0.20%,部分 RSS 样本也回退。因此后者应读作“值得继续验证的编译器结构实验”,不能写成已确定的端到端加速。
| 主题 | 原始发布日期 | 一手来源与交叉验证 | 截稿状态 | 推荐强度 |
|---|---|---|---|---|
| Tokio 共享注入队列与 idle 状态的缓存行隔离 | 2026-10-11 04:06(中原标准时间) | Tokio PR #8622 / 完整源码 diff / remote_spawn benchmark 源码 / 6 组配对实测 |
已合并 | 强烈推荐,重点看 false sharing 的最小修复与并发度边界 |
| rustc 删除 previous-to-current dep-graph 索引映射 | 2026-10-11 10:43(中原标准时间) | Rust PR #164130 / 完整源码 diff / 官方 rustc-perf | 开放的性能实验 | 强烈推荐,重点看索引不变量怎样同时删除映射、边缓冲与递归收集 |
01 · Tokio:给全局注入队列与 idle 状态各自一条缓存线
原文与日期: bd103,2026-10-11 04:06(中原标准时间);Tokio PR #8622、完整源码 diff 与 remote_spawn benchmark 源码。PR 于 2026-10-11 20:33 合并。
为什么值得读: Tokio 的多线程调度器有两类全局热点:外部线程提交任务时访问共享 injection queue,worker 空闲、唤醒和 shutdown 时访问 idle 状态。它们原来只是 Shared 结构体里的相邻字段;即使线程逻辑上操作不同对象,硬件仍可能为了同一条 cache line 的所有权来回失效。这是典型的 false sharing:锁竞争没有变重,性能却被一致性流量吃掉。PR 的价值在于用最小 diff 隔离热点,并用不同生产者数量证明收益并非“并发越高越大”。
核心技术结论: 补丁没有改变队列算法或加锁协议,只把两个字段分别包装进 Tokio 内部的 CachePadded:
inject: CachePadded<InjectQueue<Arc<Handle>>>,
idle: CachePadded<Idle>,
inject: CachePadded::new(InjectQueue::new()),
idle: CachePadded::new(Idle::new(size)),这样 inject 和 idle 的高频写入不再与相邻调度器元数据共享缓存线。它是一种可以迁移到 runtime、线程池与高并发队列的诊断路径:先用硬件计数器或定向基准定位“独立字段、共同缓存线”,再以 padding 隔离,而不是先重写整个并发算法。代价同样明确:结构体占用和 cache footprint 增大,所以只适合确有跨核写热点的字段。
最有价值的实验、源码与 benchmark 细节: 官方基准运行在 NVIDIA Grace CPU,Tokio runtime 使用 144 个 worker。remote_spawn 由 runtime 外部的 std::thread 经 barrier 同步后提交总计 12,800 个空任务;计时只覆盖 rt.spawn 的提交阶段,任务 join 在计时结束后完成,因此主要测的是所有外部提交都要经过的共享 injection queue,而不是任务执行时间。
单一外部生产者的 6 组配对结果中,提交时间中位数从 17.51 ms 降到 11.71 ms,下降 33.1%;4 个生产者时改善 20.5%。到 16 个生产者时没有清晰收益,说明更高提交并发下队列同步或其他共享瓶颈已盖过相邻字段的 false sharing。补丁还运行了 6 个聚焦 injection queue 与 shutdown 的测试以及格式检查。这个“1 个生产者收益最大、16 个生产者趋近无差异”的边界,比只报一个最快数字更有迁移价值。
适合的工程师背景: 熟悉 Tokio runtime、无锁/低锁队列、CPU cache coherence,或正在排查线程池跨核伸缩异常的工程师。
预计阅读收益: 约 30–40 分钟;能学会把结构体字段布局、缓存行失效与远端任务提交基准对应起来,并知道何时 padding 有效、何时它只会增加内存占用。
02 · rustc:让绿色依赖节点沿用旧索引,删除跨会话映射和边缓冲
原文与日期: lqd,2026-10-11 10:43(中原标准时间);Rust PR #164130、完整源码 diff 与 官方 rustc-perf 结果。
为什么值得读: rustc 的增量编译会从上一会话读入 dep graph,再为当前会话的节点分配索引。旧设计需要维护 previous-to-current 映射;绿色节点递归确认可复用时,还要收集当前会话边并写入 worker-local buffer。这个 PR 把一个更强的不变量推到索引分配层:可复用的绿色节点直接保留 prev_index,新节点先填充旧会话没有占用的索引,再扩展空间。结果不是单点微调,而是让整套映射、递归边收集和缓冲生命周期一起消失。
核心技术结论: DepNodeColor 从携带当前索引的 Green(DepNodeIndex) 缩成无 payload 的 Green;绿色节点的当前索引可直接由旧索引恢复:
enum DepNodeColor {
Red,
Green,
}
// A green node keeps its previous-session slot.
let current_index = DepNodeIndex::from(prev_index);配套 diff 删除每个 worker 的 green_edge_buf: WorkerLocal<Cell<Vec<DepNodeIndex>>>,也不再在 try_mark_previous_green 的递归遍历中构造 EdgeFrame 来收集边。被提升为绿色的节点复用上一会话的序列化记录;只有保留 debug graph 时才读取旧 edge targets。新节点以 64 个为一批先消费旧图未占用的 slot,再从末尾扩展,避免与绿色节点索引冲突。可迁移经验是:当跨版本映射接近恒等映射时,先把恒等性变成分配器保证,往往能删除比哈希查找本身更大的一圈附属状态。
最有价值的实验、源码与 benchmark 细节: 官方 rustc-perf 的 instruction count 中,136 个 primary 改善样本平均 -2.8%,范围 -8.3% 到 -0.1%;3 个 primary 回退样本平均 +0.2%。合并 139 个 primary 样本后均值为 -2.7%。secondary 侧有 126 个改善样本,平均 -1.7%,以及 9 个平均 +0.3% 的回退样本。
其他指标给出了必要的反证边界。38 个显著 primary cycles 改善样本平均 -3.1%,没有 primary cycles 回退,但 secondary 有两个回退样本平均 +5.6%。primary max-RSS 整体 -0.9%,同时仍有 3 个样本回退 +2.8% 至 +3.5%,平均 +3.1%。bootstrap 从 488.596 增至 489.560 秒,回退 0.20%;artifact 从 407.26 降到 406.67 MiB,缩小 0.15%。所以目前最可靠的结论是“增量路径动态指令显著减少”,不是所有 wall-clock 与内存场景都已改善。
适合的工程师背景: 熟悉 rustc query/dep graph、增量编译、arena/indexed data structures,或正在维护需要跨快照映射的大型编译器与构建系统工程师。
预计阅读收益: 约 45–60 分钟;能看到如何用更强的索引分配不变量消除映射层,并学会用 instruction、cycles、RSS、bootstrap 和 artifact size 多维度审计结构性优化。
中国大陆 ToC 硬件价格观察
数据口径
窗口为 2026-09-13 至 2026-10-12,单位人民币,六类硬件固定同一 SKU。今天通过公开比价页的实时渲染结果复核到 CPU、GPU、主板、HDD、SSD 五类报价;DRAM 页面仍明确显示“暂无报价”,因此不新增点。重复价格作为真实采样保留,用来区分“已复核横盘”和“未取得数据”。SSD 继续只采用当前 2TB 规格全网比价,不混入跨容量聚合起价。
| 类别 | 10 月 12 日可复核价 | 30 日窗口内真实走势 | 建议 |
|---|---|---|---|
| CPU | Ryzen 7 9800X3D,京东 ¥2,609 | 9/14 ¥2,639 → 9/23 ¥2,579 → 10/1–8 ¥2,694–2,699 → 10/9–12 ¥2,609 | 可关注但不追价;回落后连续四日横盘,仍比窗口低点高 ¥30 |
| GPU | MSI RTX 5070 VENTUS 3X 12G,亚马逊中国 ¥4,464.34 | 9/13–10/12 多次实时复核均为 ¥4,464.34 | 刚需可比价后入手;单一渠道横盘不等于全市场无促销 |
| 主板 | ASUS TUF B850M-PLUS WIFI7,天猫 ¥1,169 | 9/13–10/11 ¥1,299 → 10/12 ¥1,169,单日下降 ¥130(10.0%) | 可入手;已出现窗口新低,下单前核对店铺、版本与售后 |
| DRAM | 暂无报价;最后可复核 9/9 ¥3,900 | 本窗口没有可比报价 | 观望;固定 SKU 缺价,不用其他容量、颗粒或时序替代 |
| HDD | IronWolf Pro 8TB ST8000NE001,i百联 ¥1,849 | 9/13–10/12 多次复核均为 ¥1,849 | 容量刚需可买;先核对型号、五年保修与数据恢复服务 |
| SSD | ZHITAI Ti600 2TB,京东 ¥1,739 | 9/23–10/11 ¥1,799 → 10/12 ¥1,739,下降 ¥60(3.3%) | 可入手但先核对结算价;2TB 可比口径已创窗口新低 |
价格来源: 9800X3D、MSI RTX 5070 VENTUS 3X、ASUS TUF B850M-PLUS WIFI7、Kingston FURY DDR5-6000 32GB、IronWolf Pro 8TB、ZHITAI Ti600 2TB。
判断依据
主板由 ¥1,299 降至 ¥1,169,实算下降 10.01%;Ti600 2TB 由 ¥1,799 降至 ¥1,739,下降 3.34%。两者都是固定 SKU、同一可比栏位的今天实时值,因此可以确认是本序列的新低,但单日变化不足以推断还会继续下跌。CPU、GPU 与 HDD 今日分别维持 ¥2,609、¥4,464.34、¥1,849;CPU 已从国庆期间的 ¥2,699 档回落,但仍未触及 9 月 23 日的 ¥2,579。DRAM 固定 SKU 继续缺价,走势图保留真实空白尾段。本期建议只依据可核验序列,不用未经核实的新品或产能消息补充方向判断。
本期结论
两篇材料都在处理“逻辑上无关、物理上却被绑定”的额外成本。Tokio 用缓存行隔离解除相邻字段在一致性协议上的绑定;rustc 用索引恒等不变量解除前后会话之间的显式映射,再顺带删除边收集缓冲。共同的方法不是盲目增加抽象,而是先证明一条更窄、更稳定的约束,再删掉围绕旧假设积累的协调状态。迁移到自己的系统时,也应同时寻找收益消失的并发边界和负向指标,而不是只保留最好看的中位数。