tail head cat sleep
QR code linking to this page

manページ  — PERFMON

名称

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

内容

書式

cpu amp;"I586_CPUamp;" cpu amp;"I686_CPUamp;" options PERFMON

解説

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

性能モニタリングをするカウンタへの全てのアクセスは デバイス型特殊ファイルの " /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() コマンドの使用を具体的に例示したサンプルのソースコード

関連項目

ioctl(2)

Intel Corporation, Pentium Pro Family Developer's Manual, Operating System Writer's Manual, vol. 3, January 1996.

インテルジャパン株式会社, Pentium Pro ファミリー ディベロッパーズ マニュアル, オペレーティング システム ライターズ マニュアル, 下巻, January 1996.

歴史

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

作者

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

FreeBSD 2.2 PERFMON (4) March 26, 1996

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.