Windows OSではロード・アベレージの値を表示させるコマンドは用意されていない。 ロード・アベレージの値を調べるには、パフォーマンス・モニタでProcessor Queue Lengthカウンタの値を調べる。ディスクのロード・アベレージはAvg. Disk Queue Lengthカウンタで得られる。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
対象OS:Windows XP / Windows Vista / Windows 7 / Windows Server 2003 / Windows Server 2008 / Windows Server 2008 R2
UNIXやLinuxなどのOSでは、システムの負荷状態を表すために「ロード・アベレージ」という指標がよく使われる(日本語にすると「CPU負荷の平均値」)。uptimeやw、topなどのコマンドでその値を確認できる。
これらのコマンドでは3つの数値が表示されているが、それぞれ、過去1分間、5分間、15分間のロード・アベレージ値の平均を表している。この値をチェックすることにより、例えば1以下ならば(0にほとんど近ければ)システムの負荷が非常に軽いが、常態的に5とか10を超えるようだと負荷が高いのでなんらかの対策が必要だろう、といった判断ができる*1。
*1 実際にシステムの負荷やパフォーマンスを判断するには、これ以外の指標(カウンタ)なども考慮する必要がある。例えば計算主体のプロセスばかりでロード・アベレージが10なら大した問題ではないが、メモリ不足でスラッシング(仮想記憶のページ・インとページ・アウトが多発している状態)が起こっている状態でロード・アベレージが5なら、何らかの対策が必要だろう。ページングに関するパフォーマンス・カウンタやディスク/ネットワーク・デバイスに関するカウンタなども調査する必要がある。
ロード・アベレージ値は、OS内で現在実行可能な状態にあるプロセスの数(プロセスの実行待ちキューの長さ*2)を表している。例えば実行中のプロセスが10個あり、そのほかのプロセスはすべてウェイト状態(自発的なスリープやI/O完了待ち、イベント待ちなど、すぐには実行しない状態)にあれば、ロード・アベレージ値は10となる。ただし実行待ちプロセスの数というのは瞬間的な値なので、実際には過去1分や5分、15分といった間隔で平均値を求め、それが表示されている。
*2 正確にいえば、プロセス数ではなくスレッド数。1つのプロセスの中には複数のスレッドが含まれており、CPUのコアにはこのスレッドが1つずつ割り当てられ、実行される。ロード・アベレージの一般的な説明では実行待ちのプロセス数などと呼ばれているので、ここではプロセス数とする。なお、UNIXやLinuxのロード・アベレージでは、実行待ちのプロセスだけでなく、現在CPUコア上で実行中のプロセスも合算してロード・アベレージを計算するのが一般的なようだが、後述のWindows OSの「Processor Queue Length」カウンタでは、実行中のプロセスは除外されるので、少し値が低くなる。
なお、このロード・アベレージは単純に実行待ちプロセスの数を表したものであり、CPUのコア数は考慮していない。そのため、例えばシングル・コアのシステムでロード・アベレージが5なら負荷が高いといえるが、16コアのシステムならば全体的なCPU使用率は約30%しかなく、十分余裕がある。コアごとの平均値(コア数で割った値)にしていないのは、単に歴史的な経緯からであろうが、この値について検討する場合は、コア数なども考慮する必要がある。
Windows OSではタスク・マネージャを使えばシステムの負荷を簡単に調べることができるが、ロード・アベレージ値を直接表示するコマンドやツールはない。だが、パフォーマンス・モニタを使ってプロセスの実行待ちキューの値を表示させれば、ロード・アベレージ・モニタとして利用できる。本TIPSでは、その方法について解説する。
タスク・マネージャではCPU使用率(もしくはコアごとの使用率)が%で表示されているが、これはロード・アベレージとは異なる。CPU使用率は、CPUがある単位時間内にどの程度利用されているか(プロセスを実行しているか)を示すもので、0〜100%の値を取る。CPUが常にプロセスを実行していれば100%となるが、実行待ち行列がいくら長くても100%までしか表示されない*3。CPU使用率が常に100%になっているようなシステムは性能に余裕がないことを表しているが、さらにロード・アベレージ値を調査することにより、システムの負荷の傾向を把握できる。例えば1日のうち、数時間だけロード・アベレージ値が(コア当たりで換算して)5とか10になる程度なら問題は少ないが、ほぼ24時間ずっと大きな値を示しているようなら、負荷の軽減(分散)やシステムの増強などを考える必要があるだろう。
*3 CPU使用率とロード・アベレージを例えば現実の飲食店で例えると、「店内にいる客数÷席数」がCPU使用率で、「店内の客数+外で行列待ちしている客数」がロード・アベレージに相当する(行列は必ず店外で起こるものとする)。
Copyright© Digital Advantage Corp. All Rights Reserved.