Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第29章 oprofile

OProfile は、オーバーヘッドが低い、システム全体のパフォーマンス監視ツールです。これはプロセッサー上のパフォーマンス監視ハードウェアを使用して、メモリーの参照時、L2 キャッシュ要求の数、受信したハードウェア割り込みの数など、システムのカーネルと実行可能ファイルに関する情報を取得します。Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Linux システムで、このツールを使用するには oprofile パッケージがインストールされている必要があります。
多くのプロセッサーには、専用のパフォーマンス監視ハードウェアが含まれます。このハードウェアを使用すると、特定のイベントの発生時(要求されたデータがキャッシュにないなど)を検出できます。ハードウェアは通常、イベントが実行されるたびにインクリメントされる 1 つ以上の カウンター の形式を取ります。カウンターの値が基本的にロールオーバーされると割り込みが生成され、パフォーマンス監視で生成される詳細(つまりオーバーヘッド)の量を制御できます。
OProfile はこのハードウェア(またはパフォーマンス監視ハードウェアが存在しない場合)を使用して、カウンターが割り込みを生成するたびにパフォーマンス関連のデータの サンプル を収集します。これらのサンプルは定期的にディスクに書き込まれます。その後、これらのサンプルに含まれるデータを使用して、システムレベルのパフォーマンスおよびアプリケーションレベルのパフォーマンスに関するレポートを生成できます。
OProfile は便利なツールですが、これを使用する場合にはいくつかの制限に注意してください。
  • 共有ライブラリー の使用: 共有ライブラリー のコードの Samples は、--separate=library オプションが使用されていない限り、特定のアプリケーションに属性されません。
  • パフォーマンス監視サンプルは正確に行われません。パフォーマンス監視レジスターがサンプルをトリガーすると、割り込み処理はゼロ例外による分割のように正確で はありません。プロセッサーによる命令の順不同な実行により、サンプルはほぼ近い命令に記録される場合があります。
  • opreport は、インライン関数のサンプルを適切に関連付けませんopreport は単純なアドレス範囲メカニズムを使用して、アドレスがどの関数にあるかを判断します。インライン関数のサンプルは、インライン関数には属性ではなく、インライン関数が挿入された関数に対して属性されません。
  • OProfile は複数の実行からのデータを累積 します。OProfile はシステム全体のプロファイラーであり、プロセスが複数回起動し、シャットダウンすることを想定します。そのため、複数の実行のサンプルが累積されました。opcontrol --reset コマンドを使用して、直前の実行からサンプルを消去します。
  • ハードウェアパフォーマンスカウンターはゲスト仮想マシンでは機能しません。ハードウェアパフォーマンスカウンターは仮想システムでは使用できません。そのため、timer モードを使用する必要があります。opcontrol --deinit コマンドを実行してから、modprobe oprofile timer=1 コマンドを実行して timer モードを有効にします。
  • CPU の制限のないパフォーマンスの問題: OProfile は、CPU の制限のあるプロセスの問題を見つけるために使用されます。OProfile は、ロックを待機するか、または他のイベントが発生するため、sleep であるプロセスを特定しません(例: I/O デバイスで操作を終了するなど)。

29.1. ツールの概要

表29.1「OProfile コマンド」 では、oprofile パッケージで提供されるツールの概要を説明します。

表29.1 OProfile コマンド

コマンド 説明
ophelp
システムプロセッサーで使用可能なイベントとその簡単な説明を表示します。
opimport
サンプルデータベースファイルをシステム用に外部のバイナリー形式からネイティブの形式に変換します。異なるアーキテクチャーからのサンプルデータベースを解析する場合にのみこのオプションを使用してください。
opannotate アプリケーションがデバッグシンボルでコンパイルされている場合は、実行可能ファイルのアノテーション付きソースを作成します。詳しくは、opannotateの使用」 を参照してください。
opcontrol
収集されるデータを設定します。詳しくは、「OProfile の設定」 を参照してください。
opreport
プロファイリングデータを取得します。詳しくは、opreportの使用」 を参照してください。
oprofiled
デーモンとして実行して定期的にサンプルデータをディスクに書き込みます。