複数CPUのロードアベレージ

ハイパースレッディングのCPUが2個だと 2*2=4の値を超えない程度に収まるのが適正?

http://www.thinkit.co.jp/free/article/0609/5/8/

CPUの状態を確認

次に、CPUの状態を確認します。まずOSが認識しているCPUの個数を確認します。CPUの個数は、/proc/cpuinfoを参照し、その出力に含まれる「processor」という文字列をgrepで検索すれば確認できます。コマンドとしては以下のようになります。


# cat /proc/cpuinfo | grep processor

上記ではこの出力が4行にわたって表示されていることから、4CPUのマシンとして認識されていることがわかります。もしIntelのハイパースレッディングが有効になっている場合は、物理CPUは2CPUで、それぞれのCPUのハイパースレッディング機能で4CPU見えることになります。

http://knowledge.livedoor.com/7776

カーネルによって話が若干違いますが、現在のSMPカーネルだと、CPU数の分だけ待ち行列が用意されていて、load averageの表示はそれらの合計を表示しています。したがって、2CPUの場合は2.0の基準で基本的には間違いありません。2.0を超えているということは、CPU内で平均的に待ちが生じていることになります。

仮に各CPUについての平均になっていれば、1.0ということになりますが、そうはなっていません。

ただし、このことは、CPUの数を倍に増やすとload averageが半分になるという意味ではありません。スケジューリングによって問題は変わってきます。また、load averageはCPUを観測しているものなので、性能評価指標のひとつにはなりますが、それだけで性能を測ることはできません。

信頼できるソースは、ぴったりよさそうなものはなかなかみつかりませんが、中野 彰郎さん@早大修論↓の3章に、しくみについてのわかりやすい説明があります。
http://dspace.wul.waseda.ac.jp/dspace/bitstream/20...

あとは、ソースコード関連だとlinux本家にはもちろんデータはありますが、該当部分のソースコードは、カーネルの知識とサンプリング→平均を換算する知識が必要でレベルが高いです。

SMP
http://e-words.jp/w/SMP.html

Symmetric Multiple Processor
「対称型マルチプロセッサ」の略。複数のCPUが同等な立場で処理を分担するマルチプロセッサ手法。