4.8. perf について
perf は、パフォーマンス分析ツールです。これは、簡単なコマンドラインインターフェイスを提供し、Linux のパフォーマンス測定における CPU ハードウェアの相違点を分けます。Perf はカーネルによってエクスポートされた
perf_events インターフェイスに基づいています。
perf の 1 つの利点は、カーネルとアーキテクチャーの両方です。分析データは、特定のシステム設定なしに確認できます。
perf を使用できるようにするには、
root として次のコマンドを実行して perf パッケージをインストールします。
yum install perf
~]# yum install perf
perf には以下のオプションがあります。最も一般的なオプションと機能の例を以下に示しますが、すべてのオプションの詳細情報は perf help コマンド で参照できます。
例4.2 perf オプションの例
以下の例は、レコード、アーカイブ、レポート、統計、リストなど、最も使用される機能の選択を示しています。
例4.3 perf レコード
perf レコード機能は、システム全体の統計を収集するために使用されます。すべてのプロセッサーで使用できます。
perf record -a
~]# perf record -a
^C[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.725 MB perf.data (~31655 samples) ]
この例では、すべての CPU がオプション
-a で指定されており、プロセスは数秒後に終了しました。その結果は、0.725 MB のデータを収集し、以下の結果ファイルを作成していることが示されています。
ls
~]# ls
perf.data
例4.4 perf レポートおよびアーカイブ機能の例
perf レコード 機能からのデータは、perf report コマンドを使用して直接調査できるようになりました。サンプルを別のシステムで分析する場合は、perf archive コマンドを使用します。DSO (バイナリーやライブラリーなど) が
~/.debug/ キャッシュなどの分析システムにすでに存在している場合や、両方のシステムに同じバイナリーセットがある場合、これは必ずしも必要ではありません。
アーカイブコマンドを実行し、結果のアーカイブを作成します。
perf archive
~]# perf archive
結果を tar アーカイブとして収集し、設定 レポート のデータを作成します。
tar xvf perf.data.tar.bz2 -C ~/.debug
~]# tar xvf perf.data.tar.bz2 -C ~/.debug
perf レポート を実行して tarball を分析します。
perf report
~]# perf report
レポートの出力は、アプリケーションの最大 CPU 使用率順に並べ替えられます。これは、サンプルがプロセスのカーネルまたはユーザー空間で発生したかどうかを示します。
カーネルサンプルは、カーネルモジュール内で実行されていない場合は
、[kernel.kallsyms] という表記でマークされます。カーネルサンプルがカーネルモジュール内で実行されている場合、[module]、[ext4] としてマークされます。ユーザー空間のプロセスでは、プロセスにリンクされた共有ライブラリーが結果に表示される可能性があります。
レポートは、プロセスがカーネルまたはユーザースペースでも発生するかどうかを示します。結果の
[.] はユーザー空間を示し、[k] は カーネル空間を示します。経験のある perf 開発者に適したデータなど、詳細を確認することができます。
例4.5 perf list および stat 機能の例
perf list および stat 機能は、プローブ可能なハードウェアまたはソフトウェアのトレースポイントをすべて示します。
次の例は、perf stat 機能を使用してコンテキストスイッチの数を表示する方法を示しています。
結果には、5 秒間に 15619 のコンテキストスイッチが発生したことが示されています。また、以下のスクリプト例のように、ファイルシステムのアクティビティーも表示可能です。
for i in {1..100}; do touch /tmp/$i; sleep 1; done
~]# for i in {1..100}; do touch /tmp/$i; sleep 1; done
別のターミナルで、次の perf stat 機能を実行します。
その結果、スクリプトが 5 秒以内に 5 秒以内に 5 つのファイルを作成すると、inode 要求が 5 つあることが分かります。
ハードウェアトレースポイントアクティビティーを取得するために利用可能なオプションは複数あります。次の例は、perf list 機能のオプションの選択を示しています。
重要
周波数が高くなりすぎると、リアルタイムシステムのパフォーマンスに悪影響を及ぼす可能性があります。