Search on the blog

2016年6月25日土曜日

load averageとは

load averageとは?
  • load = システムが実行しているワークの単位。CPUリソースを使用している or CPUリソースを待っているプロセスの数。
  • load average = ある時間単位でのloadの平均。
確認方法
uptimeコマンドで。左から、直近1min, 直近5min, 直近15minのload average。
$ uptime
 0:51  up 1 day, 46 mins, 3 users, load averages: 2.05 1.87 2.10

数字が意味するものは?
シングルコアシステムの場合
 load average 2.50 = 1.50個のプロセスがCPUの空きを待っている。

 load average 0.70 = CPUは30%の時間でアイドル状態にある。

マルチコアシステムの場合
例: CPU4つの場合
load average 4.00 = 4つの異なるプロセスが4つの異なるCPUを使っている。

ということで、load averageがCPU数を超えるとヤバイ状態である。

CPU使用率との違い
シングルコアシステムでCPU使用率が100%というとヤバそうに聞こえる。
しかし、これだけだとシステムがヤバイ状態かどうなのかは何とも言えない。

例えばシステムで計算の多いバッチ処理を回していて、このバッチ以外には実行すべきプロセスがない場合。
CPU使用率100%、load average = 1。
これはバッチがCPUリソースを使えるだけ使って計算しているという状態で、ヤバくはない。

これに対して、webアプリケーションなどイベントドリブン系のシステムで、処理すべきイベントが多発したとき。
CPU使用率100%、load average = 5。
これはヤバい。平均して4つのプロセスが待ち状態にあるということなので、システムのスペックアップを考えた方がよい。

あと、CPU利用率は低いけど、load averageは大きいというパターン。
CPU使用率10%、load average = 10。
IOで処理が詰まってCPUリソースが使えてませんという状態。ボトルネックになっているIOを見つけましょう!という状態。もしくはCPUのコア数多いから減らしてもいいんじゃないという状態。

0 件のコメント:

コメントを投稿