コードの変更やプロセスの再起動をせず、実行中のPythonプログラムにアタッチできるサンプリングプロファイラー。
google/pprof
profile.proto形式のプロファイリングデータを可視化・分析するコマンドラインツール兼Webツール。
- スター
- 9,323
- フォーク
- 686
- 未解決の Issue
- 64
- 最終コミット
- 一昨日
これは何?
pprofは、profile.proto形式のプロファイリングサンプル群を読み込み、時間やメモリの使用箇所を把握するためのレポートを生成します。ホットスポット順のテキストレポートや、Graphvizで描画したグラフィカルなコールグラフを出力できるほか、プロファイルを調べるための対話型シェルやWebインターフェースも利用できます。
プロファイルはローカルファイルから読み込むことも、HTTP経由で取得することもできます。同じ種類の複数のプロファイルを集約したり、比較したりすることも可能です。プロファイルに生のマシンアドレスが含まれている場合は、プログラムのバイナリを指定すると、ネイティブのbinutilsツールであるaddr2lineとnmを使ってシンボル化できます。また、付属のコンバーターを使って、Linux perfのperf.dataファイルを読み込むこともできます。
go install github.com/google/pprof@latestでインストールできます。Graphvizは任意で、グラフィック出力を使う場合にのみ必要です。このプロジェクトはGoogleの公式プロダクトではありません。
主な機能
- 01プロファイルデータから、ホットスポット順のテキストレポートを生成します。
- 02Graphvizで描画したSVGコールグラフを出力します。
- 03対話型コマンドシェルとブラウザベースのWebインターフェースを提供します。
- 04ローカルファイルまたはHTTP経由でプロファイルを読み込みます。
- 05同じ種類の複数のプロファイルを集約または比較します。
- 06addr2lineとnmを使ってアドレスをシンボル化します。
ユースケース
- 収集したプロファイルから、GoサービスのCPUやメモリのホットスポットを特定する。
- 遅いプログラムのコールグラフを可視化し、どの経路が最も時間を消費しているかを確認する。
- コード変更の前後でプロファイルを比較し、その影響を測定する。
- Linux perfの記録をprofile.proto形式に変換して分析する。
クイックスタート
- 1
Go開発キットとGraphvizをインストールする(グラフィカル出力を使う場合は任意)
- 2
Goを使ってpprofをビルドしてインストールする
go install github.com/google/pprof@latest - 3
プロファイルをホット度順に並べたテキストレポートを生成する
pprof -top [main_binary] profile.pb.gz
使う前に知っておきたいこと
- グラフィカル出力には、別途Graphvizのインストールが必要です。
収録されている特集
トピック
よくある質問
- pprof とは?
- profile.proto形式のプロファイリングデータを可視化・分析するコマンドラインツール兼Webツール。 pprofは、profile.proto形式のプロファイリングサンプル群を読み込み、時間やメモリの使用箇所を把握するためのレポートを生成します。ホットスポット順のテキストレポートや、Graphvizで描画したグラフィカルなコールグラフを出力できるほか、プロファイルを調べるための対話型シェルやWebインターフェースも利用できます。
- pprof は無料で使えますか?ライセンスは?
- pprof は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- pprof は今もメンテナンスされていますか?
- 活発にメンテナンス中。pprof の最終コミットは 2026年11月5日 です。
- pprof は何に使えますか?
- 収集したプロファイルから、GoサービスのCPUやメモリのホットスポットを特定する。 遅いプログラムのコールグラフを可視化し、どの経路が最も時間を消費しているかを確認する。 コード変更の前後でプロファイルを比較し、その影響を測定する。 Linux perfの記録をprofile.proto形式に変換して分析する。
- pprof のインストール方法は?
- Go開発キットとGraphvizをインストールする(グラフィカル出力を使う場合は任意) Goを使ってpprofをビルドしてインストールする: go install github.com/google/pprof@latest プロファイルをホット度順に並べたテキストレポートを生成する: pprof -top [main_binary] profile.pb.gz
- pprof はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/google/pprof
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
関数呼び出しを記録し、コードの実行をインタラクティブなタイムラインで可視化する、低オーバーヘッドのPythonトレーサーです。
セーフポイントバイアスなしでCPU、割り当て、ロック、ネイティブメモリを計測する、低オーバーヘッドのJavaサンプリングプロファイラ。
CPUやメモリのパフォーマンス問題の切り分けに使える無料のWindowsツール。.NETランタイム上で動くコードの調査にも対応しています。
Pythonコードのどこで時間がかかっているかを、コンソールやHTMLなどで確認できるコールスタックプロファイラー。
稼働中のアプリケーションからCPU、メモリ、I/Oのプロファイルを継続的に収集し、遅いコードの原因を行単位で特定できるプロファイリングプラットフォームです。