Нумерация процессоров в системе с поддержкой гипертегирования
-
20-09-2019 - |
Вопрос
Я пытаюсь выяснить, как ОС (Windows, linux) присваивает номера логическим процессорам в среде с поддержкой Hyper threading.?
Обе операционные системы сначала последовательно присваивают номера физическим процессорам, а затем начинают нумерацию логических процессоров или соблюдается какое-то другое правило..?например ,в системе с 2 физическими процессорами с hyper threading ОС присваивает номер 0,2 первому физическому процессору , а затем 1,3 второму физическому процессору ..?
Любые ссылки были бы действительно оценены.
Заранее благодарю.
С уважением, -Джей.
Редактировать:Отвечая на вопрос Алана :Мне нужно знать это, потому что в моей работе мне нужно привязывать различные потоки к определенным процессорам, чтобы избежать переключения контекста, и я хочу убедиться, что определенные задачи (потоки) привязаны к отдельный физические процессоры.Спасибо
Решение
Из того, что я знаю, это зависит от того, как процессор использует свои ядра.Когда HT включен, нет открытых физических процессоров, а есть два логических процессора на физический процессор, так что нет никакой разницы, если вы запускаете поток на любом логическом процессоре.Единственное, что действительно имеет значение, - это то, какие пары логических процессоров принадлежат каждому физическому процессору.
С одноядерными процессорами (такими как Pentium 4 с HT) это довольно просто, поскольку у вас есть только одна пара - так что это (0, 1).В четырехъядерных процессорах (таких как Nehalem) парами логических ядер являются (0,4), (1,5), (2,6) и (3,7).Схема, при которой все первые половинки каждой пары затем имеют все вторые половинки, будет масштабироваться с будущими процессорами, у которых будет еще больше ядер.
Реальный вопрос в том, зачем вам нужно знать расположение пар?Позвольте планировщику операционной системы выбрать правильные ядра для правильных потоков - это делает довольно приличную работу.
Другие советы
Вы можете заглянуть в /sys/devices/system/cpu/
чтобы найти информацию о процессорах.Расположение ядер и их гиперпоточных пар можно найти в /sys/devices/system/cpu/cpuN/topology/thread_siblings_list
.