12 个版本
0.5.7 | 2023 年 8 月 4 日 |
---|---|
0.5.6 | 2023 年 5 月 19 日 |
0.5.5 | 2023 年 4 月 27 日 |
0.5.3 | 2022 年 6 月 27 日 |
0.1.0 |
|
#24 in 性能分析
每月下载 133,377 次
在 9 个 crates(8 个直接) 中使用
145KB
3K SLoC
Pyroscope 性能分析器
Pyroscope Rust 性能分析器。分析您的 Rust 应用程序。
您可能正在寻找
目录
快速开始
将其添加到您的 Cargo.toml
[dependencies]
pyroscope = "0.5.4"
pyroscope_pprofrs = "0.2"
包含 Pyroscope 和 pprof-rs 依赖项
use pyroscope::PyroscopeAgent;
use pyroscope_pprofrs::{pprof_backend, PprofConfig};
配置 Pyroscope 代理
let agent =
PyroscopeAgent::builder("https://127.0.0.1:4040", "myapp-profile")
.backend(pprof_backend(PprofConfig::new().sample_rate(100)))
.build()?;
分析您的代码
let agent_running = agent.start()?;
// Computation to profile
let agent_ready = agent_running.stop()?;
agent_ready.shutdown();
Pyroscope 服务器
Pyroscope 代理将分析数据发送到 Pyroscope 服务器。您需要运行一个 Pyroscope 服务器来消费和可视化这些数据。目前无法将数据转发到另一个端点。
多线程
Pyroscope 代理和 pprof-rs 后端 可以分析并报告来自多线程程序的数据。然而,pprof-rs 不跟踪子进程,因此分析仅限于单个进程。
性能分析后端
Pyroscope 代理本身不执行任何分析。代理的角色是编排分析后端,并将分析数据报告给 Pyroscope 服务器。代理可以支持外部后端(实际上,所有当前后端都是独立的 crates),您也可以创建自己的后端。后端也可以单独使用。目前可用的后端有
原生集成
Pyroscope 可以通过原生集成直接从您的项目中使用。不需要代理或外部程序。
限制
- 后端:Pyroscope 代理使用 pprof-rs 作为后端。因此,pprof-rs 的 限制 也适用于 Pyroscope。
- 标记:从 0.5.0 版本开始,Pyroscope 代理支持线程内的标记。查看 标记 和 多线程 示例以了解用法。
- 计时器:需要 epoll(Linux)和 kqueue(macOS)以实现更精确的计时器。
- 关闭:Pyroscope 代理可能需要一些时间(通常少于 10 秒)才能正确关闭并终止其线程。为了正确关闭,建议在删除代理之前运行
shutdown
函数。
获取帮助
您可以阅读 文档 或检查 示例 以了解库的详细用法。如果您有疑问,也可以加入 Slack 频道。
主要贡献者
我们想向以下对项目做出重大贡献的贡献者表示衷心的感谢
许可协议
Pyroscope 根据 Apache 许可证(版本 2.0)分发。
有关详细信息,请参阅 许可证。
依赖项
~6–21MB
~282K SLoC