GNU/Linux >> Linux の 問題 >  >> Linux

Linux – `perf Record –a`(システム全体のコレクション)からプロファイルデータを分析する方法は?

perfを使用しています linux-2.6.36-gentoo-r4から。 /proc/sys/kernel/perf_event_paranoid は0に設定されているので、そこから問題はないはずです。

私がプロファイリングしている実行時間の長いアプリケーションは、不確定な理由でクラッシュすることがあるため(動作を停止する理由に関する情報が見つからなかったため)、perfイベントを使用したシステム全体のプロファイリングに切り替えました。

問題のアプリケーションは、通信にMPI(Message Passing Interface)を使用して、並列化された数値計算を実行します。アプリケーションを実行する前に(mpirunを使用) ) oneでシステム全体のプロファイルデータの記録を開始しました 実行されるノードの数:

$ perf record -o perf.all.cycles,graph.data -g -e cycles -a &

アプリケーションがクラッシュしたことに気付いた後、perfを強制終了しました タスク。

去っていた

$ du -sh perf.all.cycles,graph.data 
14G     perf.all.cycles,graph.data

14GBのデータ。残念ながら、perf report -aをサポートしていません スイッチ。

perfからシステム全体のプロファイリングデータを分析するにはどうすればよいですか ツール

perf reportを実行するだけです 有用な出力は生成されません:

$ perf report -i perf.all.cycles,graph.data
#
# (For a higher level overview, try: perf report --sort comm,dso)
#

これが14GBのプロファイルデータからの出力全体です…

承認された回答:

MPIを使用して計算を分散している場合、MPI対応ツールを使用すると、より賢明な結果が得られます。分散アプリケーションでは、1つのMPIプロセスがアイドル状態で、他のプロセスからのデータが来るのを待っているという、負荷の不均衡の問題が発生する可能性があります。 。そのMPIプロセスを正確にプロファイリングしている場合、パフォーマンスプロファイルはすべて間違っています。

したがって、最初のステップは通常、プログラムの通信と負荷分散のパターンを調べ、必要なワークロードを提供するサンプル入力を特定することです(たとえば、ランク0でCPUを集中的に使用します)。たとえば、mpiPはMPIです。通信パターン、各MPI呼び出しにかかった時間などに関する非常に完全なレポートを作成できるプロファイリングツール。

次に、選択した1つ以上のMPIランクでコードプロファイリングツールを実行できます。とにかく、perfを使用します 単一のMPIランクでは、その測定値にMPIライブラリコードのパフォーマンスも含まれるため、適切ではない可能性があります。これは、おそらくあなたが探しているものではありません。


Linux
  1. Linuxでffmpegでオーディオを録音するには?

  2. IP (Linux) からホスト名を取得するには?

  3. Linux でネットフロー データを生成する方法

  1. Linuxでの偶発的なファイル削除を防止および回復する方法

  2. AndroidからLinuxでSSH接続する方法

  3. Linux – Linuxからブートローダーを実行する方法は?

  1. Linuxでjournalctlを使用してログを分析する方法

  2. CentOS8からRockyLinux8に移行する方法

  3. bashからネットマスクを取得するには?