В настоящее время я проверяю ограничения серверного приложения в системе с двумя 12-ядерными процессорами, то есть с 24 ядрами. (Гиперпоточность в настоящее время отключена).
Я запускаю 12 экземпляров того же приложения с интенсивным приемом UDP на этом компьютере, и, согласно диспетчеру задач, он максимально использует все 12 ядер одного из 2 сокетов. Но другая розетка простаивает. Я также попытался запустить 13-й экземпляр этого приложения, но он все еще запускается на первом, уже занятом сокете.
Зачем? Каковы правила, по которым потоки распределяются между ядрами в многопроцессорной системе?
Некоторые идеи:
Детали системы:
Некоторые слоты / устройства ввода-вывода обмениваются данными напрямую с одним из процессоров (другие слоты могут обмениваться данными с другим). Есть преимущества в выполнении работы, создаваемой этой картой / устройством ввода-вывода на этом процессоре.
Например DDIO лучше всего работает с процессором, подключенным к слотам PCI / устройству ввода-вывода.