Назад | Перейти на главную страницу

Как потоки распределяются между ядрами в многопроцессорной системе?

В настоящее время я проверяю ограничения серверного приложения в системе с двумя 12-ядерными процессорами, то есть с 24 ядрами. (Гиперпоточность в настоящее время отключена).

Я запускаю 12 экземпляров того же приложения с интенсивным приемом UDP на этом компьютере, и, согласно диспетчеру задач, он максимально использует все 12 ядер одного из 2 сокетов. Но другая розетка простаивает. Я также попытался запустить 13-й экземпляр этого приложения, но он все еще запускается на первом, уже занятом сокете.

Зачем? Каковы правила, по которым потоки распределяются между ядрами в многопроцессорной системе?

Некоторые идеи:

Детали системы:

Некоторые слоты / устройства ввода-вывода обмениваются данными напрямую с одним из процессоров (другие слоты могут обмениваться данными с другим). Есть преимущества в выполнении работы, создаваемой этой картой / устройством ввода-вывода на этом процессоре.

Например DDIO лучше всего работает с процессором, подключенным к слотам PCI / устройству ввода-вывода.