与 CPU 计算相关的奇怪 lscpu 输出

与 CPU 计算相关的奇怪 lscpu 输出

我一直在尝试理解lscpu的输出,并遇到了几个专门用于 CPU、物理核心和线程概念的线程。根据这些线程,要获取 CPU(逻辑单元)的总数,您可以执行以下操作:Thread(s) per corex Core(s) per socketx Socket(s)

鉴于我的机器的部分输出如下所示,我预计CPU(s)为 28,但它被列为 20。

Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         46 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  20
  On-line CPU(s) list:   0-19
Vendor ID:               GenuineIntel
  Model name:            12th Gen Intel(R) Core(TM) i9-12900H
    CPU family:          6
    Model:               154
    Thread(s) per core:  2
    Core(s) per socket:  14
    Socket(s):           1

有人可以帮助我理解我对 CPU 数量的预期与lscpu此实例中实际产生的结果之间明显的脱节吗?我好像找不到类似的案例。

答案1

您找到的信息(可能包括我之前关于该主题的答案)没有考虑到单个包中具有不同内核的 CPU。您的 CPU 有 6 个 P 核和 8 个 E 核;每个 P 核心有两个线程,因此您的系统总共有 20 个逻辑 CPU。

lscpu无法在其摘要中表示这一点(至少不是您拥有的版本),因此它显示了误导性信息;你可以通过运行看到不同的核心lscpu --extended

相关内容