PERFMON

Section: Devices and Network Interfaces (4)
Updated: i386
索引 jman

BSD mandoc
FreeBSD 2.2  

索引

名称

perfmon - CPU の性能モニタリングをするインタフェース  

索引

書式

cpu I586_CPU cpu I686_CPU options PERFMON  

索引

解説

perfmon ドライバにより IntelPentiumPentium Pro の CPU 内部の性能モニタリング機能にアクセスできます。 これらのプロセッサには多彩なイベントについて発生回数または (CPU サイクルでの) 持続時間のどちらかを測定するように設定できる 2 個の内部カウンタと、同じくクロックサイクルを数える 1 個のサイクルカウンタが実装されています。 ドライバではこれらの機能に対してデバイス形式によるインタフェースを提供 します。

性能モニタリングをするカウンタへの全てのアクセスは デバイス型特殊ファイルの ``/dev/perfmon '' を媒介として処理されます。 このデバイスが提供する ioctl(2) リクエストは多くあり Aq Pa machine/perfmon.h の中で定義され、このファイルの中には PentiumPentium Pro プロセッサの両方の色々なカウンタの定義もあります。

注意事項: 利用可能なイベントの集合はプロセッサ毎に異なります。 使用されるイベントコードが測定される CPU の型式に対して 適正であることを確認することはプログラマの責任です。

以下の ioctl(2) リクエストが定義されています:

PMIOSETUP
(struct pmc ) 構造体に定義されているパラメータとフラグでカウンタを設定します。 以下のフィールドが struct pmc に定義されています:

int pmc_num
指定するカウンタ番号です。 NPMC (現在は 2) より小さくなければなりません。
u_char pmc_event
モニタすべき特定のイベントコードで、 Aq Pa 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
全ての Fn ioctl コマンドの使用を具体的に例示したサンプルのソースコード

 

索引

関連項目

ioctl(2)
Intel Corporation Pentium Pro Family Developer's Manual January 1996 vol. 3 Operating System Writer's Manual
インテルジャパン株式会社 Pentium Pro ファミリー ディベロッパーズ マニュアル January 1996 下巻 オペレーティング システム ライターズ マニュアル
 

索引

歴史

デバイスは Fx 2.2 で初めて現れました。  

索引

作者

ドライバは An Garrett A. Wollman , MIT Laboratory for Computer Science が書きました。


 

索引

Index

名称
書式
解説
関連ファイル
関連項目
歴史
作者

jman



Time: 07:07:23 GMT, January 12, 2009