3

デュアル クアッド コアのGetProcessAffinityMask (または taskman.exe の [アフィニティの設定] ダイアログ) では、8 つの論理プロセッサが報告されます。どの論理プロセッサがどの物理プロセッサ上にあるかを確認するにはどうすればよいですか? 特に、どの論理プロセッサが同じ物理プロセッサ上にあるか?

編集:これをプログラムで行うことができない場合、通常のマッピングが何であるかを知っている人はいますか? 最初のプロセッサの最初の 4 つと 2 番目のプロセッサの次の 4 つですか、それとも最初のプロセッサが奇数番号で 2 番目のプロセッサが偶数番号ですか?

4

3 に答える 3

7

Win32_ProcessorWMI クラスを使用して、コアの数、論理プロセッサの数、アーキテクチャ、キャッシュ メモリ、およびシステム上の CPU に関するその他の情報を照会できます。

システム内の論理プロセッサ間の関係に関する情報を照会するには、GetLogicalProcessorInformation API 関数を使用できます。

于 2009-01-08T10:17:00.943 に答える
2

自分でコードを書きたくない場合は、SysInternal の便利な coreinfo ユーティリティが質問への回答に最も近いものです。Mehrdad が推奨するように、GetLogicalProcessorInformation を実装します。Xeon E5640 (クアッド コア、8 スレッド) の場合、coreinfo から取得します。

c:\App\SysInternals>Coreinfo.exe -c

Coreinfo v3.0 - Dump information on system CPU and memory topology
Copyright (C) 2008-2011 Mark Russinovich
Sysinternals - www.sysinternals.com

Logical to Physical Processor Map:
**------  Physical Processor 0 (Hyperthreaded)
--**----  Physical Processor 1 (Hyperthreaded)
----**--  Physical Processor 2 (Hyperthreaded)
------**  Physical Processor 3 (Hyperthreaded)

このチップで予想されるように、コアごとに 2 つの 8 つのハイパースレッドに対して 8 * あります。ただし、* の配置が、Windows が提示する論理プロセッサのリストとどのように一致するかは明らかではありません。たとえば、タスク マネージャーは、任意のプロセスに対して CPU 0 から CPU 7 までのラベルが付けられたプロセッサ アフィニティを割り当てるためのダイアログを表示します。coreinfo の出力を見て、論理プロセッサに左から右に番号を付けることができると想定するのは妥当です (必須ではありません)。したがって、「CPU 5」は、物理プロセッサ 2 で実行される 2 番目のハイパースレッドになります。

于 2011-09-06T18:08:11.850 に答える
1

番号付けは順番に行われます: 最初にすべての物理コア、次に論理コア [1] 。

[1]ハイパースヘディングが有効なシステムでの CPU の番号付け

于 2011-10-06T06:59:12.177 に答える