29.2.2. 監視するイベントの設定
ほとんどのプロセッサーには カウンター が含まれており、これは特定のイベントを監視するために OProfile によって使用されます。表29.2「OProfile Processors and Counters」 で示されているように、利用可能なカウンターの数はプロセッサーによって異なります。
プロセッサー | cpu_type | カウンターの数 |
---|---|---|
AMD64 | x86-64/hammer | 4 |
AMD Athlon | i386/athlon | 4 |
AMD Family 10h | x86-64/family10 | 4 |
AMD Family 11h | x86-64/family11 | 4 |
AMD Family 12h | x86-64/family12 | 4 |
AMD Family 14h | x86-64/family14 | 4 |
AMD Family 15h | x86-64/family15 | 6 |
IBM eServer System i および IBM eServer System p | timer | 1 |
IBM POWER4 | ppc64/power4 | 8 |
IBM POWER5 | ppc64/power5 | 6 |
IBM PowerPC 970 | ppc64/970 | 8 |
IBM S/390 および IBM System z | timer | 1 |
Intel Core i7 | i386/core_i7 | 4 |
Intel Nehalem microarchitecture | i386/nehalem | 4 |
Intel Pentium 4(hy-hyper- thread) | i386/p4 | 8 |
Intel Pentium 4(ハイパースレッド) | i386/p4-ht | 4 |
Intel Westmere microarchitecture | i386/westmere | 4 |
TIMER_INT | timer | 1 |
表29.2「OProfile Processors and Counters」 を使用して、正しいプロセッサータイプが検出され、同時に監視できるイベントの数を判断します。
timer
プロセッサーがパフォーマンス監視ハードウェアに対応していない場合は、プロセッサータイプとして使用されます。
timer
を使用する場合は、ハードウェアのパフォーマンスカウンターをサポートしないため、どのプロセッサーにもイベントも設定できません。代わりに、タイマー割り込みがプロファイリングに使用されます。
timer
がプロセッサータイプとして使用されていない場合は、監視されるイベントを変更し、プロセッサーのカウンター 0 はデフォルトで時間ベースのイベントに設定されます。プロセッサーに複数のカウンターが存在する場合は、カウンター 0 以外のカウンターはデフォルトでイベントには設定されません。監視されるデフォルトイベントは、表29.3「デフォルトイベント」 に表示されます。
プロセッサー | カウンターのデフォルトイベント | 説明 |
---|---|---|
AMD Athlon および AMD64 | CPU_CLK_UNHALTED | プロセッサーのクロックが停止されていない |
AMD Family 10h、AMD Family 11h、AMD Family 12h | CPU_CLK_UNHALTED | プロセッサーのクロックが停止されていない |
AMD Family 14h、AMD Family 15h | CPU_CLK_UNHALTED | プロセッサーのクロックが停止されていない |
IBM POWER4 | サイクル | プロセッサーサイクル |
IBM POWER5 | サイクル | プロセッサーサイクル |
IBM PowerPC 970 | サイクル | プロセッサーサイクル |
Intel Core i7 | CPU_CLK_UNHALTED | プロセッサーのクロックが停止されていない |
Intel Nehalem microarchitecture | CPU_CLK_UNHALTED | プロセッサーのクロックが停止されていない |
Intel Pentium 4(ハイパースレッドおよび非スレッド) | GLOBAL_POWER_EVENTS | プロセッサーが停止していない時間 |
Intel Westmere microarchitecture | CPU_CLK_UNHALTED | プロセッサーのクロックが停止されていない |
TIMER_INT | (なし) | 各タイマー割り込みの例 |
一度に監視できるイベントの数は、プロセッサーのカウンター数によって決定されます。ただし、1 対 1 の相関ではありません。一部のプロセッサーでは、特定のイベントを特定のカウンターにマップする必要があります。利用可能なカウンターの数を確認するには、以下のコマンドを実行します。
~]# ls -d /dev/oprofile/[0-9]*
利用可能なイベントはプロセッサーのタイプによって異なります。プロファイリングに使用できるイベントを確認するには、root で以下のコマンドを実行します(一覧はシステムのプロセッサータイプに固有のものです)。
~]# ophelp
OProfile が設定されていることを確認してください。
OProfile が適切に設定されていない限り、ophelp は以下のエラーメッセージを出して失敗します。
Unable to open cpu_type file for reading Make sure you have done opcontrol --init cpu_type 'unset' is not valid you should upgrade oprofile or force the use of timer mode
OProfile を設定するには、「OProfile の設定」 の手順に従います。
各カウンターのイベントは、コマンドラインまたはグラフィカルインターフェースで設定できます。グラフィカルインターフェースの詳細は、「グラフィカルインターフェース」 を参照してください。カウンターを特定のイベントに設定しない場合は、エラーメッセージが表示されます。
コマンドラインで設定可能な各カウンターのイベントを設定するには、opcontrol を使用します。
~]# opcontrol --event=event-name:sample-rate
event-name を ophelp のイベントの正確な名前に置き換え、sample-rate をサンプル間のイベント数に置き換えます。
29.2.2.1. サンプリングレート
デフォルトでは、時間ベースのイベントセットが選択されます。プロセッサーごとに 100,000 クロックサイクルごとにサンプルを作成します。タイマー割り込みを使用する場合は、タイマーは jiffy レートがどれでも設定され、ユーザー設定のテーブルではありません。
cpu_type
が timer
でない場合、各イベントには サンプリングレート を設定できます。サンプリングレートは、各サンプルスナップショット間のイベント数です。
カウンターのイベントを設定する場合、サンプルレートを指定することもできます。
~]# opcontrol --event=event-name:sample-rate
sample-rate を、再度サンプリングするまで待機するイベントの数に置き換えます。数値が小さいほど、サンプルが頻繁に使用されます。頻繁に発生しないイベントの場合、イベントインスタンスをキャプチャーするためにカウントが低くなることがあります。
サンプリングが頻繁になりすぎると、システムにオーバーロードする可能性がある
サンプリングレートを設定する場合は十分に注意してください。サンプリングが頻繁にシステムをオーバーロードする可能性があります。これにより、システムがフリーズするか、システムが実際にフリーズするかのようにシステムが表示されます。