Repolode
flamegraph-rs

flamegraph-rs/flamegraph

基于 Rust 的火焰图生成工具,可对 Cargo 项目或任意可执行文件进行性能剖析,无需 Perl。

Star
6,053
Fork
194
未关闭 Issue
75
最近提交
5天前

这是什么?

flamegraph 用于生成火焰图,展示程序的时间主要消耗在哪些函数上。它可以通过 cargo flamegraph 子命令分析 Cargo 项目,也可以分析任意可执行文件,或通过 PID 附加到正在运行的进程。调用栈采样由各平台的原生工具完成,结果基于 Inferno 库渲染为可交互的 SVG。

在 Linux 上依赖 perf,在 macOS 上依赖 xctrace,在 Windows 上使用 blondie 库,安装了 DTrace 时则优先使用它。可选参数包括构建 profile、目标二进制、示例、基准测试或测试目标、采样频率、配色方案,以及自定义 perf 或 dtrace 命令。

文档还介绍了如何阅读火焰图,并整理了性能测量的基本方法,例如 USE 方法,以及优化前先建立基准测试的建议。

核心功能

  • 01通过 cargo flamegraph 分析 Cargo 项目、二进制、示例、基准测试和测试目标。
  • 02支持通过 PID 附加到正在运行的进程。
  • 03Linux 使用 perf,macOS 使用 xctrace,Windows 使用 blondie 或 DTrace。
  • 04生成可在浏览器中交互查看的 SVG 文件。
  • 05支持自定义 perf 或 dtrace 命令参数,并提供多种配色方案。
  • 06flamegraph 命令支持 bash、fish、zsh、powershell 和 elvish 的自动补全。

适用场景

  • 在优化 Rust 应用前,定位耗时最多的热点函数。
  • 无需安装 Perl 或手动搭建管道,即可分析 C 或 C++ 的可执行文件。
  • 对比基准测试或测试运行中的时间分布。
  • 通过进程 ID 附加到正在运行的服务进行剖析。

快速上手

  1. 1

    使用 Cargo 安装 flamegraph 二进制文件

    cargo install flamegraph
  2. 2

    分析一个 Rust 项目

    cargo flamegraph
  3. 3

    分析任意可执行文件

    flamegraph -- /path/to/binary

使用前须知

  • 性能分析依赖平台工具:Linux 使用 perf,macOS 使用 xctrace,Windows 使用 blondie 或 dtrace。
  • 在 Linux 上使用 lld(Rust 1.90.0 起为默认)或 mold 时,必须添加 --no-rosegment 链接参数,否则调用栈可能不准确。
  • 非 root 用户使用 perf 可能需要降低 perf_event_paranoid 的值,这会削弱系统安全性。

收录于专题

标签

常见问题

flamegraph 是什么?
基于 Rust 的火焰图生成工具,可对 Cargo 项目或任意可执行文件进行性能剖析,无需 Perl。 flamegraph 用于生成火焰图,展示程序的时间主要消耗在哪些函数上。它可以通过 cargo flamegraph 子命令分析 Cargo 项目,也可以分析任意可执行文件,或通过 PID 附加到正在运行的进程。调用栈采样由各平台的原生工具完成,结果基于 Inferno 库渲染为可交互的 SVG。
flamegraph 可以免费使用吗?用的什么许可证?
flamegraph 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
flamegraph 还在维护吗?
活跃维护中。flamegraph 最近一次提交是在 2026年11月2日。
flamegraph 适合用来做什么?
在优化 Rust 应用前,定位耗时最多的热点函数。 无需安装 Perl 或手动搭建管道,即可分析 C 或 C++ 的可执行文件。 对比基准测试或测试运行中的时间分布。 通过进程 ID 附加到正在运行的服务进行剖析。
flamegraph 怎么安装和运行?
使用 Cargo 安装 flamegraph 二进制文件: cargo install flamegraph 分析一个 Rust 项目: cargo flamegraph 分析任意可执行文件: flamegraph -- /path/to/binary
在哪里获取 flamegraph?
源代码和安装说明在 GitHub 上:https://github.com/flamegraph-rs/flamegraph

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目