Нумерация ЦП в системе с включенным гипертехом - PullRequest
7 голосов
/ 16 ноября 2009

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

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

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

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

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

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

Ответы [ 2 ]

8 голосов
/ 16 ноября 2009

Насколько я знаю, это зависит от того, как процессор выставляет свои ядра. Когда HT включен, нет физических физических процессоров, а два логических процессора на физический процессор, поэтому нет никакой разницы, если вы запускаете поток на любом логическом процессоре. Единственное, что имеет значение, это то, какие пары логических процессоров принадлежат каждому физическому процессору.

С одноядерными процессорами (такими как Pentium 4 с HT) это довольно просто, поскольку у вас есть только одна пара - так что (0, 1) В четырехъядерных процессорах (например, Nehalem) парами логических ядер являются (0,4), (1,5), (2,6) и (3,7). Образец, в котором все первые половинки каждой пары затем имеют все вторые половинки, масштабируется с будущими процессорами, которые имеют еще больше ядер.

Реальный вопрос в том, зачем вам знать парное расположение? Пусть планировщик ОС выберет правильные ядра для нужных потоков - он делает довольно приличную работу.

4 голосов
/ 02 июня 2010

Вы можете посмотреть в /sys/devices/system/cpu/, чтобы найти информацию о процессорах. Расположение сердечников и их многопоточных пар можно найти в /sys/devices/system/cpu/cpuN/topology/thread_siblings_list.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...