3

google-perftools パッケージに pprof ユーティリティがあります。https://github.com/gperftools/gperftools/tree/master/doc/pprof-test-big.gifhttps://githubのように、google-perftools cpuprofiler と heapprofiler のプロファイル ファイルを美しい画像に変換するユーティリティです。.com/gperftools/gperftools/tree/master/doc/heap-example1.png

cpu プロファイルの pprof の入力ファイルの形式は、https ://github.com/gperftools/gperftools/tree/master/doc/cpuprofile-fileformat.html で説明されています。

ただし、heap profile入力ファイルの形式は svn に記述されていません。

「ヒープロファイリング」形式とは何ですか? また、コードからそのようなファイルを生成するにはどうすればよいですか? 私はすでに cpuprofiler 形式を生成できるので、2 つの形式の違いに興味がありました。

4

1 に答える 1

3

CPUプロファイラーの場合、フォーマットはバイナリではなく、テキストのようです:

最初の行:

 heap profile:   1:   2 [ 3:  4] @ heapprofile

正規表現 (完全ではない)

 (\d+): (\d+) \[(\d+): (\d+)\] @ ([^/]*)(/(\d+))?)?

どこ

  • 1 & 2 は「使用中の統計」です。最初の数字は割り当て数、2 番目はバイト数です
  • 3 & 4 は「総割り当て統計」です。1番目と2番目は同じ意味
  • heapprofile はタイプです

次に、プロファイル自体が多くの行で続きます。

 1: 2 [ 3: 4] @ 0x00001 0x00002 0x00003

ここで、「1: 2」と「3: 4」は最初の行と同じ意味です。ただし、指定された呼び出しサイトからのみ malloc されます。0x00001 0x00002 はコールサイトのコールスタックです。

次に、空の行と「MAPPED_LIBRARIES:」。次の行から、/proc/pid/maps のコピーに非常によく似たものが続きます。

于 2011-11-10T18:51:02.280 に答える