ハイパースレッディングの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が同等な立場で処理を分担するマルチプロセッサ手法。