CPU 核心 ID 值不连续

CPU 核心 ID 值不连续

我正在尝试理解报告的“core_id”序列。我的机器有 2 个插槽、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 的序列号。

我试图弄清楚为什么它会跳过一些序列号,但找不到相关文档。有人能帮我更好地理解这一点吗?

谢谢。

答案1

这通常由以下两种情况之一导致:

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

鉴于这是一个 2 插槽系统,我敢打赌第二种情况是这样的,因为能够热移除 CPU 封装然后热插拔新封装是相当标准的,并且固件必须处理新 CPU 比旧 CPU 具有更多内核的情况。分成 4 组,每组 5 个可能也与 CPU 本身的芯片布局相匹配。

相关内容