我有一个 AMD CPU,有 8 个核心,每个核心有 2 个线程。Linux(正确地)将其显示为 16 个“cpu”。然而,sysfs 实际上显示了 32 个“可能的”CPU,其中 16 个不存在并且处于离线状态:
$ cat /sys/devices/system/cpu/possible
0-31
$ cat /sys/devices/system/cpu/present
0-15
$ cat /sys/devices/system/cpu/online
0-15
$ cat /sys/devices/system/cpu/offline
16-31
Run Code Online (Sandbox Code Playgroud)
需要明确的是,这里没有任何问题;确实有 16 个逻辑 CPU 存在并且在线。我不清楚的是为什么 Linux 检测到额外的 16 个逻辑 CPU,这些 CPU 不存在但可能存在。
我认为这些是相关的内核文档:https://www.kernel.org/doc/html/latest/core-api/cpu_hotplug.html。但我没有看到任何关于如何选择可能的 CPU 数量的说明。(请注意,它远低于kernel_maxCPU 数量,我的系统上为 8191。)
(一点额外的背景:我有一些代码需要解析这些值。做正确的事情似乎很简单,但我希望有一个清晰的文档字符串来解释为什么可能的 CPU 数量可能超过计算机上现有的 CPU 数量普通台式电脑。)