3

在双四核GetProcessAffinityMask(或 taskman.exe 中“设置关联”的对话框)上,将报告八个逻辑处理器。如何找出哪个逻辑处理器在哪个物理处理器上?特别是:哪些逻辑处理器在同一个物理处理器上?

编辑:如果无法以编程方式执行此操作,是否有人知道法线映射是什么?是第一个处理器上的前四个,第二个处理器上的后四个,还是第一个处理器上的奇数编号和第二个处理器上的偶数编号?

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)

正如该芯片所预期的那样,8 个超线程有 8 个 *,每个内核两个。但是,尚不清楚 * 的排列如何与 Windows 呈现的逻辑处理器列表相匹配。例如,任务管理器为我提供了一个对话框,用于为任何进程分配处理器关联,标记为 CPU 0 到 CPU 7。假设您可以获取 coreinfo 的输出并从左到右为逻辑处理器编号是公平的(但不是必需的)。因此“CPU 5”将是在物理处理器 2 上运行的第二个超线程。

于 2011-09-06T18:08:11.850 回答
1

编号以顺序方式完成:首先是所有物理核心,然后是逻辑核心 [1]。

[1]启用超标题的系统上的 CPU 编号

于 2011-10-06T06:59:12.177 回答