リソースモニタなどでCPUをモニタリングする指標として、Load AverageとCPU Utilization(使用率)がありますが、
それぞれどういう意味か曖昧になっていたので調べてみました。
- Load Averageは実行キューのプロセス数とI/Oなどでシグナル受信不可(uninterruptible)のプロセス数の合計
- BSD系のカーネルはuninterruptibleなプロセスは含まないらしい
-
/proc/loadavg
から1,5,15分の平均プロセス数が取得できる - この数がCPUのコア数より多いと、実行中なのにCPU時間が割り当てられていないプロセスが存在する→パフォーマンス低下
- CPU使用率が100%未満でも、I/O待ちのプロセスが多いとLoad Averageが上がる
- 同じCPU使用率100%でも、コア数が違うとかかっている負荷が違う。Load Averageはコア数が違っても同じ値を示すので、より直接的に負荷の量を表す。
参考
http://stackoverflow.com/questions/21617500/understanding-load-average-vs-cpu-usage
http://en.wikipedia.org/wiki/Load_(computing)#Unix-style_load_calculation