Netstack3:Fuchsia 的纯 Rust 网络栈
Netstack3 是 Fuchsia 的纯 Rust 网络栈,代码分布在 63 个 crate 中,总量约 19.2 万行。
文章介绍了团队如何把协议状态、不变量和模块边界编码到类型和 API 中。根据文中的数据,接近一年的 dogfooding 期间团队发现 3 个 bug;上线后,相比旧版 Netstack2,崩溃率下降一个数量级,内存占用也更低。
原文链接:https://joshlf.com/posts/safety-unsafe-world/
Kata Containers 4.0:默认使用 Rust 运行时
Kata Containers 4.0 是 Kata Containers 的一个版本,将 Rust 运行时设为默认实现,原有 Go 运行时进入弃用流程,计划保留到 5.0。
这套默认运行时支持 x86_64、aarch64 和 s390x,并继续支持 QEMU、Cloud Hypervisor 和 Rust 编写的 Dragonball。版本还加入 block device、hotplug、virtio-mem、多队列网络、VFIO coldplug 和 Kubernetes 资源核算等能力。
原文链接:https://opensourcewatch.beehiiv.com/p/kata-containers-4-0-is-less-a-new-feature-release-than-a-platform-reset-to-rust
Tokio、Smol 和 Glommio:90 组 HTTP 负载调度模型对比
这篇基准文章比较了 Tokio、Smol 和 Glommio 在 90 组 HTTP/2 负载下的调度表现。
测试包含 create_order、index_page 和 read_order 三类请求,分别对应 I/O 密集、CPU 密集和混合负载。作者组合线程数、流量分布、连接规模和负载结构,对比 Tokio 的 work-stealing、多线程共享端口的 executor-per-thread,以及 Smol、Glommio 的每线程本地执行器方案。
测试结果显示,CPU 负载更重、流量更均匀时,executor-per-thread 的尾延迟更稳定;I/O 比例更高、任务分布更不均衡时,work-stealing 更容易发挥调度优势。
原文链接:https://c410-f3r.github.io/thoughts/work-stealing-vs-executor-per-thread-evaluating-different-http-server-workloads-with-tokio-smol-and-glommio/
Rust arena:从 Vec 实现扩展到 UnsafeCell 和 raw buffer
这篇文章是一份从基础实现开始讲解 Rust arena allocator 的教程,内容从 Vec<T> 版本逐步扩展到更底层的内存组织方式。
文章讨论了多个实现问题:Vec<String> 只能将字符串 header 放进 arena,底层数据仍在堆上;borrow checker 不允许轻易获得多个不同槽位的 &mut;要支持不同类型、多个可变引用和正确的 drop 语义,还需要维护 raw buffer、对齐、cursor、slot 元数据,以及由 UnsafeCell 提供的内部可变性。
原文链接:https://rushter.com/blog/rust-memory-arenas/
评论区
写评论还没有评论