是否有可能分辨出哪些 CPU 是同一核心的超线程?

是否有可能分辨出哪些 CPU 是同一核心的超线程?

我有一台启用了超线程的四核 i-7 服务器。内核将其识别为 8 个 CPU,这是应该的。我想在这台机器上创建几个虚拟主机。virt-manager 让我选择在哪台机器上使用哪个 CPU。我想配置它,以便将超线程对中的两个 CPU 分配给同一台虚拟机。这样,一台负载很重的机器就不会因为超线程而共享单个核心而影响另一台虚拟机。但我确实希望每个虚拟机都可以使用超线程,因为我正在运行涉及大量并行化的任务。

那么,我如何知道内核识别的哪些 CPU 是一对?我怀疑 CPU 0 和 CPU 1 是一对,然后是 CPU 2 和 CPU 3,依此类推,但我不确定如何测试/确认。

答案1

此链接描述了如何匹配物理 ID、核心 ID 和同级计数,以识别 /proc/cpuinfo 中的哪些条目位于同一核心上,但我无法保证其准确性。它也看起来类似于 [这个问题][2]。

注意:现在提到的链接似乎是一个垃圾网站,它是:http ://www.linuxforums.org/articles/finding-server-is-multi-processor-multi-core-or-hyperthreading-is-enabled-or-not-_856.html [2]:https://stackoverflow.com/questions/3019129

答案2

cat /sys/devices/system/cpu/cpu0/topology/thread_siblings_list

将打印特定物理 CPU/核心的兄弟核心的逗号分隔列表。我使用 cpu0(第一个核心)作为示例。

可以从 /proc/cpuinfo 中的“核心 id”字段中提取相同的信息(感谢 user61849)。

相关内容