AMD 处理器的处理器/核心数量异常

AMD 处理器的处理器/核心数量异常

我想确定机器是否启用了超线程。为了确定这一点,我使用了在网上找到的建议,其操作如下:

physical_proc_count = `grep "physical id" /proc/cpuinfo | sort -u  | wc -l`
logical_proc_count = `grep "processor" /proc/cpuinfo | wc -l`
core_count = `grep "core id" /proc/cpuinfo | sort -u | wc -l`

这个想法是,如果逻辑处理器的数量是核心数量的两倍,则启用超线程。

当时我很天真,没有注意到 AMD 处理器没有超线程这一事实。我知道他们没有称为“超线程”的确切技术,但我错误地认为他们有等效的功能。因此,我在具有四个 AMD Opteron 处理器 6276 的计算机上运行该脚本,输出为:

  • 4 个物理 CPU
  • 64 个逻辑 CPU
  • 每个物理 CPU 8 个核心

每个物理 CPU 8 个核心 == 32 个核心。然而,有 64 个逻辑 CPU。因此我得出结论,该机器启用了超线程。 /proc/cpuinfo 中的处理器标志包含“ht”标志这一事实进一步加剧了这一情况。从那以后我了解到,对于 AMD 芯片来说,它代表“HyperTransport”——哦!

一位同事注意到了我的错误并介入并礼貌地告诉我 AMD 处理器没有超线程。我仍然不明白为什么我会得到上面的数字。

检查处理器的技术规格,它说每个物理 CPU 实际上有 16 个核心:http://products.amd.com/en-us/OpteronCPUDetail.aspx?id=759

基本上输出在我看来就像有超线程。我哪里做错了?如何解析 /proc/cpuinfo 以获得所有 AMD 和 Intel(HT 和非 HT)芯片的真实计数?

答案1

AMD 的推土机/打桩机/压路机/挖掘机微体系结构用于大多数当前和最新的处理器(包括 6276),其“模块”是共享某些组件的成对“核心”。这些模块介于单个超线程核心和一对真正的独立核心之间,根据应用的不同,性能在一个核心和两个核心之间变化。

AMD 将每个此类模块作为两个核心进行营销,将 Opteron 6276 称为 16 核。相反,有些软件将每个模块视为具有两个逻辑核心的单个物理核心,看起来 Linux 就是这样做的。

相关内容