サーバの監視で真っ先に確認する項目がロードアベレージで、
このロードアベレージが一体何を意味しているのか?を調べてみた。
O'Reilly Japan - 詳解 システム・パフォーマンスの234ページのCPUの章にて、
ロードアベレージは、CPUリソースに対する需要を示す指標と記載されている。
これだとよくわからないので、もう少し読み進めてみると、
実行中のスレッド(使用率)と実行されるのを待ってキューイングされている(飽和)の合計数から計算される。
※キューは実行待ちの処理
ロードアベレージはuptimeコマンドで確認できるとのことなので、早速実行してみると、
$ uptime 11:58:59 up 3:11, 1 user, load average: 0.47, 0.39, 0.38
load averageの右側に実数が3個並んだ結果が返ってきた。
左から1分、5分、15分のロードアベレージを表示しているらしい。
ロードアベレージの方がCPUの数よりも高ければ、スレッドを処理するCPUが足りておらず、一部のスレッドが待っていると捉えれば良い。
ロードアベレージがCPU数よりも小さければ、(おそらく)CPUに余裕があり、スレッドはほしいときにCPUを活用できる。
uptimeを実行したマシンは2コア2スレッドのCPUを使用しているので、
論理的にCPUを4としてカウントできるため、
ロードアベレージの結果が0.47であれば、
まだまだ余裕があると判断して良いということになるだろう。
※マルチコアの場合は見方が変わるという話もあるが、この場では触れないことにしておく。