【Rust日报】2026-08-31 RamShared 把空闲 VRAM 做成块设备
内容提要
本文介绍了四个Rust开源项目:RamShared v2将空闲GPU显存用作Linux块设备,实现高速存储;Cratera用Firecracker microVM隔离不可信代码,支持30种语言;quantile-sketch提供无锁并发DDSketch,提升多线程分位数统计性能;sshconfig-lint检查OpenSSH配置错误,支持CLI、LSP和CI集成。
延伸解读
RamShared 的架构演进与性能权衡
RamShared v2 从简单的 VRAM 块设备演进为四层内存级联(Host RAM、ZRAM、GPU VRAM、SSD),并提交了 3 个补丁到 linux-block 子系统。这种设计在追求高速的同时,也引入了复杂性:例如高压力回收场景下使用 SHA-256 校验来保证数据一致性,但这也可能带来额外的计算开销。用户需要权衡性能与可靠性,尤其是在长时间高负载运行时。
Cratera 的隔离模型与适用场景
Cratera 采用 Firecracker microVM 而非传统容器沙箱,通过只读 rootfs、tmpfs 可写路径和单次任务销毁 VM 来强化隔离。冷启动 35–50 ms 的性能使其适合在线判题等场景,但 microVM 的启动开销仍高于普通进程,且不支持虚拟网卡,因此不适合需要网络访问的任务。其 TOML recipe 声明语言的方式降低了添加新语言的成本。
quantile-sketch 的并发优化与限制
quantile-sketch 通过无锁设计(atomic increment)和惰性分配 bucket 块,实现了多线程下的高吞吐分位数统计,基准测试显示比锁后共享快 4–60 倍。但 DDSketch 的误差保证仅在配置的值域内有效,且内存占用与样本数无关,但可能随值域增大而增加。使用时需根据实际数据分布合理配置参数。
sshconfig-lint 的集成价值与注意事项
sshconfig-lint 将规则引擎统一到 CLI、LSP 和 CI,支持多文件检查和 Include 环检测,有助于在编辑和提交阶段发现配置错误。但需注意,它仅检查语义错误,不保证配置的绝对安全;且无遥测,浏览器 playground 在本地执行,适合对隐私敏感的用户。
Q&A
RamShared v2 是什么?它如何利用 GPU 显存?
RamShared v2 是一个 Rust 项目,它将空闲的 NVIDIA GPU VRAM 用作 Linux/WSL2 上的高速块存储。它通过 RAII 封装 cuMemHostAlloc 实现 page-locked DMA,并基于 ublk-rs / io_uring 构建用户空间块驱动,支持多层内存回退(Host RAM、ZRAM LZ4、GPU VRAM、SSD writeback)。
RamShared v2 的性能数据如何?
RamShared v2 的 Host→Device 传输速度约 8.74 GiB/s,Device→Host 约 6.38 GiB/s;4KB O_DIRECT 读中位延迟约 231 µs。在 9,160 MB、40 周期饱和测试中 bit-exact 匹配,且无 kernel panic。
Cratera 是什么?它如何隔离不可信代码?
Cratera 是一个用 Rust 编写的代码执行/判题引擎,使用 Firecracker microVM(KVM)来隔离不可信代码,替代共享内核的 Docker/isolate 沙箱。它通过只读 rootfs、tmpfs 可写路径、单次任务后销毁 VM、无虚拟网卡、Jailer 降权、chroot 和 cgroups v2 等机制增强安全性。
Cratera 支持哪些语言?冷启动时间是多少?
Cratera 支持 30 种语言,语言以 TOML recipe 声明。冷启动约 35–50 ms,snapshot restore 约 5 ms。
quantile-sketch 是什么?它解决了什么问题?
quantile-sketch 是一个 Rust 库,提供无锁并发的 DDSketch 实现(ConcurrentDDSketch),用于多线程共享的相对误差分位数统计。它解决了现有实现多为单写者可变结构,共享时需加锁的问题,在高吞吐场景下性能提升约 4–60 倍。
sshconfig-lint 能检查哪些 OpenSSH 配置错误?
sshconfig-lint 可以检查 OpenSSH client 配置中的语义错误,包括重复 Host、失效 IdentityFile 路径、不安全选项、弱算法、wildcard 顺序以及 Include 链环。
sshconfig-lint v0.5 支持哪些集成方式?
sshconfig-lint v0.5 支持 CLI、LSP(供 VS Code 扩展使用)、Pre-Commit hook 和 GitHub Action,并支持多文件检查、嵌套 Include 解析与环检测、JSON / GitHub annotations / SARIF 输出,以及 Linux/macOS/Windows 校验二进制。