在Linux中的CPU排序(带超线程)

14
我对Linux中的CPU顺序很好奇。例如,在超线程系统上,如果我将一个线程绑定到cpu0,另一个线程绑定到cpu1,它们是否都会在同一个物理核心上运行?对于具有4个核心和超线程的Core i7 920,/ proc / cpuinfo的输出使我认为cpu0和cpu1是不同的物理核心,而cpu0和cpu4位于同一个物理核心上。
谢谢。
3个回答

22

物理 CPU/插座列在physical id中。
物理核心列在core id中。
由于超线程(Hyperthreading),每个处理器条目都将拥有自己的processor,但与另一个共享core idphysical id

请注意,每个物理 CPU(physical id)可以具有多个核心(core id),这些核心可以通过超线程进一步分成附加的逻辑 CPU。逻辑CPU的整体排序是由processor id确定的。

这里有一个带有示例的详细说明:archive.richweb.com/cpu_info via web.archive.org


1
这是不正确的。'Physical id' 是一个插座。他有一台四核心i7超线程单插座电脑。他所有的内核都应该有 'physical id' 0。'core id' 指的是物理内核,他应该有0-3个。逻辑内核被定义为 'processor',应该编号为0-7。...在我的系统上,处理器0和4共享相同的 'core id',处理器1和5共享相同的 'core id',等等。只要确保不要将两个进程绑定到相同的 'core id',除非你真的想这样做。所以处理器0和4是同一核上的逻辑CPU(超线程)。 - bobpaul
3
您可以使用命令egrep "(( id|processo).*:|^ *$)" /proc/cpuinfo从/ proc / cpuinfo中获取相关信息。 - Elmar Zander

2
您可以使用likwid-topology -g命令获取CPU的图形拓扑结构。它显示了每个CPU的主核心以及其对应的兄弟核心。

-1

请查看此链接提供的指针。有关物理处理器、核心和超线程的所有信息都在/proc/cpuinfo中,但您必须从该文件的多个条目中匹配信息以确定哪些是一组的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接