9

ハイパースレッディングが有効な環境で、OS (Windows、Linux) が論理 CPU に番号を割り当てる方法を調べようとしています。?

両方の OS は、最初に物理 CPU にシリアル番号を割り当ててから、論理 CPU の番号付けを開始しますか、それとも他の規則に従っていますか? たとえば、ハイパースレッディングを備えた 2 つの物理 CPU システムでは、OS は番号 0,2 を最初の物理 CPU に割り当て、次に 1,3 を 2 番目の物理 CPU に割り当てますか?

どんな参考文献も本当に高く評価されます。

前もって感謝します。

よろしく、 -ジェイ。

編集:アランの質問への回答:これを知る必要があるのは、私の仕事では、コンテキストスイッチを回避するためにさまざまなスレッドを特定のCPUにバインドする必要があり、特定のタスク(スレッド)が個別の物理CPUにバインドされていることを確認したいからです。ありがとう

4

2 に答える 2

9

私が知っていることから、それはCPUが彼のコアをどのように公開するかに依存します。HTが有効になっている場合、公開されている物理CPUはなく、物理CPUごとに2つの論理CPUがあるため、どちらの論理CPUでスレッドを実行しても違いはありません。重要なのは、論理CPUのどのペアが各物理CPUに属しているかだけです。

シングルコアプロセッサ(HTを搭載したPentium 4など)では、ペアが1つしかないため、非常に簡単です。つまり、(0、1)です。クアッドコアプロセッサ(Nehalemなど)の場合、論理コアのペアは(0,4)、(1,5)、(2,6)、および(3,7)です。各ペアの前半をすべて使用し、後半をすべて使用するというパターンは、さらに多くのコアを備えた将来のCPUに対応します。

本当の問題は、なぜペアの配置を知る必要があるのか​​ということです。OSのスケジューラーに適切なスレッドに適切なコアを選択させましょう-それはかなりまともな仕事をします。

于 2009-11-16T19:18:32.223 に答える
5

/sys/devices/system/cpu/CPU に関する情報を調べることができます。コアとそのハイパースレッド ペアのレイアウトは、 に記載されてい/sys/devices/system/cpu/cpuN/topology/thread_siblings_listます。

于 2010-06-02T14:47:13.097 に答える