EN JA
PERFMON(4) (i386)
PERFMON(4) FreeBSD Kernel Interfaces Manual (i386) PERFMON(4)

名称

perfmonCPU 性能をモニタするインタフェース

書式

cpu I586_CPU
cpu 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 ドライバは、 Garrett A. Wollman, MIT Laboratory for Computer Science によって書かれました。
March 26, 1996 FreeBSD