把每次堆分配归因到 span 的 Rust 采样分析器
来源:github.com — 2026-10
📋 概述
Cloudflare 开源的 Culpert 是一个 Rust 服务的采样式堆分配分析器:它以全局分配器包装器把每次采样到的分配归因到它所发生的那段 span 上,导出 pprof 格式的 profile,让现成的 pprof、Speedscope、Pyroscope、Polar Signals 等工具继续可用,并附带 CLI 提供无偏的按 span 报告与供 CI 使用的 diff 子命令。它已在上线前于 Cloudflare 捕获数起真实的分配回归,包括一处内存泄漏。
🔑 核心要点
- 用全局分配器包装器把每次采样分配归因到所在 span
- 导出 pprof 格式,兼容 pprof、Speedscope、Pyroscope、Polar Signals
- 采用几何采样加 Bernstein 校正,在低开销下给出无偏估计
- 三条接入路径:foundations、tracing crate、或自带 span_fn 宏
- CLI 提供 diff 子命令,在 CI 与 PR 流程中拦截分配回归
- 已在上线前捕获多起真实分配回归,包括一处内存泄漏
💡 金句
Culpert 已经在上线前于 Cloudflare 捕获了数起真实的分配回归,其中包括一处内存泄漏。
👍 0
👎 0
← 返回 Lobsters 首页