Я пытаюсь понять последовательность "core_id". На моей машине 2 сокета, 20 ядер и включена гиперпоточность (80 ЦП). Я смотрю на значения "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.
Я пытаюсь понять, почему он пропускает некоторые порядковые номера, но не могу найти соответствующую документацию по ним. Может ли кто-нибудь помочь мне лучше понять это.
Спасибо.
Обычно это происходит по одной из двух причин:
Учитывая, что это 2-сокетная система, я держу пари, что это второй случай, поскольку довольно стандартно иметь возможность горячего удаления пакета ЦП, а затем горячего подключения нового, а прошивка должна обрабатывать случай, когда у нового ЦП больше ядер, чем у старого. Разделение на 4 группы по 5, вероятно, также соответствует расположению кристаллов самого процессора.