
HP의QLogic(Fka Broadcom) NetXtreme II 어댑터에 대한 백서내가 테스트 중인 특정 NIC가 포함된 에는 최대 256바이트/패킷의 작은 패킷 성능이 5,000,000패킷/초 이상이라고 나와 있습니다(7페이지).
단순한 UDP 수신 부분을 제외한 모든 처리를 비활성화한 앱을 사용한 테스트에서 초당 최대 120,000패킷까지만 가능합니다. 패킷은 12개의 멀티캐스트 그룹에 고르게 분산됩니다.
나는 거기에 주목했다.하나의 코어(2개의 소켓에 각각 12개의 코어 중) UDP 전송 속도를 높이면 로드가 점차 증가하고약 120,000에서 최대. 하지만 그 코어가 무엇을 하는지, 왜 하는지는 모르겠습니다. 내 앱에서는 단일 스레드 병목 현상이 발생하지 않습니다. 왜냐하면 모든 멀티캐스트 그룹에 대해 앱의 단일 인스턴스를 실행하거나 각각 1개의 멀티캐스트 그룹을 처리하는 12개의 인스턴스를 실행하는지 여부는 중요하지 않기 때문입니다. 따라서 병목 현상은 내 수신기 앱이 아닙니다.
MSI가 활성화되었습니다(다음을 통해 확인됨).장치 관리자의 "유형별 리소스" 보기) RSS도 NIC 설정에서 활성화되어 있으며 대기열은 8개입니다. 그렇다면 그 하나의 핵심에 무엇이 달라붙어 있는 걸까요? 현재 모든 NIC 오프로딩 기능이 켜져 있지만 꺼도 도움이 되지 않습니다.
그렇다면 병목 현상이 발생할 수 있는 곳은 어디입니까?
시스템 세부정보:
- 프로라이언트 BL460c Gen9
- Intel Xeon E5-2670 v3(2 x 12코어)
- HP FlexFabric 10Gb 2포트 536FLB NIC
- 윈도우 2012 R2
답변1
RSS도 8개의 대기열이 있는 NIC 설정에서 활성화됩니다.
불행히도 RSS가 채택되었다는 의미는 아닙니다.
netsh int tcp show global
보여 주었다:
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : disabled
실행 후(재부팅하지 않고)
netsh int tcp set global rss=enabled
RSS가 작동하기 시작했고 이전에 하나의 불량한 코어에 쌓였던 부하는 이제 2개의 NUMA 노드 중 하나에 있는 여러 코어에 고르게 분산됩니다.
그것이 광고된 Mpps 부하를 처리할 수 있는지는 확인하지 못했지만, 필요한 것을 벤치마킹할 수 있을 만큼 한계가 높아졌습니다.