CPCプロバイダ

CPUパフォーマンス・カウンタ(cpc)プロバイダにより、CPUパフォーマンス・カウンタ・イベントに関連付けられたプローブが使用できるようになります。

プローブは、選択したプロセッサ・モードで、特定のタイプのイベントが指定した回数発生したときに起動します。プローブが起動すると、システムの状態の様相をサンプリングして、システムの動作を推論できるようになります。イベント・カウンタ値の妥当な値は、イベントとワークロードによって異なります。プローブの起動が過剰にならないように、大きな値から始めます。その値を小さくすることで、統計的精度を向上させます。

CPUパフォーマンス・カウンタは有限のリソースであり、有効にできるプローブの数はハードウェアの能力によって異なります。ハードウェアの能力を超える数のcpcプローブを有効にすると、エラーが返されます。ハードウェア・リソースが使用できない場合、リソースが使用可能になるまでプローブは失敗します。

CPCプローブのイベント・カウンタ値は大きな値から始めて、より正確にシステム・アクティビティが表現されるように試行錯誤しながら、その値を小さくします。

cpcプローブ

cpcプロバイダによって使用可能になるプローブは、次のプローブ記述形式になります:
cpc:::<event name>-<mode>-<count>
プローブ名の構成要素の定義を表に示します。

表8-6 プローブ名の構成要素

構成要素 内容
event name プラットフォーム固有または汎用のイベント名。
mode イベントをカウントするための特権モード。有効なモードは、ユーザー・モード・イベントに対するuser、カーネル・モード・イベントに対するkernel、ユーザー・モードとカーネル・モードの両方のイベントに対するallです。
count CPUに対してプローブが起動されるまでに、そのCPUで発生する必要があるイベントの数。このカウントは構成可能な値です。カウント値が大きすぎると、プローブの起動頻度が少なくなり、統計の信頼性が低下します。カウント値が小さすぎると、プローブの起動が頻繁になりすぎて、システムはトレース・アクティビティで溢れてしまいます。カウント値を選択するときには、大きな値から始めて、より正確な統計が得られるようになるまで値を小さくしていきます。

CPCプローブをリストすると、プローブのリストにカウント値の例が表示されます。このカウント値は、ガイドラインとして不自然に大きく設定されています。

cpcプローブの引数

次の表に、cpcプローブの引数の型を示します。

表8-7 プローブの引数

arg0 プローブの起動時点でのカーネル内のプログラム・カウンタ(PC)。プローブの起動時点で現在のプロセスがカーネルで実行されていなかった場合は0
arg1 プローブの起動時点でのユーザーレベル・プロセスのPC。プローブの起動時点で現在のプロセスがカーネルで実行されていなかった場合は0

説明が示すように、arg0がゼロ以外の場合、arg1はゼロになり、arg0がゼロの場合、arg1はゼロ以外になります。

cpcの例

次の例は、cpcプロバイダによって公開されるプローブの使用を示しています。

cycles-all-50000000

この例では、カウント値50000000でパフォーマンス・カウンタ・プローブをトリガーするプロセス名ごとにカウントを実行します。

cpc:::cycles-all-50000000
 {
         @[execname] = count();
 }

cpcの安定性

cpcプロバイダは、DTraceの安定性メカニズムを使用してその安定性を記述します。これらの値を、次の表に示します。

要素 名前の安定性 データの安定性 依存クラス

プロバイダ

発展中

発展中

共通

モジュール

非公開

非公開

不明

関数

非公開

非公開

不明

名前

発展中

発展中

CPU

引数

発展中

発展中

共通