Windows Server とパフォーマンスモニタ

Windowsには、パフォーマンスモニタと呼ばれる、パフォーマンス監視ツールが標準で準備されている。
Windows Server等では、パフォーマンスモニタを利用して稼動統計を取得したり、負荷を計測するのが一般的だ。
ただし、パフォーマンスモニタには非常に多くのパフォーマンスオブジェクト、カウンタが用意されており、あまりにも分かりにくい。
そこで、主なカウンタ、logmanについてまとめてみた。

perfmonのカウンタについて

主なパフォーマンスオブジェクトとカウンタは以下の通り

パフォーマンスオブジェクト カウンタ 用途
memory available bytes 利用可能な物理メモリの容量
memory cache bytes システムキャッシュの使用量
network interface bytes received/sec インタフェース毎の受信量
network interface bytes sent/sec インタフェース毎の送信量
processor processor time CPUの使用率
process thread count 内部スレッドの数
process virtual bytes プロセスが使用している全メモリ量
process working set プロセスが使用している物理メモリ量
process private bytes プロセスが占有しているメモリ量

上記のうち、よく利用するものに、パフォーマンスオブジェクト「process」がある。
processを利用すると、プロセス毎にメモリ量を取得できる。
基本的にWebサーバであればWebインスタンス、DBサーバであればDBインスタンスがシステムの肝になるので、それぞれの統計を取得することはチューニングの上で非常に有用な情報となる。
(32bitOS上のOracleでは2GB制限を突破しないためにも必須)

ちなみにタスクマネージャからメモリ使用量、仮想メモリサイズが確認できるが、実はそれぞれ上記「Working set」「private bytes」の値となっている。
全メモリ量を確認するにはパフォーマンスモニタを使用するしかない。

logmanについて

パフォーマンスログの取得はGUI上からも設定できるが、logmanコマンドを利用してCUIで設定することもできる。
ちなみにログの繰り返し取得設定はlogmanを利用しないとできない[-rオプション]
(GUIからの設定方法があれば是非教えて)

基本的な使い方は「logman /?」にお譲りするとして、GUIツールに比べたlogmanの最大のメリットはなんといっても繰り返し設定が使用可能な事だろう。
作りやすいGUIからコレクションを作成し、logmanコマンドから繰り返し設定するのが最強だと思っている。

参考までに既存のコレクションを繰り返し設定に変更するlogmanコマンド

logman update コレクション名 -u 実行するユーザ名 パスワード -r
logman query コレクション名