[NetQ 수신 측 크기 조정]을 사용하도록 설정하여 vNIC 요청을 물리적 NIC로 오프로드할 수 있도록 합니다. 이렇게 하면 수신 측 데이터의 패킷 성능이 향상됩니다.

물리적 NIC 카드가 호스트로 패킷을 보내면 해당 호스트에서 호스트 스위치가 고급 데이터 경로 모드로 구성될 때 실행되는 ENS(고급 네트워크 스택)가 NUMA 노드의 여러 논리적 코어에 데이터를 분산합니다. RSS 엔진을 구성하는 방법에는 몇 가지가 있습니다.

수신 측 데이터의 처리량 패킷 성능을 향상하려는 네트워크 관리자는 RSS를 구성하여 이점을 활용하는 이러한 방법 중 하나를 고려하는 것이 좋습니다.
이러한 두 가지 모드는 다음과 같습니다.
  • RSS 엔진은 단일 vNIC 대기열 전용입니다. 즉, 전용 RSS 엔진은 vNIC에서 물리적 NIC로 들어오는 모든 요청을 완전히 오프로드합니다. 이 모드에서는 단일 RSS 엔진이 단일 vNIC 대기열 전용입니다. 물리적 NIC가 수신 측 데이터를 관리하고 요청을 처리하는 데 사용할 수 있는 하드웨어 대기열 간에 이러한 데이터를 공유하므로 처리량 성능이 향상됩니다. vNIC 대기열은 물리적 NIC 대기열과 동일한 논리적 코어 또는 빠른 경로에 배치됩니다.
  • RSS 엔진은 여러 vNIC 대기열에서 공유됩니다. 이 모드에서는 vNIC 대기열에 여러 하드웨어 대기열을 사용할 수 있습니다. 그러나 vNIC 처리 흐름이 데이터를 처리하는 물리적 하드웨어 대기열에 맞춰 정렬되지 않을 수 있습니다. 즉, vNIC와 물리적 NIC가 정렬된다는 보장은 없습니다.
참고: NIC 카드에서 DRSS(기본 대기열 수신 측 크기 조정)가 사용하도록 설정된 경우 비활성화합니다.

사전 요구 사항

  • 호스트는 ESXi 버전 7 업데이트 3 이상을 실행 중이어야 합니다.
  • NIC 카드가 RSS 기능을 지원하는지 확인합니다.
  • 지원되는 드라이버: Intel40en(비동기 드라이버). 드라이버 설명서를 참조하여 ENS 호환 RSS 구현이 있는지 확인합니다.

프로시저

  1. NetQ/RSS를 사용하도록 설정하려면 esxcli system module parameters set -m -i40en_ens -p DRSS=0,0 RSS=1,0을 사용합니다.

    여기서 DRSS=0,0은 두 NIC 포트 모두에서 DRSS가 비활성화되었음을 나타냅니다.

    RSS=1,0은 NIC 포트 중 하나에서 NetQ RSS가 사용하도록 설정되어 있음을 나타냅니다.

  2. 드라이버를 언로드하려면 vmkload_mod -u i40en_ens를 실행합니다.
  3. RSS 설정을 적용하기 위해 드라이버를 다시 로드하려면 vmkload_mod i40en_ens를 실행합니다.
  4. 디바이스를 검색하고 드라이버를 NIC에 연결할 수 있도록 PCI 빠른 연결을 트리거하려면 디바이스 관리자를 중지합니다.

    kill -HUP 'ps | grep mgr | awk '{print $1}'을 실행합니다.

  5. vNIC의 RSS 요청을 처리할 수 있도록 여러 RSS 엔진을 구성하려면 VM의 .vmx 파일에서 이러한 매개 변수를 구성합니다.

    ethernet.pnicfeatures = '4': RSS 기능이 vNIC에 의해 요청되었음을 나타냅니다.

    ethernet.ctxPerDev = '3': 여러 컨텍스트(여러 논리적 코어)가 각 vNIC를 처리할 수 있도록 설정되어 있음을 나타냅니다. vSphere 스위치에 연결된 VM은 여러 대기열에 대해 구성됩니다. 즉, NUMA 노드의 여러 논리적 코어가 vNIC에서 들어오는 Tx 및 Rx 트래픽을 처리할 수 있습니다.

    여러 vNIC가 RSS 오프로딩을 요청하는 경우 ENS(고급 네트워크 스택)는 RSS 요청을 물리적 NIC로 오프로드하지 않지만 공유 RSS 엔진은 해당 요청을 처리합니다. 공유 RSS의 경우 여러 RSS 대기열을 사용할 수 있지만 vNIC 대기열 또는 물리적 NIC 대기열의 공동 위치가 구성되지 않았습니다.

  6. vNIC의 요청을 처리하도록 전용 RSS 엔진을 구성하려면 VM의 .vmx 파일에서 이러한 매개 변수를 구성합니다.

    ethernet.rssoffload=True,

    이전 구성을 사용하도록 설정하면 vNIC의 RSS 요청이 물리적 NIC로 오프로드됩니다. 하나의 vNIC만 해당 요청을 RSS 엔진으로 오프로드할 수 있습니다. 이 모드에서는 vNIC 대기열이 물리적 NIC 대기열에 맞춰 조정됩니다.

  7. 패킷 흐름이 RSS 엔진에서 제공하는 하드웨어 대기열에 분산되어 있는지 확인합니다.

    다음 명령을 실행합니다.

    vsish

    get /net/pNics/vmnicX/stats

    샘플 출력:

    rxq0: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq1: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq2: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq3: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq4: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq5: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq6: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq7: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    txq0: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq1: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq2: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq3: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq4: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq5: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq6: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq7: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0