【问题标题】:How do i find the Physical Socket ID / number a process is running on?我如何找到进程正在运行的物理套接字 ID/编号?
【发布时间】:2012-06-26 18:18:03
【问题描述】:

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

我有一个 8 插槽系统,总共有 128 个 (0-127) 个逻辑处理器。 根据我在 msdn 中阅读的内容,它们将分为 2 个处理器组,每组 64 个逻辑处理器。 http://msdn.microsoft.com/en-us/library/dd405503

我试过查看 cpuid 和 GetNumaProcessorNodeEx 从 cpuid,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

...

任何帮助或解决此问题的链接都会很棒。

谢谢

【问题讨论】:

  • 本网站不是链接收集器。
  • @Neal 我不只是想收获链接。即使以重新引导我查看其他选项的方式,我也只是在寻求帮助。我绝不指望有人回答我。即使指导我找到解决方案也会很有帮助。
  • 我可以知道否决票的原因吗?我可以改写/改进这个问题。
  • 本网站不会为您提供链接。这根本没有建设性..

标签: c++ c windows


【解决方案1】:

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

【讨论】:

猜你喜欢
  • 2011-01-13
  • 2012-07-12
  • 2011-10-10
  • 2021-07-09
  • 1970-01-01
  • 2012-04-04
  • 2012-10-13
  • 2018-08-21
  • 1970-01-01
相关资源
最近更新 更多