我正在运行以下命令:
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
有关处理器数量的更多信息,请访问这里