Last Updated 2003/11/06
Programming Tips Windows95系  索 引 
CPU使用率(パフォーマンスモニタ)
2003/11/06

Performance Monitor はレジストリ(HKEY_DYN_DATA\PerfStat\StatData)を見ている.
このノードの KERNEL\CPUUsage の値を Get すれば CPU の使用率が分かる.
(単位は多分 %)
ここのデータはいろんな形式で挙げられている可能性があり,複雑なので確信はもてない.

HKEY_DYN_DATA は WindowsNT4.0 の RegEdit で見ても存在しないのでここに OS による違いが発生している.

HKEY_DYN_DATA はレジストリの他の部分とは異なり,ハードディスクではなく RAM に構築されている.(アクセス速度を稼ぐ項目についてはここに書かれる)


KERNEL\CPUUsage というキーワードは,前半 "KERNEL" が、Performance Monitor の「項目の追加」ダイアログに現れる「グループ名」(システム内部では Server とか Server Node Name と呼ばれている),後半の "CPUUsage" が、同ダイアログの「項目名」(同じく Stat とか Stat Node Name) に該当する.

Server とは,Performance Data を提供するプログラムである.システム内部で,いろんなプログラムが Performance Data を提供する事がある.(但しその方法は非公開)
任意の Server は,複数の Performance Data を提供する事が出来る.
Server 名で「誰」を識別し,Stat 名で Data 項目を識別する.
(MSJ 1995/12 参照)


システムにある Server の一覧を 列挙するには,HKEY_DYN_DATA の PerfStat\StartSrv または PerfStat\StopSrv のノードの 各 Keyword を Enum するらしい.
このノードの各 Keyword の実際の値は重要ではなく,Keyword の名前自体が,Server 名となる.システムにどんな Server が存在するかはハードウェア環境によって異なる.

Performance Monitor が表示する各グループの名称・各測定項目の説明などの "表示文字列"は,
HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\PerfStat\Enum\
に格納されている.

Performance Monitor で「表示する」と設定したものは,
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\System Monitor\STATS\STATx
に保管されている.
STATx の x は1から始まる連番であり,STAT1 は最初のグラフとなる.

HKEY_DYN_DATA を参照するには注意が必要である.

システム内部の Performance Data の Put の仕方の概念は,「アプリケーションがHKEY_DYN_DATA の特定部分を参照したり列挙した時に反映する」ことになっている.
(誰も参照しないなら Performance Data を更新する必要はないという判断でオーバーヘッドを少なくしている)
では,実際にすべての Performance Data がそうなっているかというとそうではなく,各 Server の実装に依存する.
CPUUsage に関しては「CPU の使用率が上がるので問題を解析する時以外は CPUUsage を表示させない」という配慮が求められる.


HKEY_DYN_DATA(0x80000006)
RegOpenKey(HKEY_DYN_DATA, "PerfStats\StatData", "KERNEL\CPUUsage")


参照
前後のTips
CPU使用率(パフォーマンスモニタ)

DSS ProgrammingTipsCGI Ver2.02