本期检索说明
先读取 content/collections/deep-radar 中截至 2026-08-28 的全部原文链接,并按 URL 与标题语义复查。检索优先覆盖 2026-08-28 至 29 日,再回溯至 8 月 22 日;最终只收录两篇同时具备定量实测、源码级证据、原理闭环和工程迁移价值的材料,且均未在历史报告中出现。
本期主动从连续几期的 JVM/Rust 编译器主题转向 Linux I/O。Kotlin、Zig 本窗口内没有达到三项硬门槛的新增材料;OpenJDK C2 nullable receiver 与 Tokio task dump 的修复虽有源码和回归测试,但缺少足够的定量性能证据,因此不进入精选。
| 主题 | 原始发布日期 | 一手来源与交叉验证 | 状态 | 推荐强度 |
|---|---|---|---|---|
| KIO 本地传输、目录枚举与深层删除 | 2026-08-27 | KDE 工程师博客 / KIO commits / cycles 与 heaptrack | KIO 6.29 实测,含 6.30 预览 | 必读 |
Linux rnull 安全 Rust 块设备驱动 |
2026-08-29(北京时间) | LWN / Rust for Linux / 83-patch v2 | 功能对等补丁评审中 | 必读 |
01 · KIO:一次精确 reserve,如何在 50,000 个条目上制造约 600 万次复制
原文与日期: Méven Car,2026-08-27;Dolphin 26.08 and KIO, part two: what got faster and smaller。
为什么值得读: 这不是“新版本更快”的结果展示,而是一份可复用的性能调查范本:同一台机器上让 KIO 6.25 与 6.29 逐轮交错运行,固定 CPU 核心,再用 cycles profile 和 heaptrack 分别追踪时间与分配。文章最终找到的瓶颈横跨 IPC、数据布局、文件系统探测、容器增长策略和路径解析,而且每项都能回到具体源码改动。
核心技术结论: 本地 file worker 已经与调用方处于同一进程,却仍走 QLocalSocket;改用内存队列并转移 byte array 所有权后,读路径可以零拷贝。批量拷贝时,每个目标文件都调用一次 KFileSystemType::fileSystemType(),会让 libmount 反复解析整张 mount table;把文件系统类型提升为目标目录的不变量后,一次计算即可复用。目录枚举的超线性退化则来自 insertSortedItems() 每批都按精确大小 QList::reserve():容器每收到一批数据就重新分配并复制此前全部条目,删除这次“看似谨慎”的预留反而恢复几何增长。
最有价值的实验、源码与 benchmark 细节: 测试机为 Core i7-1365U、30GB RAM、Linux 7.1.4、ext4、GCC 16.2.1 与 Qt 6.11.1;两个版本固定在相同两颗核心上,逐轮交错运行并取多轮最佳值。主机有 39 个挂载点时,一次 libmount 文件系统类型探测约 57µs,且成本随挂载点数量增长。
UDSEntry 原先把字符串和数字塞进同一份共享结构;拆成两个按实际尺寸分配的 vector 后,本地 stat 条目从 528B 降到 400B。枚举 200,000 个文件时,对应占用从约 105.6MB 降至 80MB,节省 25.6MB;本地条目的 wire-load 从 530ns 降至 488ns。KIO 6.29 相比 6.25,复制大量小文件超过 2 倍,枚举 5,000 个文件约快 9%、50,000 个约快 15%,常驻内存约少 14%。
最值得记住的是 6.30 预览:50,000 条目的枚举耗时 1,233ms,而 5,000 条目仅 36ms,输入放大 10 倍、耗时却放大 34 倍。cycles profile 显示 42% 时间落在 KFileItem 复制构造/析构;heaptrack 还原出 239 次 reserve 和约 600 万次复制。删除精确预留、交给容器几何扩容后,50,000 条目降至 531ms,超过 2 倍改善。因为复制构造只增加引用计数,单看 allocation count 不会暴露它,这正说明 cycles 与 heap profile 不能互相替代。
深层删除也提供了很好的系统调用证据:使用 openat/unlinkat 避免每次解析完整路径后,15,000 个 tmpfs 文件的 KIO 6.30 删除时间保持在 rm -rf 的约三分之一差距内;旧版从 10 层加深到 800 层时会慢约 4 倍。相同工作若把一个目录整体交给 KIO,而不是传入 5,000 个独立路径,也能快约 5 倍。
适合的工程师背景: 维护文件管理器、同步/备份工具、目录索引、批处理容器或进程内消息通道,并熟悉 Linux I/O、Qt 容器或性能剖析工具的工程师。
预计阅读收益: 约 35–50 分钟;可以直接迁移四条检查路径:进程内 IPC 是否仍在序列化、批次间不变量是否被重复探测、精确 reserve 是否破坏几何增长、路径深度是否让完整路径解析进入热循环。
02 · rnull:用 83 个补丁检验安全 Rust 能否覆盖 Linux null_blk
原文与日期: Andreas Hindborg 补丁系列,由 LWN 于 2026-08-28 18:26 UTC 发布深度分析,北京时间为 2026-08-29;The “rnull” Rust block driver。实现与实验可交叉复核 83-patch v2 原帖 和 Rust for Linux 性能页面。
为什么值得读: null_blk 以最少工作接收并完成块请求,是测量 block layer 与驱动框架自身开销的理想基线。rnull 的价值不只是“把 C 改写为 Rust”,而是用功能对等的驱动检验三件事:unsafe 能否被压缩到内核 C API 包装层,blk-mq 的请求所有权与并发约束能否进入类型系统,以及安全抽象会不会付出可观测的 IOPS 代价。
核心技术结论: 主线中的最小 rnull 只覆盖基础路径;83 个补丁把请求私有数据、hrtimer completion、bio、内存后端、多硬件队列、NUMA、discard、坏块、partial I/O、volatile cache、带宽限制、shared tags、queue depth、zoned block、polling、FUA、批量 queue_rqs、超时与 fault injection 等能力逐项补到 null_blk 对等。驱动主体保持 safe Rust,原始指针、生命周期桥接和 C ABI 不变量集中在块层抽象里;例如 request 与 hardware-context 数据分别通过 Send、Send + Sync 约束表达跨线程边界,而不是依赖驱动作者在每条路径中手工维持注释约定。
最有价值的实验、源码与 benchmark 细节: 补丁不是小型演示:rnull.rs 约 1,198 行,zoned 实现约 696 行,configfs 改动约 605 行,内存后端约 326 行。v2 的修订记录本身就是边界条件清单,包括修正 transfer length 的位移方向、重新取得锁后重试 preload、封闭 configfs power check 的 TOCTOU、用 NumaNode 代替裸 i32、补齐 Send/Sync bounds,以及修复 zoned emulation 在 RCU 路径中持 mutex 的问题。
性能比较使用 Ryzen 5 7600、32GB DDR5-4800 单通道、NixOS 24.11 与 Samsung 990 Pro 1TB;每个配置采集 40 个样本,以 (mean_iops_rust - mean_iops_c) / mean_iops_c 计算相对差异,并用 t 分布给出 P95 置信区间。项目还明确记录早期分布不服从正态、Linux 6.14-rc5 上观察到该问题消失但仍继续监测,因此图中的点估计不会被包装成无误差的“Rust 更快/更慢”结论。另一项很有工程意义的统计是:对 C null_blk 历史修复分类后,41% 属于内存安全问题;这为“把 unsafe 收口到公共抽象”提供了真实维护成本基线。
这里最可迁移的不是某个单次 IOPS 胜负,而是实验设计:同一硬件、同一工作负载、C/Rust 实现成对比较,多次采样并公开置信区间;同时把功能对等、抽象层代码量和历史缺陷类型纳入评估,避免只比较一个最小 happy path。
适合的工程师背景: 熟悉 Linux block layer、blk-mq、Rust for Linux、内核 FFI,或正在为高并发 C API 设计安全语言封装与所有权模型的系统工程师。
预计阅读收益: 约 45–60 分钟;读完可以获得一份从功能矩阵、unsafe 边界、并发 trait bound 到统计基准的完整迁移审查框架,而不只是 Rust 语法层面的驱动示例。
中国大陆 ToC 硬件价格观察
数据口径
窗口为 2026-07 下旬至 2026-08-29,单位人民币。8 月 29 日截稿前仍未取得六个代表 SKU 的新同口径公开成交记录,因此下图沿用最近可复核的 8 月 25–26 日中国大陆 ToC 快照;没有把抓取日期冒充变价日期,也没有对缺失日期插值。8 月 28 日新增的存储现货与渠道数据只用于判断供需方向,不混入零售 SKU 折线。
| 类别 | 代表样本与最近可核验价 | 近 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,后段明显走高 | 观望;非生产力刚需不追高 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,高位横盘 | 刚需小量买,不囤;8/28 渠道报价仍横盘,没有出现明确回落信号 |
| HDD | IronWolf Pro 8TB,8/25 约 ¥1,540.7 | 可核验快照持平 | 容量告警时分批买;企业容量需求与长单仍支撑供给,等待短期大跌胜率不高 |
| SSD | ZHITAI Ti600 2TB,8/25 约 ¥749 | 7/26 至最近快照持平 | 刚需可买但不囤;8/28 NAND 现货参考价仍持平,尚无供给周期反转证据 |
零售价格来源: 9800X3D 与 9850X3D 国内同日价差、9800X3D 历史价格摘要、RTX 5070 商品百科、B850M 商品百科、8 月 26 日 B850M 市场样本、Kingston Fury 32GB、IronWolf Pro 8TB、ZHITAI Ti600 2TB。
判断依据
8 月 28 日 闪存市场现货报价 中,1Tb QLC、1Tb TLC、512Gb TLC 与 256Gb TLC 均较上一报价持平;同周 DDR5 UDIMM 与 PCIe 4.0 SSD 渠道参考价也未变化。它们不是中国 ToC 成交价,因此不进入折线,但说明上游暂时没有足以支持“继续下跌”的新证据。证券时报对本轮存储与整机供应的梳理则指出,AI 服务器对内存的消耗显著高于传统服务器,产能转移同时影响 CPU、GPU 和消费存储供应。结合零售样本仍处高位,本期延续“急用小量买、非刚需观望、不囤货”的判断。
主板不直接消耗显存或 NAND 颗粒,同芯片组跨品牌促销差异已经大于时间趋势,适合按接口与售后选择。CPU 则应比较同平台新旧型号的即时价差;当 9800X3D 与 9850X3D 只差约 ¥120 时,不宜只根据旧型号一次促销低点决策。
其它你可能关心的
- OpenJDK C2:nullable receiver 触发 post-parse devirtualization 无限循环
- Tokio:task dump 与 tracing 同时借用 thread-local buffer 导致运行时 panic
- Generational Shenandoah:用 index affiliation 缩短 remset 扫描热路径
本期结论
两篇材料共同说明,系统性能与安全边界都不能靠抽象名称判断。KIO 的共享数据、reserve 和 IPC API 表面合理,却在真实批量工作负载中制造复制、解析与路径遍历;rnull 则必须把功能补到 C 驱动对等、把 unsafe 边界写进公共抽象,并用成对多次采样才能讨论“零成本”。可迁移的方法是先建立等价工作量与可观测指标,再用源码和 profile 找到成本究竟落在哪一层。