Oficjalny dokument HP na temat adapterów NetLtreme II QLogic (np. Broadcom) , w tym konkretnej karty sieciowej , którą testuję , stwierdza (strona 7), że ich wydajność małych pakietów dla pakietów do 256 bajtów / pakiet przekracza 5 000 000 pakietów / s.
W moich testach z aplikacją, w której wyłączyłem wszystkie przetwarzanie oprócz samej części odbierania UDP, mogę przejść do 120 000 pakietów tylko na sekundę. Pakiety są równomiernie rozmieszczone w 12 grupach multiemisji.
Zauważyłem, że jest jeden rdzeń (z 12 rdzeni każdy na 2 gniazdach), którego obciążenie stopniowo wzrasta, kiedy zwiększam szybkość wysyłania UDP i osiąga wartość około 120 000 . Ale nie wiem, co robi ten rdzeń i dlaczego. W mojej aplikacji nie jest to wąskie gardło w jednym wątku, ponieważ nie ma znaczenia, czy uruchomię jedną instancję aplikacji dla wszystkich grup multiemisji, czy 12 instancji, które obsługują 1 grupę multiemisji. Więc wąskie gardło nie jest moją aplikacją odbiornika.
MSI jest włączony (weryfikowany poprzez widok „zasobów według typu” w menedżerze urządzeń ), a także RSS jest włączony w ustawieniach NIC, z 8 kolejkami. Więc co trzyma się tego jednego rdzenia? Wszystkie funkcje rozładowywania karty sieciowej są obecnie włączone, ale ich wyłączenie nie pomogło.
Więc gdzie może być wąskie gardło?
Szczegóły systemu:
- ProLiant BL460c Gen9
- Intel Xeon E5-2670 v3 (2 x 12 rdzeni)
- Karta sieciowa HP FlexFabric 10 Gb 2 porty 536FLB
- Windows 2012 R2