実行待ちプロセスと Load Average

CPUバウンドの処理がコア数以上に実行され、実行中+実行待ちのプロセスがコア数以上に積み上がった場合、CPU利用率は当然100%になるわけだが、Load Average はどうなんだっけと思って確認してみた。
適当に無限ループで簡単な計算を走らせるプロセスを、コア数以上上げてみる。
vmstat では、rの数が立ち上げたプロセス数に等しかったので、きっと Load Average は実行中+実行待ちのプロセス数に等しいのだろう。
但し、ganglia で Load Average をみてみると、グラフの最大値がコア数になっていて、Load Average は最大値に張り付いている状態だった。これはきっとグラフの仕様の問題だろう。
商用環境のcactiを見てみたら、負荷がかかってる時はコア数以上に Load Average が上がってるようだった。

つまり、

Load Average = TASK_RUNNABLE なプロセス数 = 実行中 + 実行待ち = CPU利用率×コア数 + α

実行待ちのプロセス数(α)はCPU利用率等には出ない。Load Average から CPU利用率×コア数 を引けば分かるだろう。