25.2. Perf の使用
プログラムの実行の統計またはサンプルを収集するために基本的な PCL インフラストラクチャーを使用することが比較的単純な方法になります。以下のセクションでは、全体的な統計やサンプリングの簡単な例を紹介します。
make
およびその子についての統計情報を収集するには、以下のコマンドを使用します。
perf stat -- make all
# perf stat -- make all
perf
コマンドは、多数の異なるハードウェアおよびソフトウェアカウンターを収集します。次に、以下の情報を出力します。
perf
ツールはサンプルを記録することもできます。たとえば、make
コマンドおよびその子に関するデータを記録するには、以下を使用します。
perf record -- make all
# perf record -- make all
これで収集されたサンプル数とサンプルが保存されているファイルが表示されます。
[ perf record: Woken up 42 times to write data ] [ perf record: Captured and wrote 9.753 MB perf.data (~426109 samples) ]
[ perf record: Woken up 42 times to write data ]
[ perf record: Captured and wrote 9.753 MB perf.data (~426109 samples) ]
Performance Counters for Linux (PCL) ツールと OProfile の競合
OProfile と Performance Counters for Linux (PCL) は、どちらも同じハードウェアの Performance Monitoring Unit (PMU) を使用します。PCL perf
コマンドの使用を試行する際に OProfile が実行中の場合は、OProfile の開始時に以下のようなエラーメッセージが表示されます。
Error: open_counter returned with 16 (Device or resource busy). /usr/bin/dmesg may provide additional information. Fatal: Not all events could be opened.
Error: open_counter returned with 16 (Device or resource busy). /usr/bin/dmesg may provide additional information.
Fatal: Not all events could be opened.
perf
コマンドを使用するには、まず OProfile をシャットダウンします。
opcontrol --deinit
# opcontrol --deinit
次に、perf.data
を分析してサンプルの相対頻度を測定することができます。レポート出力には、コマンド、オブジェクト、サンプルの機能などが含まれます。perf report
を使用して perf.data
の分析を出力します。たとえば、以下のコマンドは最も時間がかかる実行可能ファイルのレポートを作成します。
perf report --sort=comm
# perf report --sort=comm
出力は以下のようになります。
左のコラムはサンプルの相対頻度を示しています。この出力では、make
が xsltproc
および pdfxmltex
で最も多くの時間を消費していることを示しています。make
が完了する時間を短縮するには、xsltproc
と pdfxmltex
にフォーカスします。xsltproc
が実行する機能をリスト表示するには、以下を実行します。
perf report -n --comm=xsltproc
# perf report -n --comm=xsltproc
以下が生成されます。