Нумерация процессоров в системе с поддержкой гипертегирования

StackOverflow https://stackoverflow.com/questions/1744130

Вопрос

Я пытаюсь выяснить, как ОС (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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top