loadavg


サーバの監視で真っ先に確認する項目がロードアベレージで、

このロードアベレージが一体何を意味しているのか?を調べてみた。


O'Reilly Japan - 詳解 システム・パフォーマンスの234ページのCPUの章にて、

ロードアベレージは、CPUリソースに対する需要を示す指標と記載されている。

これだとよくわからないので、もう少し読み進めてみると、


実行中のスレッド(使用率)と実行されるのを待ってキューイングされている(飽和)の合計数から計算される。

※キューは実行待ちの処理

キュー(コンピュータ) - Wikipedia


ロードアベレージは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であれば、

まだまだ余裕があると判断して良いということになるだろう。

※マルチコアの場合は見方が変わるという話もあるが、この場では触れないことにしておく。