Всем привет,
Возник такой вопрос. Предположим, что есть 2 NUMA ноды NUMA#0 и NUMA#1, соответственно есть 2 сокета с CPU#0 (NUMA#0) и CPU#1 (NUMA#1). На каждом CPU присутствует несколько ядер, пусть для примера их количество будет равно 4 на первом процессоре и 6 на втором (CPU#0{0-3} и CPU#1{0-5}).
К CPU#0 подключяется 2 сетевых контроллера NIC#0 и NIC#1 с поддержкой RSS и количеством очередей от 1 до 16. Для обработки данных в режиме FastPath (обход сетевого стека ядра Linux) используется DPDK. Суть обработки данных сводится к двум задачам: форвардинг и реконструкция TCP-сессий с буферизацией.
Внимание вопрос: как правильно использовать мощности 2-х нод для обработки сетевого трафика? Удастся ли использовать CPU#2 со второй ноды для эффективной обработки пакетов, ведь у ядер этого CPU должны быть проблемы с тем, что приём и отправка пакетов осуществляются адаптером, физически расположенном на другой ноде.
Кто курил DPDK, какую модель использвать для обработки данных - pipeline, run-to-completion, io/worker?
Как быть, делитесь опытом/соображениями?