プロが教えるわが家の防犯対策術!

linuxマルチコアCPU環境においてコアの使われ方について


マルチコアCPUがLinxu環境において(その他Linuxでないプラットフォームにおいても)、
実際に搭載されているCPUのコア数が正常にOSに認識されているというだけではなく、
各プロセスの処理に対して複数のコアが適宜効果的に利用されているのかどうか??
ということが知りたく、添付画像に私の疑問点をまとめてみました。

■ポイント
++++++++++++++++++++++++++++++++++++++++++++++++
投稿した画像の色がついている4つの矢印は1つ1つそれぞれがDB接続クライアントがmysqlに投げているSQL文(クエリ)をイメージしています。
Mysqlを起動させているlinux kernelは、このクエリを受け取り自身が管理しているCPUがマルチコアであった場合、どのようなロジックで複数のコアの中から4つのクエリを処理させるCPUコアを選択しているのでしょうか?

例)kernelが未使用のCPUコアを都度選んで1クエリの処理を担当するよう制御している
⇒コアによって処理する数は異なる

例)kernelが4つのクエリに対して4つのCPUコアをラウンドロビン分散させて処理させている。
⇒コアが処理する数は均等になる
++++++++++++++++++++++++++++++++++++++++++++++++

どなたか、私の疑問についてご存知でしたらご教授いただけますでしょうか。

よろしくお願します。

「linuxマルチコアCPU環境においてコ」の質問画像

A 回答 (1件)

カーネルバージョンによってスケジューリングが異なりますが、どのバージョンでも、無用なオーバーヘッド低減のために、プロセス単位でCPU時間を割り当てていたと思います。

    • good
    • 0
この回答へのお礼

Murasan759 さん
ご回答ありがとうございます。

回答いただいた内容をもとに、
「kernel2.6 スケジューラ」というkeywordでgoogle検索したところ、

このページに行き着き、
http://d.hatena.ne.jp/takaochan/20071206/1196951 …

さらに、「O(1)スケジューラ」という
keywordでgoogle検索したところ、


このページにたどり着きました。
http://www.itmedia.co.jp/enterprise/articles/040 …

さらに、さらに、itmediaの記事の中で「CPUごとのRUNキュー」
というセクションがありましたので、
「RUNキュー」でgoogle検索したところ、

以下のページにたどりつきました。
http://www.nces.is.nagoya-u.ac.jp/NEXCESS/blog/i …


これで知りたいことの大体は理解できました。

ただ、実際のところ、このロジック通りに、
たとえば4コアある環境で、

「マルチプロセッサシステムに対応したLinuxでは,CPUごとにこのRUNキューを持ちます.そして, RUNキュー間で負荷状態に偏りが出たときは、RUNキュー間で実行待ちプロセスのマイグレートを行い,バランスを取ります.→ロードバランス」

このようにコアのロードバランスがうまくされているのか?
について深追いしたいとなった場合、やはり、実環境で調べてみるしかないのでしょうか??

お礼日時:2010/03/10 13:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!