ハイパースレッディング対応システム上のCPU番号
-
20-09-2019 - |
質問
私は、OS(WindowsやLinux)は、ハイパースレッディングが有効な環境での論理CPUに番号を割り当てる方法を見つけるためにしようとしています。 ?
のOSの両方が最初のシリアル物理CPUに番号を割り当て、論理CPUに番号を開始するか、他のいくつかのルールが続いているん..?例えばハイパースレッディングを有する2つの物理CPUシステムでは、OSは、第一物理CPU及び第2の物理CPUに1,3に番号0,2を割り当てませんか..?
の参照は本当にいただければ幸いです。
事前に感謝します。
よろしく、-Jayます。
編集:アランの質問への対応:私は私の仕事では、私は、コンテキスト・スイッチを避けるために、特定のCPUにさまざまなスレッドをバインドする必要があり、ので、このことを知っておく必要があり、私は特定のタスク(スレッド)EM <にバインドされていることを確認します>別のの物理CPU。おかげ
解決
私が知っているから、それはCPUが彼のコアを公開する方法によって異なります。 HTを有効にすると、何もさらさ物理CPUが、物理CPUごとにではなく二つの論理CPUが存在しないので、あなたはどちらかの論理CPU上でスレッドを実行する場合に違いはありません。問題ありません唯一のことは、論理CPUのペアがそれぞれの物理CPUに属しているものです。
シングルコアプロセッサ(HTを搭載したPentium 4のように)、あなたは唯一のペアを持っているので、それは、かなりまっすぐ進むのです - それはだ(0、1)。 (Nehalemのような)クワッドコアプロセッサと、論理コア対は(0,4)、(1,5)、(2,6)及び(3,7)です。さらに多くのコアを有し、将来のCPUをスケーリングshuold次いで、全ての第2半部を有する各対のすべての最初の半分を有するパターン
あなたはペアの配置を知っている必要がありますなぜ本当の問題はありますか? OSのスケジューラは、右のスレッドのために右のコアを選ぶみましょう - それはかなりまともな仕事をしていません。
。他のヒント
あなたはCPUの情報を見つけるために/sys/devices/system/cpu/
で見ることができます。コアおよびそのハイパースレッドペアのレイアウトは/sys/devices/system/cpu/cpuN/topology/thread_siblings_list
に見出すことができる。