2

我想知道是否有任何方法可以找到当前进程正在运行的实际物理处理器/套接字编号,或者提供逻辑处理器编号的相同映射。

我有一个 8 插槽系统,总共有 128 个(0-127)逻辑处理器。根据我在 msdn 中阅读的内容,它们将分为 2 个处理器组,每组 64 个逻辑处理器。 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

套接字/核心/线程层次结构位于 APIC ID 的位中。
N 个低位是线程,M 个低位是核心,其余高位是套接字。
要找到 N 和 M,您需要使用一些 CPUID 代码:
代码 1 为您提供每个套接字的线程数(在 EBX 中的某个位置)。
代码 4 为您提供每个插槽的核心数(在 EAX 中)。
例如,如果每个插槽有 12 个线程和 6 个核心,那么最低位是线程 ID,接下来的 3 个是核心,其余的是插槽。

于 2012-06-26T19:00:49.510 回答