OProfile を実行するには設定が必要です。 カーネル監視の指定(又はカーネル非監視の指定)が最低限必要です。 次のセクションでopcontrolユーティリティを使用して OProfileを設定する方法を説明します。opcontrolコマンドが実行されると、 /root/.oprofile/daemonrcファイルに設定オプションが保存されます。
最初に、OProfileでのカーネル監視の有無を設定します。 この設定オプションのみがOProfileを起動する前に必要となります。外のオプションは 任意となります。
カーネルを監視するには、次のコマンドをrootとして実行して下さい。
opcontrol --vmlinux=/boot/vmlinux-`uname -r` |
OProfileにてカーネルを監視しないよう設定するには、 次のコマンドとrootとして実行して下さい。
opcontrol --no-vmlinux |
oprofileはカーネルモジュールを取り込み、 (取り込まれていない場合)、/dev/oprofile/ ディレクトリが存在しない場合は /dev/oprofile/ ディレクトリを作成します。 このディレクトリに関する詳細は項43.6を参照下さい。
![]() | 注記 |
---|---|
OProfileによるカーネルのプロファイルが無効として設定されている場合でも SMPカーネルは実行状態にし、SMPカーネルからoprofile モジュールを取り込めるようにして下さい。 |
カーネル内でのサンプル回収の有無を指定する設定では回収するデータの変更のみが可能で、データの収集方法や保存場所 の変更はできません。カーネルやアプリケーションライブラリの 他のサンプルを生成する場合は項43.2.3を参照下さい。
OProfileが特定イベント監視に使用するカウンタ はプロセッサの多くに内蔵されています。 表43-2の通り、 利用可能なカウンタ数はプロセッサによって異なります。
プロセッサ | cpu_type | カウンタ数 |
---|---|---|
Pentium Pro | i386/ppro | 2 |
Pentium II | i386/pii | 2 |
Pentium III | i386/piii | 2 |
Pentium 4 (Hyper-threading 非対応) | i386/p4 | 8 |
Pentium 4 (hyper-threading 対応) | i386/p4-ht | 4 |
Athlon | i386/athlon | 4 |
AMD64 | x86-64/hammer | 4 |
Itanium | ia64/itanium | 4 |
Itanium 2 | ia64/itanium2 | 4 |
TIMER_INT | timer | 1 |
IBM eServer iSeries | timer | 1 |
IBM eServer pSeries | timer | 1 |
IBM eServer S/390 | timer | 1 |
IBM eServer zSeries | timer | 1 |
表 43-2. OProfile プロセッサとカウンタ
表43-2にて正しいプロセッサタイプが検出 されたか判断し、同時監視できるイベント数を確認して下さい。プロセッサのパフォーマンス監視ハードウェアが非対応の場合、 プロセッサタイプにtimerを指定して下さい。
timerが指定された場合、 ハードウェアがハードウェアパフォーマンスカウンタに対応していないため、 プロセッサに対してイベントを設定することができません。 代わりに、タイマ割り込みをプロファイルに使用して下さい。
timerがプロセッサタイプとして 指定されていない場合、監視イベントが変更する場合があります。 又、デフォルトでタイムベースイベントにプロセッサのカウンタ0が設定されます。 プロセッサにカウンタが複数存在する場合、デフォルトではカウンタ0 以外はイベントに設定されません。デフォルトの監視イベントは表43-3を 参照下さい。
プロセッサ | カウンタ0のデフォルトイベント | 説明 |
---|---|---|
Pentium Pro、Pentium II、Pentium III、Athlon、AMD64 | CPU_CLK_UNHALTED | プロセッサのクロックは停止しません。 |
Pentium 4 (HT対応、HT非対応)、Intel® EM64T | GLOBAL_POWER_EVENTS | プロセッサが停止しなかった時間 |
Itanium 2 | CPU_CYCLES | CPU サイクル |
TIMER_INT | (無し) | 各タイマ割り込みのサンプル |
表 43-3. デフォルトイベント
一度に監視可能なイベント数はプロセッサのカウンタ数によって決まります。 しかし、一対一の比率で決まるわけではなく、プロセッサによっては イベントを特定カウンターにマップしなければならない場合があります。 カウンタ数を調べるには次のコマンドを実行して下さい。
cat /dev/oprofile/cpu_type |
イベントはプロセッサタイプによって異なります。 プロファイルできるイベントを調べるには、次のコマンドをrootとして実行して下さい。 (システムのプロセッサタイプに特有のリストです)
op_help |
各カウンタのイベントはコマンドライン、又はグラフィカルインターフェースより 設定可能です。カウンタを特定のイベントに設定できない場合、エラーメッセージが 表示されます。
コマンドラインにて設定可能なカウンタのイベントを設定するには、 opcontrolを使用して下さい。
opcontrol --ctrlN-event=<event-name> |
Nをカウンター番号(0で始まる)に置き換え、 <event-name>をop_helpと 同じイベント名に置き換えて下さい。
デフォルトでは、タイムベースのイベントセットが選択され、 1プロセッサにつき、毎秒約2000サンプルが生成されます。 タイマ割り込みが使用されている場合は、瞬間速度に設定され、 ユーザー設定ができません。 cpu_typeが timerでない場合、 サンプリングレートを イベントに設定することができます。 サンプリングレートとは、 サンプルスナップショット間のイベント数のことです。
カウンタのイベントを設定する際にサンプルレートも指定することができます。
opcontrol --ctrN-event=<event-name> --ctrN-count=<sample-rate> |
<sample-rate>を次のサンプリングが行なわれる まで のイベント数に置き換えます。 カウントが小さいほど、サンプルは頻繁になります。 頻度の低いイベントに対してはカウントを小さくし、イベントの発生を把握する 必要があります。
![]() | 注意 |
---|---|
サンプリングレートの設定は十分慎重に行なって下さい。 頻度が高すぎるサンプリングはシステムの過負荷につながり、システムがフリーズしたかのように重たくなったり、実際にフリーズする場合が あります。 |
デフォルトでは各イベントに対しカーネルモードとユーザーモードの情報が 収集されます。特定のカウンタに対するカーネルモードのイベントをカウントしないよう に設定するには、次のコマンドを実行して下さい。 (Nはカウンタ番号です)
opcontrol --ctrN-kernel=0 |
次のコマンドを実行し、 カウンタに対するカーネルモードのプロファイルを再起動して下さい。
opcontrol --ctrN-kernel=1 |
特定のカウンタに対するユーザーモードのイベントをカウントしないよう に設定するには、次のコマンドを実行して下さい。 (Nはカウンタ番号です)
opcontrol --ctrN-user=0 |
次のコマンドを実行し、 カウンタに対するユーザーモードのプロファイルを再起動して下さい。
opcontrol --ctrN-user=1 |
OProfileデーモンにてサンプルファイルにプロファイルデータが書き込まれる時、 カーネルとライブラリプロファイルデータは異なるサンプルファイルに 分離されます。デーモンによるサンプルファイルの書き込みを設定するには、 次のコマンドをrootとして実行して下さい。
opcontrol --separate=<choice> |
<choice>は次に上げるうちの1つとなります。
none — プロファイルは分離されません。(デフォルト)
library — ライブラリに対する アプリケーション毎のプロファイルを 生成します。
kernel — カーネルとカーネルモジュールに対するアプリケーション 毎のプロファイルを生成します。
all — ライブラリに対する アプリケーション毎のプロファイルと、 カーネルとカーネルモジュールに対するアプリケーション毎のプロファイルを 生成します。
--separate=libraryを使用すると、 ライブラリ名と実行可能ファイル名がサンプルファイル名に含まれます。