web-dev-qa-db-ja.com

マルチコアシステムでは、各CPUに独自のLinuxカーネルがありますか?

つまり、「n」個のCPUを搭載したマルチコアシステムでは、各CPUに独自のLinuxカーネルがインストールされるのでしょうか、それともすべてのCPUに同じカーネルイメージのコピーが含まれるのでしょうか。

マルチコアに関するもう1つの質問は、カーネルトレースです。トレースはカーネルレベルで機能するので、各CPUに対して個別にトレースを実行する必要がありますか、それともすべてのCPUをまとめてカーネルトレースを全体として実行できますか?

2
tracemein

すべてのCPUは同じメモリシステムを共有し、Linuxのコピーは1つしかロードされていません。実行中の各プロセスには独自のスタックがありますが、これはシングルCPUシステムにも当てはまります。

Straceは個々のPIDで機能すると私が信じているptraceを介して実装されているので、これは単一のスレッドの実行のみをトレースすることを意味すると思います。

7
DigitalRoss

ご回答ありがとうございます。私は自分で少し調べたところ、どちらもマルチコアシステムで可能であることがわかりました。 SMPマルチコアシステムには、すべてのコアに対して単一のLinuxカーネルがありますが、AMPマルチコアシステムと同様に、各コアには独自のカーネルがあります。通常、一部のマルチコアには、AMPがリアルタイムの重要なタスクを実行するためのコアがいくつかあり、残りはSMPが重要ではない通常のタスクを実行します。

私が尋ねた質問は、カーネルトレースについてです。現在、ほとんどのカーネルには、カーネル開発者がカーネルのパフォーマンスに関する情報を取得できるようにするkprobeが組み込まれています。最初の質問への答えもこの質問を解決すると思います。 SMPでは、カーネルの単一のトレースが生成されますが、AMPの場合と同様に、CPUの数と同じ数のトレースが生成されます。

AMPは非対称型マルチプロセッシングの略で、SMPは対称型マルチプロセッシングの略です。

0
tracemein

1つのカーネルイメージがあり、コードのセクションがコア/ CPUの数にわたって実行されます。これは、カーネルスイッチ/コンパイル方法によって異なります。

カーネルトレースに関連して、まだ1つのトレースがあります!

同じ単一のカーネルが複数のCPU /コアによって実行されることを忘れないでください...

これがお役に立てば幸いです、よろしく、トム。

0
t0mm13b