「複数CPUならload averageはCPU数で割れ」は正しいか?(つづき)

【この記事の所要時間 : 約 2 分

「複数CPUならload averageはCPU数で割れ」は正しいか?

CPU数の分だけ待ち行列が用意されていて、load averageの表示はそれらの合計を表示している。

というようなエントリーを以前書いたが、関連する記事を見つけたので勉強のために読んでみる。
マルチコア時代のロードアベレージの見方

* top や sar がデフォルトで示すCPU使用率はCPU数(コア数)で割り算をしている。各CPUごとに値を保持している。
* ロードアベレージは割り算をしていない。各CPU(ランキュー)ごとに値を保持するのではなく、システム全体で一つ。
* 4CPU ならロードアベレージ 4.00 まで OK、は鵜呑みにしないほうがよさそう。状況によって異なるのでその他の指標も使って細かく統計を分析したほうがよい。
o nr_running > 1 のときはロードバランスが適切に働く。そのため 4CPU なら 4.00 で割れ、というのは負荷があるときはそれなりに正しい。
* ランキューに溜まってるタスク数が CPU 毎に見れたらいいのだけど、現時点のカーネルの実装では難しい。(全体のは sar -q で見れます。)

ということで、負荷があってCPUが均等に分散される場合は「ロードアベレージは CPU で割れ」というのは正しいが、そうじゃない場合はよくわからないみたい。CPU ロードバランス機能の問題っぽい。
「複数CPUならload averageはCPU数で割れ」は正しいか?の回答は、無条件では正しいとは言えないが、条件つきで正しいと言えるというのが現状の理解かな。

プログラムはなぜ動くのか ― 知っておきたいプログラミングの基礎知識
矢沢 久雄 日経ソフトウエア
日経BP出版センター
売り上げランキング: 256,217
スポンサーリンク
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
レクタングル(大)広告

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です