Влияние производительности потоковой карты и карт PCIe на компьютерах NUMA - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть нативное приложение C ++, которое выполняет большое количество операций как на CPU, так и на GPU (OpenMP, OpenCL). Это же приложение также общается с сетевым устройством для обмена большим количеством данных. Приложение выполнено в системе с двумя сокетами и Windows 10.

Поняв влияние NUMA на производительность памяти, мне пришла в голову идея разделить часть ввода-вывода и часть обработки чисел на два процесса, каждый из которых работает на отдельном процессоре, что обеспечивается установкой соответствия потоков процессов. для каждого процесса до ядер на одном из обоих процессоров. Это уже дало мне хороший прирост производительности, однако я заметил, что задержка NIC увеличилась.

Насколько я понимаю, слоты PCIe напрямую подключены к одному из обоих процессоров, как показано на следующем рисунке:

enter image description here Ответ на вопрос SO Асимметричен ли доступ ЦП к сетевой карте гласит, что для достижения хорошей производительности «всегда используйте ядра с NIC в одном узле NUMA».

Это уже было достигнуто путем установки привязки потоков процесса к ядрам соответствующего процессора или есть что-то еще, о чем следует помнить? Например. при обработке TCP-потоков выполняются ли процедуры драйвера в потоке, запрашивающем чтение в потоке, эффективно гарантируя, что DMA происходит на «правильном» процессоре (напрямую подключенном через PCIe к NIC)?

...