У меня есть сервер с четырехъядерным процессором i-7 с включенной гиперпоточностью. Ядро распознает это как 8 процессоров, как и должно быть. Я хочу создать пару виртуальных хостов, работающих на этой машине. virt-manager позволяет мне выбирать, какие процессоры используются на какой машине. Я хочу настроить это так, чтобы назначать оба процессора в гиперпоточной паре одной и той же виртуальной машине. Таким образом, одна машина, находящаяся под большой нагрузкой, не будет влиять на другую виртуальную машину, разделяя одно ядро из-за гиперпоточности. Но я действительно хочу, чтобы гиперпоточность была доступна для каждой виртуальной машины, потому что я выполняю задачи, требующие интенсивного распараллеливания.
Итак, как я могу определить, какие процессоры ядро распознает как пару? Я подозреваю, что ЦП 0 и ЦП 1 составляют пару, затем ЦП 2 и ЦП 3, и так далее, но я не уверен, как проверить / подтвердить.
Эта ссылка описывает, как сопоставить физический идентификатор, идентификатор ядра и количество братьев и сестер, чтобы определить, какие записи в / proc / cpuinfo находятся на одном ядре, но я не могу претендовать на его точность. Он также похож на этот вопрос.
cat /sys/devices/system/cpu/cpu0/topology/thread_siblings_list
напечатает разделенный запятыми список родственных ядер для конкретного физического процессора / ядра. В качестве примера я использовал cpu0 (первое ядро).
Ту же информацию можно извлечь из полей "core id" в / proc / cpuinfo (спасибо user61849).