PERFMON(4) | FreeBSD Kernel Interfaces Manual (i386) | PERFMON(4) |
名称
perfmon — CPU 性能をモニタするインタフェース書式
cpu I586_CPUcpu I686_CPU
options PERFMON
解説
perfmon ドライバは、 Intel Pentium と Pentium Pro CPU の内部の性能をモニタする機能へのアクセスを提供します。これらのプロセッサは、クロックサイクルをカウントするサイクルカウンタと同様に、カウントまたは (CPU サイクルの) 持続時間のいずれかのためのさまざまなイベントを測定するために設定することができる 2 つの内部カウンタを実装しています。 perfmon ドライバは、これらの機能へのデバイス形式のインタフェースを提供しています。性能をモニタするカウンタへのすべてのアクセスは、特殊デバイスファイル“ /dev/perfmon”を通して実行されます。このデバイスは、 Pentium と Pentium Pro プロセッサの両方のためのさまざまなカウンタの定義とともに < machine/perfmon.h> で定義された多くの ioctl(2) 要求をサポートしています。
注意事項: 利用可能なイベントの組は、プロセッサ毎に異なります。使用されるイベント番号が測定されている 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
- 読み込むためのカウンタの数。
-
quad_t 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() コマンドを使用する実例のサンプルのソースコード
関連項目
ioctl(2), hwpmc(4) Intel Corporation, Pentium Pro Family Developer's Manual, vol. 3, January 1996, Operating System Writer's Manual.歴史
perfmon デバイスは、 FreeBSD 2.2 ではじめて登場しました。作者
perfmon ドライバは、 , MIT Laboratory for Computer Science によって書かれました。March 26, 1996 | FreeBSD |