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

Я пытаюсь выяснить, как ОС (Windows, Linux) назначает номера логическим процессорам в среде с поддержкой Hyper-многопоточности.?

Обе операционные системы сначала последовательно присваивают номера физическим процессорам, а затем начинают нумерацию логических процессоров или же соблюдается какое-то другое правило? например, в системе с 2 физическими процессорами с гиперпоточностью ОС присваивает номер 0,2 первому физическому процессору, а затем 1,3 второму физическому процессору?

Любые ссылки будут очень признательны.

Заранее спасибо.

С уважением, -Джей.

Редактировать: Отвечая на вопрос Алана: мне нужно это знать, потому что в своей работе мне нужно привязывать различные потоки к конкретным процессорам, чтобы избежать переключения контекста, и я хочу убедиться, что определенные задачи ( THreads) связаны с отдельным физическим процессором. Спасибо

2 ответа

Решение

Насколько я знаю, это зависит от того, как процессор выставляет свои ядра. Когда 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,

Другие вопросы по тегам