Repolode
flamegraph-rs

flamegraph-rs/flamegraph

Perlを使わず、perf、xctrace、dtrace/blondieでCargoプロジェクトや任意のバイナリをプロファイルできるRust製フレームグラフ生成ツール。

スター
6,053
フォーク
194
未解決の Issue
75
最終コミット
5 日前

これは何?

flamegraphは、プログラムがどこで時間を使っているかを可視化するフレームグラフを生成します。cargo flamegraphサブコマンドを使ってCargoプロジェクトをプロファイルできるほか、任意のバイナリや、PIDを指定して実行中のプロセスをプロファイルすることもできます。スタックサンプルは各プラットフォームのネイティブツールで収集し、Infernoライブラリを使ってインタラクティブなSVGに描画します。

Linuxではperf、macOSではxctrace、Windowsではblondieライブラリ、またはインストール済みのDTraceを使って動作します。ビルドプロファイル、バイナリ、example、benchmark、testの各ターゲット、サンプリング周波数、カラーパレット、カスタムのperfまたはdtraceコマンドを指定できます。

READMEには、フレームグラフの読み方のガイドに加え、USE Methodや最適化の前にベンチマークを行うためのアドバイスなど、パフォーマンス測定に関する説明もあります。

主な機能

  • 01cargo flamegraphを使って、Cargoプロジェクト、バイナリ、example、benchmark、testをプロファイルできます。
  • 02PIDを指定して実行中のプロセスにアタッチできます。
  • 03Linuxではperf、macOSではxctrace、WindowsではblondieまたはDTraceを使います。
  • 04ブラウザーで開けるインタラクティブなSVGを出力します。
  • 05カスタムのperfまたはdtraceコマンドオプションと、複数のカラーパレットに対応しています。
  • 06bash、fish、zsh、powershell、elvishでflamegraphバイナリのシェル補完を利用できます。

ユースケース

  • 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 を使用します。
  • lld(Rust 1.90.0 以降のデフォルト)または mold を使う Linux では、--no-rosegment リンカーフラグを追加する必要があります。追加しないと、スタックトレースが不正確になる場合があります。
  • 特権のないユーザーが perf を使うには、perf_event_paranoid の値を下げる必要がある場合があります。これによりシステムのセキュリティが弱まります。

収録されている特集

トピック

よくある質問

flamegraph とは?
Perlを使わず、perf、xctrace、dtrace/blondieでCargoプロジェクトや任意のバイナリをプロファイルできるRust製フレームグラフ生成ツール。 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

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト