※ ChatGPTを利用し、要約された質問です(原文:linuxマルチコアCPU環境においてコアの使われ方について)
LinuxマルチコアCPU環境でのコアの使われ方について
このQ&Aのポイント
LinuxマルチコアCPU環境において、各プロセスの処理には複数のコアが効果的に利用されているのかどうかについて知りたいです。
投稿した画像の色がついている4つの矢印は、DB接続クライアントがmysqlに投げているSQL文をイメージしており、Kernelが複数のコアの中からクエリを処理するCPUコアを選択するロジックについて知りたいです。
具体的には、Kernelが未使用のCPUコアを都度選んで1クエリの処理を担当しているのか、あるいは4つのクエリに対して4つのCPUコアを均等に分散させて処理しているのかを知りたいです。
linuxマルチコアCPU環境においてコアの使われ方について
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コアをラウンドロビン分散させて処理させている。
⇒コアが処理する数は均等になる
++++++++++++++++++++++++++++++++++++++++++++++++
どなたか、私の疑問についてご存知でしたらご教授いただけますでしょうか。
よろしくお願します。
お礼
Murasan759 さん ご回答ありがとうございます。 回答いただいた内容をもとに、 「kernel2.6 スケジューラ」というkeywordでgoogle検索したところ、 このページに行き着き、 http://d.hatena.ne.jp/takaochan/20071206/1196951498 さらに、「O(1)スケジューラ」という keywordでgoogle検索したところ、 このページにたどり着きました。 http://www.itmedia.co.jp/enterprise/articles/0406/11/news001.html さらに、さらに、itmediaの記事の中で「CPUごとのRUNキュー」 というセクションがありましたので、 「RUNキュー」でgoogle検索したところ、 以下のページにたどりつきました。 http://www.nces.is.nagoya-u.ac.jp/NEXCESS/blog/index.php?itemid=240 これで知りたいことの大体は理解できました。 ただ、実際のところ、このロジック通りに、 たとえば4コアある環境で、 「マルチプロセッサシステムに対応したLinuxでは,CPUごとにこのRUNキューを持ちます.そして, RUNキュー間で負荷状態に偏りが出たときは、RUNキュー間で実行待ちプロセスのマイグレートを行い,バランスを取ります.→ロードバランス」 このようにコアのロードバランスがうまくされているのか? について深追いしたいとなった場合、やはり、実環境で調べてみるしかないのでしょうか??