HP'sтехнический документ по адаптерам QLogic (ранее Broadcom) NetXtreme II, в том числе и конкретная сетевая карта, которую я тестирую, утверждает (стр. 7), что ее производительность при обработке небольших пакетов размером до 256 байт/пакет превышает 5 000 000 пакетов/сек.
В моих тестах с приложением, где я отключил всю обработку, кроме части получения UDP, я могу получить только 120 000 пакетов/сек. Пакеты равномерно распределяются по 12 группам многоадресной рассылки.
Я заметил, что естьодно ядро(из 12 ядер на каждом из двух сокетов), нагрузка на которые постепенно увеличивается, когда я увеличиваю скорость отправки UDP имаксимум около 120 000. Но я не знаю, что делает это ядро и почему. Это не узкое место одного потока в моем приложении, потому что неважно, запускаю ли я один экземпляр приложения для всех групп многоадресной рассылки или 12 экземпляров, каждый из которых обрабатывает одну группу многоадресной рассылки. Так что узкое место — это не мое приложение-приемник.
MSI включен (проверено черезВид «ресурсы по типу» в диспетчере устройств) и RSS тоже включен в настройках NIC, с 8 очередями. Так что же цепляется за это ядро? Все функции разгрузки NIC сейчас включены, но их отключение не помогло.
Так где же может быть узкое место?
Подробности системы:
- ProLiant BL460c Gen9
- Intel Xeon E5-2670 v3 (2 x 12 ядер)
- Сетевая карта HP FlexFabric 10Gb 2-портовая 536FLB
- Windows 2012 R2
решение1
RSS также включен в настройках сетевой карты с 8 очередями.
Что, к сожалению, не означало, что RSS использовался, поскольку
netsh int tcp show global
показал:
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : disabled
После запуска (кстати, без перезагрузки)
netsh int tcp set global rss=enabled
RSS начал работать, и нагрузка, которая раньше ложилась на одно бедное ядро, теперь равномерно распределяется по многим ядрам на одном из двух узлов NUMA.
Я не проверял, позволит ли это мне справиться с заявленными нагрузками Mpps, но потолок был поднят достаточно, чтобы оценить то, что мне нужно.