为什么 cpuinfo 仅显示 2 个处理器?

为什么 cpuinfo 仅显示 2 个处理器?

我正在运行以下命令:

cat /proc/cpuinfo | /bin/egrep 'processor|model name|cache size|core|sibling|physical'

这给出了这个输出:

processor   : 0
model name  : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
cache size  : 8192 KB
physical id : 0
siblings    : 8
core id     : 0
cpu cores   : 4
address sizes   : 40 bits physical, 48 bits virtual
processor   : 1
model name  : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
cache size  : 8192 KB
physical id : 0
siblings    : 8
core id     : 1
cpu cores   : 4
address sizes   : 40 bits physical, 48 bits virtual

ht因此,鉴于完整 cpuinfo 输出中的标志,并且还因为同级是 cpu 核心的两倍,我可以判断超线程已开启。

这是否意味着我只有一个启用了 HT 的物理四核处理器,仅此而已?

我不清楚为什么只列出了 2 个处理器记录(核心 ID 0 和 1)。核心2和核心3不应该还有另外2条记录吗?

*注意:运行 lscpu 会出现错误“无法确定 CPU 数量”

答案1

在上面的输出中cat /proc/cpuinfo您可以看到以下信息:

physical id : 0
siblings    : 8
core id     : 0
cpu cores   : 4

看着这个英特尔有关您的处理器规格的页面,很明显您的处理器有 4 个核心。所以,cpuinfo是正确的。

此外,您还可以看到同级数为 8,CPU 核心数为 4。CPU 核心数为 4 是处理器中的核心总数。

大多数新处理器都旨在节省电量和电池,这意味着所有内核不必同时运行。的内容/proc/cpuinfo在某种程度上依赖于实现并且具有误导性,因此没有必要正确报告硬件信息。事实上,/proc/cpuinfo这是 Linux 中为数不多的可以获得有关您所拥有的硬件的完整信息的地方之一。

为了计算正确的 CPU 数量,请使用[nproc][1]coreutils 中的命令。该命令打印当前进程可用的处理单元的数量。

要查找所有已安装的核心/处理器的数量,请运行命令nproc如下:

nproc --all
--all  print the number of installed processors

/proc/cpuinfo有关处理器数量的更多信息,请访问这里

相关内容