総合手引 | セクション 4 | オプション |
性能モニタリングをするカウンタへの全てのアクセスは デバイス型特殊ファイルの " /dev/perfmon" を媒介として処理されます。 このデバイスが提供する ioctl(2) リクエストは多くあり < machine/perfmon.h> の中で定義され、このファイルの中には Pentium と Pentium Pro プロセッサの両方の色々なカウンタの定義もあります。
注意事項: 利用可能なイベントの集合はプロセッサ毎に異なります。 使用されるイベントコードが測定される CPU の型式に対して 適正であることを確認することはプログラマの責任です。
以下の ioctl(2) リクエストが定義されています:
PMIOSETUP | (struct pmc) 構造体に定義されているパラメータとフラグでカウンタを設定します。 以下のフィールドが struct pmc に定義されています: |
int pmc_num | 指定するカウンタ番号です。 NPMC (現在は 2) より小さくなければなりません。 |
u_char pmc_event | モニタすべき特定のイベントコードで、 < machine/perfmon.h> に定義されています。 |
u_char pmc_unit | イベントの型に対応する装置のマスクの値です ( Intel の文書を参照)。 |
u_char pmc_flags | カウンタの働きを変更するフラグ (下記参照) です。 |
u_char pmc_mask | カウンタのマスクの値です。つまり、本来、この値は指定された数のクロック 以上 (又は以下) の間継続するイベントにカウントを制限する為に使用されるしきい値 です。 |
次のような pmc_flags の値が定義されています:
PMCF_USR | イベントをユーザモードでカウントします。 |
PMCF_OS | イベントをカーネルモードでカウントします。 |
PMCF_E | イベントを持続時間ではなくその数でカウントします。 |
PMCF_INV | カウンタのマスクの比較の意味を逆転します。 |
PMIOGET | (struct pmc) 指定されたカウンタの現在の設定を返します。 |
PMIOSTART
PMIOSTOP | |
(int) 指定したカウンタを起動 (停止) します。ハードウェアの欠陥により、番号順に 起動と停止をしなければなりません。 (即ち、カウンタ 0 は必ずまずカウンタ 1 を停止してから停止しなければなりません)。 ドライバではこの制約を 強制していません (と言うのも将来の CPU ではこの制約はなくなるかも知れません)。 | |
PMIORESET | (int) 指定されたカウンタを 0 にリセットします。カウンタはリセットする前に PMIOSTOP により停止されなければなりません。全てのカウンタは自動的に PMIOSETUP によってリセットされます。 |
PMIOREAD |
(struct pmc_data)
カウンタの現在の値を取り出します。
pmc_data
構造体には次のような 2 個のフィールドが定義されています:
|
int pmcd_num | 読み出すカウンタの番号。 |
int pmcd_value | 64 ビットの符号付き整数での終了値。 |
将来、 Pentium Pro プロセッサから カウンタを直接読み出す為に RDPMC 命令を使用出来る様になるでしょう。
PMIOTSTAMP |
(struct pmc_tstamp)
タイムスタンプカウンタを読み出します。
pmc_tstamp
構造体では 2 個のフィールドが定義されています:
|
int pmct_rate | カウンタの MHz でのおおよその速度です。 |
quad_t pmct_value | 64 ビット整数でのカウンタの現在の値です。 |
pmct_rate フィールドに与えられるカウンタの速度は、 校正が困難な事やクロックの進行が不完全な為に、 往々にして正確ではないことに注意する事が大切です。 このフィールドについては クロックが刻む速度を実際に表示するものというよりも 手がかりか又は適正さの検査くらいに考えるべきです。
/dev/perfmon | カウンタへの文字型デバイスのインタフェース |
/usr/include/machine/perfmon.h | 構造体とイベントコードを定義しているインクルードファイル |
/usr/share/examples/perfmon | 全ての ioctl() コマンドの使用を具体的に例示したサンプルのソースコード |
Pentium Pro Family Developer's Manual, Operating System Writer's Manual, vol. 3, January 1996.
,Pentium Pro ファミリー ディベロッパーズ マニュアル, オペレーティング システム ライターズ マニュアル, 下巻, January 1996.
,FreeBSD 2.2 | PERFMON (4) | March 26, 1996 |
総合手引 | セクション 4 | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.