Intel PMU로 시스템 처리량 분석


1

나는 이것을 신뢰한다. 적절한 이 질문에 대한 장소. 프로그래밍과 관련이 없거나 대신 Stackoverflow에 질문했을 수도 있습니다. 그럼에도 불구하고 여기에 질문이 있습니다. 네트워크 처리량을 벤치마킹하고 있습니다. 두 개의 40GbE NIC가 현재 대역폭을 직접 확인하고 있습니다. (이를 위해, 나는 iperf3 ).

내 테스트 시스템은 듀얼 제온 E5 2667 (from / proc / cpuinfo model name : Intel(R) Xeon(R) CPU E5-2667 0 @ 2.90GHz ) 24 개의 논리 프로세서를 표시합니다. 이있다 NUMA 하이퍼 큐브 두 개의 노드에 프로세서 절반이 각각 연결되어 있습니다. 비 ECC DDR3의 형태로 32GB의 RAM이 있습니다. 각각의 경우 40GbE NIC는 NUMA 노드 0에 연결된 PCIe Gen 3 x8 슬롯에 연결됩니다.

최소의 옵션 (기본적으로 내 용도로 충분한 기본값 사용)으로 iperf3을 사용하여 테스트를 수행 할 때 21.x Gbps 이상의 TCP 테스트 상승 대역폭을 볼 수 없습니다. (가끔은 21보다 높습니다. 하지만 대개 21.x입니다.) 그러나 iperf3를 사용하면 -A n 제한하는 옵션 iperf3 프로세서에 <n>, ~ 36 Gbps를 보았는데 기대했던 것보다 훨씬 낫습니다. 이유를 알고 싶습니다.

나는 몇 가지 실험을 해왔다. numactl 메모리 할당, 프로세서 노드 및 물리적 프로세서를 iperf3. 이상하게도 동일한 처리량을 얻을 수 없습니다. numactl 내가 사용함에 따라 iperf3 '에스 -A 선택권. 다양한 물건들 / 옵션들을 만지작 거리다. numactl man 페이지 더 많은 것을 위해), 주로 --physcpubind=<n>, --cpunodebind=<n>--membind=<n> 나는이 시험에서 ~ 31Gbps 이상을 달성 할 수 없다. 이유를 알고 싶습니다.

이를 위해 나는 perf 패키지 linux가 제공합니다. 그러나 필자는 리눅스 나 인텔에서 제공되는 PMU의 사용 가능한 문서에 대해서는별로 알지 못한다. 오, 그것을 실행하는 방법을 설명하지만, 실제로 무슨 뜻인지 . 예로서, bus-cycles "Hardware Events"와 "Kernel PMU Events"모두에 나타납니다. 차이점이 뭐야? perf list 감시 될 수있는 "사건"을 묘사한다; 길다. 내가 Xeon E5 2667 용으로 Intel에서 찾은 문서 (Haswell 설치라고 생각합니다)는 다양한 NUMA 관련 작업이 지원된다는 것을 보여줍니다. perf listuncore_imc_0/cas_count_read/uncore_qpi_0/drs_data/ (많은 다른 사람들과) 관련이 있어야합니다. 그러나 내가 달릴 때 iperf3 이 모니터를 시도하면 지원되지 않습니다. 예 :

$ perf stat -e uncore_qpi_0/drs_data/ -- iperf3 -c 192.168.0.244 -A 0
.... program output ....
Performance counter stats for 'iperf3 -c 192.168.0.244 -A 0':

  <not supported>      uncore_qpi_0/drs_data/   

그러나 문서에 나와 있어야합니다. 프로그램을 실행하지 않고서 만 프로세서가 지원하는 것이 무엇인지 알아내는 방법이 있습니까? 불일치를 이해하는 데 중요한 메트릭스에 대한 제안 사항이 있습니까? (RHEL이 솔루션의 대상 플랫폼이기 때문에 태그가 붙어 있습니다.)

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