PPROFは、プロファイリングデータの視覚化と分析のためのツールです。
PPROFは、プロファイリングサンプルのコレクションをプロファイルで読み取り、プロット形式でレポートを生成して、データを視覚化および分析するのに役立ちます。テキストレポートとグラフィカルレポートの両方を生成できます(DOT視覚化パッケージを使用して)。
Profile.Protoは、コールスタックのセットとシンボル化情報を記述するプロトコルバッファーです。一般的な使用法は、統計プロファイリングのサンプリングされたコールスタックのセットを表すことです。この形式は、proto/profile.protoファイルで説明されています。プロトコルバッファーの詳細については、https://developers.google.com/protocol-buffersを参照してください
プロファイルは、ローカルファイルまたはHTTPを介して読み取ることができます。同じタイプの複数のプロファイルを集約または比較できます。
プロファイルサンプルに機械アドレスが含まれている場合、PPROFはネイティブBinutilsツール(AddR2lineおよびNM)を使用してそれらを象徴することができます。
これは公式のGoogle製品ではありません。
前提条件:
サポートされているバージョンの開発キットに移動します。これらの指示に従って、環境を準備してください。
Graphviz:http://www.graphviz.org/オプション、プロファイルのグラフィック視覚化を生成するために使用されます
構築してインストールするには:
go install github.com/google/pprof@latest
バイナリは$GOPATH/bin
(デフォルトで$HOME/go/bin
)にインストールされます。
PPROFは、ファイルから、またはHTTPを介してサーバーから直接プロファイルを読み取ることができます。コマンドラインでプロファイル入力を指定し、オプションを使用してレポートのフォーマット方法を示します。
% pprof -top [main_binary] profile.pb.gz Where main_binary: Local path to the main program binary, to enable symbolization profile.pb.gz: Local path to the profile in a compressed protobuf, or URL to the http service that serves a profile.
pprof -web [main_binary] profile.pb.gz
出力フォーマットオプションが指定されていない場合、PPROFはインタラクティブモードで実行されます。ここで、プロファイルを読み取り、プロファイルの視覚化と改良のためのインタラクティブコマンドを受け入れます。
pprof [main_binary] profile.pb.gz This will open a simple shell that takes pprof commands to generate reports. Type 'help' for available commands/options.
-http
フラグが指定されている場合、PPROFは、指定されたホスト:PPROFにインタラクティブなWebベースのインターフェイスを提供するポートでWebサーバーを起動します。ホストはオプションであり、デフォルトでは「localhost」です。ポートはオプションであり、デフォルトではランダムに利用可能なポートです。 -http=":"
ランダムポートでローカルでサーバーを起動します。
pprof -http=[host]:[port] [main_binary] profile.pb.gz
前のコマンドは、右ページでWebブラウザを自動的に開く必要があります。そうでない場合は、Webブラウザの指定されたポートに手動でアクセスできます。
PPROFは、PERF_DATA_CONVERTERパッケージのperf_to_profile
プログラムを使用して、Linux Perf Toolによって生成されたperf.data
ファイルを読み取ることができます。
Windows実行可能ファイルとしてコンパイルされたGOプログラムから収集されたプロファイルの分解を表示するには、実行可能ファイルをgo build -buildmode=exe
で構築する必要があります。 LLVMまたはGCCをインストールする必要があるため、 pprof
が利用できるaddr2line
やnm
などの必要なツールを使用できます。
詳細なエンドユーザードキュメントについては、DOC/README.MDを参照してください。
貢献ドキュメントについては、contributing.mdを参照してください。
profile.proto形式の説明については、proto/readme.mdを参照してください。