【发布时间】:2011-03-02 10:32:46
【问题描述】:
我很好奇 Linux 中的 CPU 排序是什么。假设我在超线程系统上将一个线程绑定到 cpu0,另一个绑定到 cpu1,它们是否都将位于同一个物理内核上。给定一个具有 4 个内核和超线程的 Core i7 920,/proc/cpuinfo 的输出让我认为 cpu0 和 cpu1 是不同的物理内核,而 cpu0 和 cpu4 在同一个物理内核上。
谢谢。
【问题讨论】:
标签: linux hyperthreading
我很好奇 Linux 中的 CPU 排序是什么。假设我在超线程系统上将一个线程绑定到 cpu0,另一个绑定到 cpu1,它们是否都将位于同一个物理内核上。给定一个具有 4 个内核和超线程的 Core i7 920,/proc/cpuinfo 的输出让我认为 cpu0 和 cpu1 是不同的物理内核,而 cpu0 和 cpu4 在同一个物理内核上。
谢谢。
【问题讨论】:
标签: linux hyperthreading
您可以使用likwid-topology -g 获取cpu 的图形拓扑。它显示了每个 cpu 主核心以及同级核心。
【讨论】:
物理cpu/socket被列为physical id。
物理核心列为core id。
由于超线程,处理器条目将获得自己的processor,但与另一个共享core id 和physical id。
请注意,每个物理 cpu (physical id) 可以有多个核心 (core id),这些核心可以通过超线程进一步分解为额外的逻辑 cpu。逻辑cpu整体按processor id排序。
【讨论】:
egrep "(( id|processo).*:|^ *$)" /proc/cpuinfo 仅获取来自/proc/cpuinfo 的相关信息
请参阅this link 中提供的指针。有关物理处理器、内核和超线程的信息都在 /proc/cpuinfo 中,但您必须匹配来自该文件中多个条目的信息以识别哪些组合在一起。
【讨论】: