2

現在のプロセスが実行されている実際の物理プロセッサ/ソケット番号、または提供された論理プロセッサ番号のマッピングを見つける方法があるかどうかを知りたいです。

私は8ソケットシステムを使用しており、合計128(0-127)の論理プロセッサになります。私がmsdnで読んだものから、それらはそれぞれ64個の論理プロセッサからなる2つのプロセッサグループに分割されます。 http://msdn.microsoft.com/en-us/library/dd405503

cpuidからcpuidとGetNumaProcessorNodeExを調べてみましたが、APIC idは論理プロセッサIDの識別に役立ち、GetNumaProcessorNodeExからnumaノードを取得します(論理プロセッサの数が64以下の場合に便利です)。論理プロセッサがハイパースレッドの場合は可能ですか?

私はこのようなツールを作成しようとしています。

プロセッサ番号-ソケット/コアID/HT

プロセッサ0-0/0/0

プロセッサ1-0/1/1

プロセッサ2-0/2/0

..。

プロセッサ8-1/0/0

プロセッサ9-1/1/1

..。

これを理解するためのヘルプやリンクは素晴らしいでしょう。

ありがとうございました

4

1 に答える 1

2

ソケット/コア/スレッド階層はAPICIDのビットにあります。
N個の下位ビットはスレッド、M個の下位ビットはコア、残りの上位ビットはソケットです。
NとMを見つけるには、いくつかのCPUIDコードを使用する必要があります。
コード1は、ソケットあたりのスレッド数(EBXのどこか)を示します。
コード4は、ソケットあたりのコア数(EAX)を示します。
たとえば、ソケットごとに12のスレッドと6つのコアがある場合、最下位ビットはスレッドID、次の3つはコア、残りはソケットです。

于 2012-06-26T19:00:49.510 に答える