Windowsの性能監視

■はじめに
 OSに依存しない定期監視はMRTGの方がはるかに楽。
 MRTG導入の為のエビデンスという位置づけ。

MRTGは、少なくともDebian/CentOS、WindowsXPHome/XPPro/2003/2008/2008R2に入れた経験がある。
※WebはすべてApache系
 Windows版のActivePerlのバージョンに悩まされるほどの機能は使っていない。
 念のため、最新版と一つ前のバージョン、x86、x64のバージョン位は準備するべきだが。。。

■Windows XP/2003/2008/2008R2の性能監視

 参考URL
 http://www.atmarkit.co.jp/fwin2k/win2ktips/1235typeperf/typeperf.html

 Windowsの管理ツールであるパフォーマンスモニタは見にくい。
 MSでさえコロコロ変えるようなGUIのカスタマイズは行わない。
 基本の管理を行い、確認したい項目が出たら詳細を見るという方針とする。
 typeperfプロセスを常駐してもゾンビ化する事があるので、
 定期的な監視なら、前述のMRTGを導入するべき。

■パフォーマンスカウンタで追加する際にカウンタの名前は見れるが、
 以下コマンドでカウンタ名を指定しなければ、一覧表示される。

> typeperf -qx

■余談だが、linuxにもtypeperfコマンドはある。
 debianやSolaris、BSD系ならsarを使う。

■debianの場合はsysstatに含まれる。グラフ作成ツールもある。

$ apt-cache search sysstat
isag - sysstat 用の対話式なシステム動作グラフ作成
sysstat - sar、iostat および mpstat - Linux 用システム性能ツール

 参考URL
 http://www.atmarkit.co.jp/fwin2k/win2ktips/1346loadave/loadave.html

■現在のステータス
 既に仮想メモリ(スワップ)を使用しており、メモリ不足が読み取れる。

> systeminfo | find "AMD"
[01]: AMD64 Family 15 Model 79 Stepping 2 AuthenticAMD 2412 Mhz

 デュアルコアだが、

> systeminfo | find "メモリ"
物理メモリの合計: 1,023 MB
利用できる物理メモリ: 73 MB
仮想メモリ: 最大サイズ: 9,215 MB
仮想メモリ: 利用可能: 7,963 MB
仮想メモリ: 使用中: 1,252 MB

■CPU使用率
 各CPU毎にも出せるが、データ量はxコア数となる。
 また、ヘルプに出ない程度のワイルドカードは使える。
 100%のピークタイムを知りたいだけなら、「\% Processor Time」で充分。

★ヘルプを見る

> typeperf /?

★個別のCPU使用率を見る場合

> typeperf "\Processor(?)\% Processor time"

★個別のCPU使用率とTotalを見る場合

> typeperf "\Processor(*)\% Processor time"

> typeperf -qx Processor | find "Total"
\Processor(_Total)\% Processor Time
\Processor(_Total)\% User Time
\Processor(_Total)\% Privileged Time
\Processor(_Total)\Interrupts/sec
\Processor(_Total)\% DPC Time
\Processor(_Total)\% Interrupt Time
\Processor(_Total)\DPCs Queued/sec
\Processor(_Total)\DPC Rate
\Processor(_Total)\% Idle Time
\Processor(_Total)\% C1 Time
\Processor(_Total)\% C2 Time
\Processor(_Total)\% C3 Time
\Processor(_Total)\C1 Transitions/sec
\Processor(_Total)\C2 Transitions/sec
\Processor(_Total)\C3 Transitions/sec

■メモリの空き容量
 空き容量は平均で充分。単位はMBを選択。

> typeperf -qx Memory | find "Available"
\Memory\Available Bytes
\Memory\Available KBytes
\Memory\Available MBytes

■ディスクアクセス
 全ディスクの転送/読み込み/書き込みの平均を見る。
 ※この状態では問題があるディスクの特定は出来ない。

> typeperf -qx PhysicalDisk | find /i "total" | find /i "av"
\PhysicalDisk(_Total)\Avg. Disk Queue Length
\PhysicalDisk(_Total)\Avg. Disk Read Queue Length
\PhysicalDisk(_Total)\Avg. Disk Write Queue Length
\PhysicalDisk(_Total)\Avg. Disk sec/Transfer
\PhysicalDisk(_Total)\Avg. Disk sec/Read
\PhysicalDisk(_Total)\Avg. Disk sec/Write
\PhysicalDisk(_Total)\Avg. Disk Bytes/Transfer
\PhysicalDisk(_Total)\Avg. Disk Bytes/Read
\PhysicalDisk(_Total)\Avg. Disk Bytes/Write

■ディスク全体の平均値(バイト単位)
 下記は実際は一行。

> typeperf "\PhysicalDisk(_Total)\Avg. Disk Bytes/Transfer"
"\PhysicalDisk(_Total)\Avg. Disk Bytes/Read" "\PhysicalDisk(_Total)\Avg. Disk Bytes/Write"

 ※下記のようにしたいところだが、そこまで賢くは無い。
 typeperf "\PhysicalDisk(_Total)\Avg. Disk Bytes/*"