공급 업체 백서의 말 : 5Mpps no prob. 이미 120kpps에서 벽을 치고 있습니다. 병목 현상은 어디에 있습니까?


17

테스트중인 특정 NIC가 포함 된 QLogic (fka Broadcom) NetXtreme II 어댑터에 대한 HP의 백서 에는 최대 256 바이트 / 패킷의 패킷에 대한 작은 패킷 성능이 5,000,000 패킷 / 초 이상이라고 설명되어 있습니다 (7 페이지).

단순한 UDP 수신 부분을 제외한 모든 처리를 비활성화 한 응용 프로그램을 사용한 테스트에서 최대 120,000 패킷 / 초 만 사용할 수 있습니다. 패킷은 12 개의 멀티 캐스트 그룹에 고르게 분산됩니다.

UDP 전송 속도를 높이면 약 120,000에서 최대로드가 증가하는 코어 가 하나 (2 개의 소켓에 12 개의 코어 중) 있는 것으로 나타났습니다 . 그러나 나는 그 핵심이 무엇을하고 있으며 왜 그런지 모른다. 모든 멀티 캐스트 그룹에 대해 하나의 앱 인스턴스를 실행하거나 각각 1 개의 멀티 캐스트 그룹을 처리하는 12 개의 인스턴스를 실행하더라도 중요하지 않기 때문에 앱에서 단일 스레드 병목 현상이 아닙니다. 병목 현상은 내 수신기 앱이 아닙니다.

MSI는 활성화되고 ( 장치 관리자에서 "유형별 리소스"보기 를 통해 확인 됨 ) NIC 설정에서도 8 개의 대기열이있는 RSS도 활성화됩니다. 그렇다면 하나의 핵심에 집착하는 것은 무엇입니까? 모든 NIC 오프 로딩 기능이 현재 켜져 있지만 끄지 않아도 도움이되지 않습니다.

병목 현상이 발생하는 위치는 어디입니까?

시스템 정보 :

  • 프로 라이언트 BL460c Gen9
  • 인텔 제온 E5-2670 v3 (2 x 12 코어)
  • HP FlexFabric 10Gb 2 포트 536FLB NIC
  • Windows 2012 R2

2
아마도 모든 rx 및 tx 인터럽트는 동일한 코어에서 처리됩니다. 나는 윈도우에 대해 많이 알지 못하지만 관련 IRQ를 균등하게 확산시키기 위해서는 약간의 SMP 선호도가 있어야합니다.
Xavier Lucas

답변:


13

NIC 설정에서 RSS도 활성화되며 8 개의 대기열이 있습니다.

불행히도 RSS가 사용되었다는 의미는 아닙니다.

netsh int tcp show global

보여 주었다:

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : disabled

실행 후 (재부팅하지 않고 btw)

netsh int tcp set global rss=enabled

RSS는 작동하기 시작했고 이전에는 불량한 코어 하나에 힙이 쌓여 있던 부하가 이제 2 개의 NUMA 노드 중 하나의 여러 코어에 고르게 분산되었습니다.

광고 된 Mpps 부하를 처리 할 수 ​​있는지 여부를 확인하지 못했지만 필요한 것을 벤치 마크 할 수 있도록 천장이 충분히 상승했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.