2017-04-17 6 views
0

私はLinuxで自分のC++アプリケーションのプロファイルを作成しようとしていますが、this article on perf recordに従ってください。私が理解することは、perf record program [program_options]を実行することです。programはプログラムの実行可能ファイルで、[program options]はプログラムに渡す引数です。しかし、私はこのように自分のアプリケーションをプロファイリングしようとすると:perfレコードを使用したlinuxアプリケーションのプロファイリング

perf record ./csvJsonTransducer -enable-AVX-deletion test.csv testout.json

perf戻り、ほとんどすぐにレポートを。 perfを使わずに./csvJsonTransducer -enable-AVX-deletion test.csv testout.jsonを実行するには30秒ほどかかりますが、perfはプログラム全体を監視し、すぐには戻らないようにします。 perfがとても早く復帰するのはなぜですか?プログラムの全実行を考慮に入れるにはどうすればよいですか?

答えて

0

あなたのコマンドは正常です。パラノイドレベルを/proc/sys/kernel/perf_event_paranoidに変更してみてください。 -1(rootとして)このパラメータを設定すると、権限の問題を解決する必要があります。

echo "-1" > /proc/sys/kernel/perf_event_paranoid 

また、あなたがperf recordで監視するイベントを設定してみてください。デフォルトイベントはcycles(サポートされている場合)です。 man perf-listを確認してください。

は、コマンドを試してみてください。

perf record -e cycles ./csvJsonTransducer -enable-AVX-deletion test.csv testout.json 

サイクルの監視を強制します。

関連する問題