関数呼び出しを記録し、コードの実行をインタラクティブなタイムラインで可視化する、低オーバーヘッドのPythonトレーサーです。
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
Cargo で flamegraph バイナリをインストールする
cargo install flamegraph - 2
Rust プロジェクトをプロファイルする
cargo flamegraph - 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 の数値は毎日更新されます。
関連プロジェクト
実行中のPythonプロセスをプロファイリングする、C製の低オーバーヘッド・計測コード不要なCPythonフレームスタックサンプラー。
CPUやメモリのパフォーマンス問題の切り分けに使える無料のWindowsツール。.NETランタイム上で動くコードの調査にも対応しています。
Android、Linux、Chromiumのトレース分析に使える、SDK、システムデーモン、ブラウザベースのUIを備えたオープンソースのトレーシング・プロファイリングスイート。
WindowsとLinux向けのタスクマネージャー代替ツール。スレッド、メモリ、ハンドル、ソケット、モジュールなど、プロセスごとの詳細情報を表示します。
ファイルやディレクトリを監視し、変更のたびにコマンドを実行するスタンドアロンのコマンドラインツール。