3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

Windowsサーバのパフォーマンス測定

Windowsサーバの負荷状態を調べるために、パフォーマンスモニタ(パフォーマンスカウンタとも言う)でチェックすることになりました。

とりあえず調査したいのはサーバ全体(特定のプロセスとかではない)での CPU,メモリ,HDD I/O,ネットワークI/O の負荷です。

●CPU

まずCPU負荷をみるための項目です。

Processor\%Processor Time

これはタスクマネージャのCPU使用率と同義です。

正確には「プロセッサがアイドル以外のスレッドを実行するために使用した経過時間の割合をパーセントで表示します。」という意味のようですね。

85%を超えるようだとボトルネックの可能性があるようです。

値の上限は複数CPU選んでも、100(100%)のようです。

Processor\%Interrupts/Sec

これは1秒当たりのハードウェア割り込み回数を表します。

この値が普段より大きい場合は、ハードウェア割り込みが頻発し、そっちにCPUリソースを取られている可能性があるようです。

怪しいデバイスドライバを無効にして、どのデバイスドライバが原因か突き止めないといけませんね。

System\Processor Queue Length

CPU処理を待つスレッド数を表します。

継続して 2 以上の値になっている場合、プロセッサがボトルネックの原因の可能性があるようです。

●メモリ

Memory\Available MBytes

物理メモリの空き領域です。足りないとスラッシングになってしまい、激しくパフォーマンスが低下します。

使用可能のメモリが最低 4 MB または 5% 以上であることが望ましいようです。

Memory\Page/sec

ハードページフォルトの1秒あたりの回数です。

これが起きるとHDD上のページファイルにアクセス(ページング)が発生してます。

多発(20を超える)してる場合は物理メモリが足りてない可能性がありますね。

Memory\Committed Bytes

システム全体で利用されているメモリの使用量(HDD上のページファイル含む)です。

OSで設定してる仮想メモリサイズに限りなく近づいてるとまずいですね。

●HDD I/O

Physical Disk\%Disk Time

ディスクアクセス時にビジーだった時の割合、つまり、ディスクからの読み取り、書き込みを含むアクセス時間の割合です。

MSによると、「常に数値が 80 % 以上の場合、メモリリークの可能性がある。」だそうです。

しかし、参考サイトによると「ただし、この値が高い場合でも、必ずしもディスクがボトルネックというわけではない。例えば、低速なネットワークを利用している場合、ディスクから効率よくデータを読み書きできなくなる。」とのことです。

ディスクの不調という原因も考えられるようですね。

Physical Disk\Current Disk Queue Length

ディスクへのアクセス待ち要求数です。

継続して2つ以上のアクセス待ちがある場合はボトルネックの可能性が高いようです。

注意点として、参考先には「なお、このカウンタをすべてのディスクで計測すると、すべてのディスクでのアクセス待ち数が表示されるので注意してほしい。例えば、4つのディスクでそれぞれ1つずつアクセス待ちがあれば、Current Disk Queue Lengthカウンタには「4」という値が出力される。」とありました。

PhysicalDisk\% Read/sec,PhysicalDisk\% Writes/sec

ディスクの読み込み、書き込み速度になります。

最近の一般的なHDDなら70-100くらいはあるんじゃないでしょうか。RAIDを組んで、サーバ用の高速HDDだともっと速いかもしれません。

●ネットワーク I/O

Network Segment\%Net Utilization

ネットワークの利用率です。高いならより高速なNIC、ネットワークインフラに変更することを検討した方がいいかもしれません。

Ethernetネットワークでは30%以上はボトルネックと判断するようです。

Network Interface\Bytes Total/Sec

NICの1秒間の送受信バイト数です。

ネットワーク利用が増えるとハードウェア割り込みが増えるので、Interruptsカウンタや、Processor Timeカウンタが増えるようです

Network Interface\Packets/sec

NICの1秒間の送受信パケット数です。

Bytes Total/Secと合わせてみることで、サイズの大きいパケットが多いのかどうかを調べることができますね。

参考:

パフォーマンスモニタ徹底攻略マニュアル[2]パフォーマンスモニタの見極めポイント : Windows Server - Computerworld.jp

Windowsパフォーマンスモニタ

MS:パフォーマンスカウンタ クイック ガイド

3流プログラマのメモ書き : Google Desktop でシステムモニタガジェットを追加するとCPU使用率が上がる(前編) Processor \ % Processor Time と Process \ % Processor Time の違いにご注意。後者はコア数が増えると上限が200%とか400%とかなります。

3流プログラマのメモ書き : メモリ使用量の調査。用語メモ書き… メモリについてはこっちの方が若干詳しく書いてます。

TechNet:パフォーマンス データを分析する しきい値等詳しく載っています。