web-dev-qa-db-ja.com

上位の平均負荷と合計%CPU

稼働時間による平均負荷と、最上位(#9列)で実行中のすべてのプロセスの%CPUの合計が一致するはずだと思いました。しかし、それは真実ではないようです。これが私の小さな実験です:

1台のサーバー:

$ top -b -n 1| awk '{ totuse = totuse + $9 } END { print totuse/100 }'; uptime

6.29

22:00:59 up 28 days,  7:03,  9 users,  load average: 7.03, 5.81, 4.51`

別のサーバーの場合:

$ top -b -n 1| awk '{ totuse = totuse + $9 } END { print totuse/100 }'; uptime

4.93

22:01:37 up 29 days,  8:27, 17 users,  load average: 18.83, 16.01, 13.86`

では、なぜこの2つの違いがあるのでしょうか。 CPUの使用状況を本当に反映しているのはどれですか?

実行中のプロセスが使用しているCPU使用率を評価しようとすると、これは良い方法ですか。

top -b -n 1 | grep "tim"| awk '{ totuse = totuse + $9 } END { print totuse/100 }'

ありがとう、よろしく!

2
Tim

CPU%と負荷平均が一致しない理由は、これらが2つの完全に異なる値であるためです。 CPU%はまさにそれであり、プロセスが使用しているCPUのパーセンテージです。負荷平均は、1分、5分、および15分にわたる実行キュー内のプロセスの加重平均です。

使用しているCPUの量が心配な場合(CPUを完全に使用していますか)、topの出力の集計はうまく機能します。それを時々実行して値を記録することができます(またはsarを使用すると、それが自動的に行われます)。

負荷平均が高いということは、実行キューに多くのプロセスがあることを意味します。多くのプロセスが準備ができており、実行を待機しています。高負荷は、自動的に多くのCPU使用率を意味するわけではありません。

ウィキペディアには、負荷平均、およびCPU負荷とCPU使用率の違いについて説明した優れた記事があります。 http://en.wikipedia.org/wiki/Load_Average

9
baumgart