2017-11-06 1 views
0

私はperfを使用してプロファイリングしているアプリケーションを持っていて、perf reportを使用すると結果が見つからず、パターンが判別できません。linux perfレポートの一貫性のない動作

私は、アプリケーションを起動し、60秒間pidでそれをプロファイル:

perf record -p <pid> -o <file> sleep 60

そして、私はperf report -i <file>とで結果を引くとき、時々私ができる「+」の左端の列を参照してくださいEnterキーを押すと関数呼び出しツリーにドリルダウンしますが、時には "+"はそこにはありません。記録されたファイルの一部のプロパティに依存しているように見えます。記録されたファイルのコレクションがあります。その中には、このドリルダウンを許可するものとそうでないものがあります。

ここで一貫性のある動作を得る方法に関するご意見をお待ちしております。

+0

どのように一貫性がないのですか? – njuffa

+0

コールツリーにドリルダウンするための一番左の列にある「+」は、常にそこにあるとは限りません。私はそれが欲しいです。 –

+0

60秒以上走行してみてください。五分。 – njuffa

答えて

0

perfレコードで測定されるデフォルトのイベントはcpu-cyclesです。 (またはマシンによっては、CPUサイクル:pまたはcpu-cycles:pp)

アプリケーションが寝ていないことは確かですか?それは多くのCPUサイクルを消費しますか?

$ apt-get install stress 
$ perf record -e cpu-cycles --call-graph fp stress --cpu 1 --timeout 5 
$ perf report 

以降の実行は、多かれ少なかれ同様の結果を表示する必要があります:

は、計算の多くを行うことにより、CPUに負荷をかけ、何かにPERF測定してみてください。

あなたのプログラムがCPUを大量に使い、コールスタックが実行の間で大きく異なる場合、perfはさまざまな方法でコールグラフを記録できるので、 - call-graphオプションを調べるとよいでしょう。

  • FP(関数ポインタ)
  • LBR(最後の分岐レコード)
  • ドワーフ

たぶん異なる方法がより良い結果を与えます。

関連する問題