Cloudflare 优化 DNS 缓存节省约 100TB 内存
Cloudflare 官方博客介绍 Big Pineapple(支撑 1.1.1.1、Gateway DNS、DNS Firewall、AS112 等)DNS 缓存的 Rust 内存布局优化。全网任意时刻约有超过 2500 亿条缓存条目;在该规模下,每条多占 1 字节就会多耗约 250 GB 内存。
团队对缓存条目做了五轮连续的内存布局改动,单条 footprint 下降超过 50%(文中约 56%),全网释放约 100 TB 内存,约等于 130 台 Gen 13 服务器的内存容量。性能方面,插入吞吐提升约 43%,查询延迟下降约 19%。
主要手段包括:缓存写入后不再修改,因此将 Vec/String 换为 Box<[T]>/Box<str>,去掉 capacity 字段及多余预留;把 answer / authority / additional 三段合并为一条列表并用 u16 偏移划分;以及围绕 DNS record 数据的 enum 尺寸与字段布局等进一步压缩。生产 rollout 从 2026-05-18 开始,2026-07-06 覆盖全部相关服务,驻留内存呈阶梯下降。
原文链接:https://blog.cloudflare.com/dns-cache-memory-optimization-1111/
编写更快 Tokio 应用的若干原则
作者 Russell(dial9-rs)整理 RustConf Unconf 上关于调试与压测 async 应用的讨论,写成一份可继续迭代的实践文档。文中强调:先确认是否真有问题,并从真实业务指标反推;Tokio 侧较有用的信号包括 schedule latency histogram。
在延迟与吞吐之间,作者给出一对互补原则:为低延迟做拆分与公平(例如对 pipeline 连接在连续立即可读后适当 yield,避免一次 poll 吃完整条流水线);为吞吐做批处理(例如不要把大量细碎 tokio::fs / spawn_blocking 各自抛进阻塞池,而应合并成更大的阻塞段,必要时用专用 OS 线程)。文中还提醒关注全局阻塞池与全局任务队列的争用,以及 worker 上持有高竞争 mutex 的风险。仓库欢迎 PR。
原文链接:https://dial9-rs.github.io/blog/principles-for-fast-tokio-applications/
Cargo trim-paths(RFC 3127)征集测试
Cargo 跟踪 issue 征集对 trim-paths(RFC 3127)的测试反馈。该能力通过 profile 设置控制产物中路径的清洗方式,文档见 nightly Cargo unstable 参考;rustc 侧跟踪 issue 为 rust-lang/rust#111540。
近期工作包括更明确、可逆的 remap 规则,以及为最终产物生成 unremap 伴随文件(.trim-paths.jsonl),方便还原调试信息。仍在讨论 workspace 成员路径在裁剪后保持相对路径(便于本机调试器零配置)还是加虚拟前缀(便于符号化流水线统一处理)等取舍,希望社区在实际工程上试用并反馈。
原文链接:https://github.com/rust-lang/cargo/issues/12137
mew:终端里的项目信息卡片
mew 是用 Rust 写的小型终端工具,用于一眼查看当前项目与系统信息。在 git 仓库内会显示分支与 git 状态、项目语言与工具链、代码行数与覆盖率、CPU / 内存 / 磁盘与 uptime,以及日期时间与时区;在仓库外则退化为系统信息面板。
支持 shell hook,可在进入 git worktree 时自动展示;无常驻 daemon,直接运行即可。安装:cargo install mew-cli,AUR 有 mew-bin,GitHub Releases 提供预编译二进制。仓库:https://github.com/programmersd21/mew 。
原文链接:https://github.com/programmersd21/mew
From Rust中文社区 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论