【问题标题】:CPU ordering in Linux (with hyper threading)Linux 中的 CPU 排序(使用超线程)
【发布时间】:2011-03-02 10:32:46
【问题描述】:

我很好奇 Linux 中的 CPU 排序是什么。假设我在超线程系统上将一个线程绑定到 cpu0,另一个绑定到 cpu1,它们是否都将位于同一个物理内核上。给定一个具有 4 个内核和超线程的 Core i7 920,/proc/cpuinfo 的输出让我认为 cpu0 和 cpu1 是不同的物理内核,而 cpu0 和 cpu4 在同一个物理内核上。

谢谢。

【问题讨论】:

    标签: linux hyperthreading


    【解决方案1】:

    您可以使用likwid-topology -g 获取cpu 的图形拓扑。它显示了每个 cpu 主核心以及同级核心。

    【讨论】:

      【解决方案2】:

      物理cpu/socket被列为physical id
      物理核心列为core id
      由于超线程,处理器条目将获得自己的processor,但与另一个共享core idphysical id

      请注意,每个物理 cpu (physical id) 可以有多个核心 (core id),这些核心可以通过超线程进一步分解为额外的逻辑 cpu。逻辑cpu整体按processor id排序。

      这里有详细的例子说明:archive.richweb.com/cpu_info via web.archive.org

      【讨论】:

      • 这是不正确的。 “物理 id”是一个套接字。他有一台带有超线程的四核 i7 单插槽计算机。他所有的核心都应该有 'physical id' 0。'core id' 指的是物理核心,他应该有 0-3 个。逻辑核心定义为“处理器”,编号为 0-7。 ...在我的系统上,处理器 0 和 4 共享相同的核心 id,处理器 1 和 5 共享相同的核心 id,等等。只要确保不要将两个进程绑定到相同的“核心 id”,除非你真的想要到。所以处理器 0 和 4 是同一个核心上的逻辑 CPU(超线程)。
      • 您可以使用egrep "(( id|processo).*:|^ *$)" /proc/cpuinfo 仅获取来自/proc/cpuinfo 的相关信息
      【解决方案3】:

      请参阅this link 中提供的指针。有关物理处理器、内核和超线程的信息都在 /proc/cpuinfo 中,但您必须匹配来自该文件中多个条目的信息以识别哪些组合在一起。

      【讨论】:

        猜你喜欢
        • 2012-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多