CPU核心ID值不连续

我正试图理解报告的“core_id”序列。 我的机器有2个sockets,20个核心和超线程(80 CPU)。 我正在查看使用以下内容报告的“core_id”值:

root@mybox:~# cat /sys/devices/system/cpu/cpu*/topology/core_id | sort -n | uniq 0 1 2 3 4 8 9 10 11 12 16 17 18 19 20 24 25 26 27 28 root@mybox:~# root@mybox:~# cat /sys/devices/system/cpu/cpu*/topology/core_id | sort -n | uniq | wc -l 20 root@mybox:~# 

在这里,我可以看到core_id不是连续的。 他们遵循一个模式。 每个八位字节的最后3个数字被跳过(5,6,7然后13,14,15然后21,22,23)。 因此,列出20个内核,它使用从0到28的序列号。

我试图找出为什么它跳过一些序列号,但没有find相同的相关文件。 任何人都可以请帮助我以更好的方式了解这一点。

谢谢。

这通常由以下两种情况之一产生:

  1. CPU实际上有更多的内核,并且固件禁用了其中一些(或者制造商禁用了一些)。
  2. 固件在操作系统读取这些数据的各种表中留有空间,以便热插拔更大的CPU。

鉴于这是一个2插槽系统,我敢打赌,第二个是这样的,因为它是非常标准的能够热拔掉一个CPU包,然后热插拔一个新的,固件必须处理的情况下,新的CPU比旧的有更多的核心。 5分为4组也可能与CPU本身的模组布局相匹配。