네트워크 어댑터 선택

적용 대상: Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI, 버전 21H2 및 20H2

이 항목을 사용하여 구매 선택에 영향을 줄 수 있는 네트워크 어댑터의 몇 가지 기능을 알아볼 수 있습니다.

네트워크 집약적 애플리케이션에는 고성능 네트워크 어댑터가 필요합니다. 이 섹션에서는 네트워크 어댑터 선택에 대한 몇 가지 고려 사항과 최상의 네트워크 성능을 달성하기 위해 다양한 네트워크 어댑터 설정을 구성하는 방법을 살펴봅니다.

Windows PowerShell을 사용하여 네트워크 어댑터 설정을 구성할 수 있습니다. 자세한 내용은 Windows PowerShell의 네트워크 어댑터 Cmdlet을 참조하세요.

기능 오프로드

CPU(중앙 처리 장치)에서 네트워크 어댑터로 작업을 오프로드하면 서버의 CPU 사용량이 줄어들어 전체 시스템 성능이 향상됩니다.

Microsoft 제품의 네트워크 스택은 적절한 오프로드 기능이 있는 네트워크 어댑터를 선택하는 경우 하나 이상의 작업을 네트워크 어댑터로 오프로드할 수 있습니다. 다음 표에서는 Windows Server 2016에서 사용할 수 있는 다양한 오프로드 기능에 대한 간략한 개요를 제공합니다.

오프로드 형식 설명
TCP에 대한 체크섬 계산 네트워크 스택은 송신 및 수신 코드 경로에서 TCP(Transmission Control Protocol) 검사sums의 계산 및 유효성 검사를 오프로드할 수 있습니다. 또한 송신 및 수신 코드 경로에서 IPv4 및 IPv6 검사sums의 계산 및 유효성 검사를 오프로드할 수도 있습니다.
UDP에 대한 체크섬 계산 네트워크 스택은 보내기 및 수신 코드 경로에서 UDP(사용자 데이터그램 프로토콜) 검사sums의 계산 및 유효성 검사를 오프로드할 수 있습니다.
IPv4에 대한 체크섬 계산 네트워크 스택은 송신 및 수신 코드 경로에서 IPv4 검사sums의 계산 및 유효성 검사를 오프로드할 수 있습니다.
IPv6에 대한 체크섬 계산 네트워크 스택은 송신 및 수신 코드 경로에서 IPv6 검사소의 계산 및 유효성 검사를 오프로드할 수 있습니다.
큰 TCP 패킷의 세분화 TCP/IP 전송 계층은 LSOv2(대규모 송신 오프로드 v2)를 지원합니다. LSOv2를 사용하면 TCP/IP 전송 계층이 큰 TCP 패킷의 분할을 네트워크 어댑터로 오프로드할 수 있습니다.
RSS(수신측 배율) RSS는 다중 프로세서 시스템의 여러 CPU에서 네트워크 수신 처리를 효율적으로 배포할 수 있는 네트워크 드라이버 기술입니다. RSS에 대한 자세한 내용은 이 항목의 뒷부분에 나와 있습니다.
Receive Segment Coalescing (RSC) RSC는 호스트가 수행하는 데 필요한 헤더 처리를 최소화하기 위해 패킷을 그룹화하는 기능입니다. 최대 64KB의 수신 페이로드는 처리를 위해 단일 더 큰 패킷으로 병합할 수 있습니다. RSC에 대한 자세한 내용은 이 항목의 뒷부분에 나와 있습니다.

수신측 배율

Windows Server 2016, Windows Server 2012, Windows Server 2012 R2, Windows Server 2008 R2 및 Windows Server 2008은 RSS(수신측 크기 조정)를 지원합니다.

일부 서버는 하드웨어 리소스(예: 물리적 코어)를 공유하고 SMT(동시 다중 스레딩) 피어로 처리되는 여러 논리 프로세서로 구성됩니다. Intel 하이퍼 스레딩 기술 예입니다. RSS는 네트워크 처리를 코어당 최대 하나의 논리 프로세서로 전달합니다. 예를 들어 Intel Hyper-Threading, 4코어 및 8개의 논리 프로세서가 있는 서버에서 RSS는 네트워크 처리에 4개 이하의 논리 프로세서를 사용합니다.

RSS는 동일한 TCP 연결에 속하는 패킷이 순서를 유지하는 동일한 논리 프로세서에서 처리되도록 들어오는 네트워크 I/O 패킷을 논리 프로세서 간에 분산합니다.

또한 RSS는 UDP 유니캐스트 및 멀티캐스트 트래픽의 부하를 분산시키고 관련 흐름(원본 및 대상 주소를 해시하여 결정됨)을 동일한 논리 프로세서로 라우팅하여 관련 도착 순서를 유지합니다. 이렇게 하면 적격 논리 프로세서보다 네트워크 어댑터가 적은 서버의 수신 집약적 시나리오에 대한 확장성 및 성능을 향상시킬 수 있습니다.

RSS 구성

Windows Server 2016에서는 Windows PowerShell cmdlet 및 RSS 프로필을 사용하여 RSS를 구성할 수 있습니다.

Set-NetAdapterRss Windows PowerShell cmdlet의 –Profile 매개 변수를 사용하여 RSS 프로필을 정의할 수 있습니다.

RSS 구성에 대한 Windows PowerShell 명령

다음 cmdlet을 사용하면 네트워크 어댑터당 RSS 매개 변수를 보고 수정할 수 있습니다.

참고 항목

구문 및 매개 변수를 포함하여 각 cmdlet에 대한 자세한 명령 참조를 보려면 다음 링크를 클릭할 수 있습니다. 또한 각 명령에 대한 자세한 내용은 Windows PowerShell 프롬프트에서 Get-Help에 cmdlet 이름을 전달할 수 있습니다.

  • Disable-NetAdapterRss. 이 명령은 지정한 네트워크 어댑터에서 RSS를 사용하지 않도록 설정합니다.

  • Enable-NetAdapterRss. 이 명령은 지정한 네트워크 어댑터에서 RSS를 사용하도록 설정합니다.

  • Get-NetAdapterRss. 이 명령은 지정한 네트워크 어댑터의 RSS 속성을 검색합니다.

  • Set-NetAdapterRss. 이 명령은 지정한 네트워크 어댑터에서 RSS 속성을 설정합니다.

RSS 프로필

Set-NetAdapterRss cmdlet의 –Profile 매개 변수를 사용하여 어떤 네트워크 어댑터에 할당되는 논리 프로세서를 지정할 수 있습니다. 이 매개 변수에 사용할 수 있는 값은 다음과 같습니다.

  • 가장 가깝습니다. 네트워크 어댑터의 기본 RSS 프로세서 근처에 있는 논리 프로세서 번호가 선호됩니다. 이 프로필을 사용하면 운영 체제가 부하에 따라 논리적 프로세서의 균형을 동적으로 조정할 수 있습니다.

  • ClosestStatic. 네트워크 어댑터의 기본 RSS 프로세서 근처에 있는 논리 프로세서 번호가 선호됩니다. 이 프로필을 사용하면 운영 체제가 부하에 따라 논리적 프로세서의 균형을 동적으로 조정하지 않습니다.

  • NUMA. 논리 프로세서 번호는 일반적으로 부하를 분산하기 위해 다른 NUMA 노드에서 선택됩니다. 이 프로필을 사용하면 운영 체제가 부하에 따라 논리적 프로세서의 균형을 동적으로 조정할 수 있습니다.

  • NUMAStatic. 기본 프로필입니다. 논리 프로세서 번호는 일반적으로 부하를 분산하기 위해 다른 NUMA 노드에서 선택됩니다. 이 프로필을 사용하면 운영 체제가 부하에 따라 논리적 프로세서의 균형을 동적으로 조정하지 않습니다.

  • 보수적입니다. RSS는 부하를 유지하기 위해 가능한 한 적은 프로세서를 사용합니다. 이 옵션은 인터럽트 수를 줄이는 데 도움이 됩니다.

시나리오 및 워크로드 특성에 따라 Set-NetAdapterRss Windows PowerShell cmdlet의 다른 매개 변수를 사용하여 다음을 지정할 수도 있습니다.

  • 네트워크별 어댑터 기준으로 RSS에 사용할 수 있는 논리 프로세서 수입니다.
  • 논리 프로세서 범위에 대한 시작 오프셋입니다.
  • 네트워크 어댑터가 메모리를 할당하는 노드입니다.

다음은 RSS를 구성하는 데 사용할 수 있는 추가 Set-NetAdapterRss 매개 변수입니다.

참고 항목

아래의 각 매개 변수에 대한 예제 구문에서 네트워크 어댑터 이름 이더넷은 Set-NetAdapterRss 명령의 –Name 매개 변수에 대한 예제 값으로 사용됩니다. cmdlet을 실행할 때 사용하는 네트워크 어댑터 이름이 사용자 환경에 적합한지 확인합니다.

  • * MaxProcessors: 사용할 RSS 프로세서의 최대 수를 설정합니다. 이렇게 하면 애플리케이션 트래픽이 지정된 인터페이스의 최대 프로세서 수에 바인딩됩니다. 구문 예:

    Set-NetAdapterRss –Name "Ethernet" –MaxProcessors <value>

  • * BaseProcessorGroup: NUMA 노드의 기본 프로세서 그룹을 설정합니다. 이는 RSS에서 사용되는 프로세서 배열에 영향을 줍니다. 구문 예:

    Set-NetAdapterRss –Name "Ethernet" –BaseProcessorGroup <value>

  • * MaxProcessorGroup: NUMA 노드의 최대 프로세서 그룹을 설정합니다. 이는 RSS에서 사용되는 프로세서 배열에 영향을 줍니다. 이렇게 설정하면 부하 분산이 k 그룹 내에서 정렬되도록 최대 프로세서 그룹이 제한됩니다. 구문 예:

    Set-NetAdapterRss –Name "Ethernet" –MaxProcessorGroup <value>

  • * BaseProcessorNumber: NUMA 노드의 기본 프로세서 번호를 설정합니다. 이는 RSS에서 사용되는 프로세서 배열에 영향을 줍니다. 이렇게 하면 네트워크 어댑터 간에 프로세서를 분할할 수 있습니다. 각 어댑터에 할당된 RSS 프로세서 범위의 첫 번째 논리 프로세서입니다. 구문 예:

    Set-NetAdapterRss –Name "Ethernet" –BaseProcessorNumber <Byte Value>

  • * NumaNode: 각 네트워크 어댑터에서 메모리를 할당할 수 있는 NUMA 노드입니다. 이는 k 그룹 내 또는 다른 k-그룹 내에 있을 수 있습니다. 구문 예:

    Set-NetAdapterRss –Name "Ethernet" –NumaNodeID <value>

  • * NumberofReceiveQueues: 논리 프로세서가 수신 트래픽(예: 작업 관리자에서 볼 수 있음)에 대해 사용률이 저조한 것 같으면 RSS 큐 수를 기본값인 2에서 네트워크 어댑터에서 지원하는 최대값으로 늘릴 수 있습니다. 네트워크 어댑터에는 드라이버의 일부로 RSS 큐 수를 변경하는 옵션이 있을 수 있습니다. 구문 예:

    Set-NetAdapterRss –Name "Ethernet" –NumberOfReceiveQueues <value>

자세한 내용은 다음 링크를 클릭하여 확장 가능한 네트워킹을 다운로드 합니다. 수신 처리 병목 현상 제거 - Word 형식으로 RSS 를 도입합니다.

RSS 성능 이해

RSS를 튜닝하려면 구성 및 부하 분산 논리를 이해해야 합니다. RSS 설정이 적용되었는지 확인하려면 Get-NetAdapterRss Windows PowerShell cmdlet을 실행할 때 출력을 검토할 수 있습니다. 다음은 이 cmdlet의 출력 예제입니다.


PS C:\Users\Administrator> get-netadapterrss
Name                           : testnic 2
InterfaceDescription           : Broadcom BCM5708C NetXtreme II GigE (NDIS VBD Client) #66
Enabled                        : True
NumberOfReceiveQueues          : 2
Profile                        : NUMAStatic
BaseProcessor: [Group:Number]  : 0:0
MaxProcessor: [Group:Number]   : 0:15
MaxProcessors                  : 8

IndirectionTable: [Group:Number]:
     0:0    0:4    0:0    0:4    0:0    0:4    0:0    0:4
…
(# indirection table entries are a power of 2 and based on # of processors)
…
                          0:0    0:4    0:0    0:4    0:0    0:4    0:0    0:4

설정된 에코 매개 변수 외에도 출력의 주요 측면은 간접 참조 테이블 출력입니다. 간접 참조 테이블에는 들어오는 트래픽을 분산하는 데 사용되는 해시 테이블 버킷이 표시됩니다. 이 예제에서 n:c 표기법은 들어오는 트래픽을 전송하는 데 사용되는 Numa K-Group:CPU 인덱스 쌍을 지정합니다. 각각 k-group 0/cpu0 및 k-group 0/cpu 4를 나타내는 2개의 고유 항목(0:0 및 0:4)이 표시됩니다.

이 시스템에 대한 k-group(k-group 0)과 n(여기서 n <= 128) 간접 참조 테이블 항목은 하나만 있습니다. 수신 큐 수는 2로 설정되므로 최대 프로세서가 8로 설정되어 있더라도 2개의 프로세서(0:0, 0:4)만 선택됩니다. 실제로 간접 참조 테이블은 들어오는 트래픽을 해시하여 사용 가능한 8개 중 2개의 CPU만 사용합니다.

CPU를 완전히 활용하려면 RSS 수신 큐 수가 최대 프로세서보다 크거나 같아야 합니다. 이전 예제에서는 수신 큐를 8 이상으로 설정해야 합니다.

NIC 팀 및 RSS

RSS는 NIC 팀을 사용하여 카드 다른 네트워크 인터페이스와 협력되는 네트워크 어댑터에서 사용할 수 있습니다. 이 시나리오에서는 RSS를 사용하도록 기본 물리적 네트워크 어댑터만 구성할 수 있습니다. 사용자는 팀 네트워크 어댑터에서 RSS cmdlet을 설정할 수 없습니다.

Receive Segment Coalescing (RSC)

수신 세그먼트 병합(RSC)은 지정된 양의 수신된 데이터에 대해 처리되는 IP 헤더 수를 줄여 성능을 향상합니다. 더 작은 패킷을 더 큰 단위로 그룹화(또는 병합)하여 수신된 데이터의 성능을 조정하는 데 사용해야 합니다.

이 방법은 처리량 향상에서 주로 볼 수 있는 이점으로 대기 시간에 영향을 줄 수 있습니다. RSC는 수신된 무거운 워크로드에 대한 처리량을 늘리는 것이 좋습니다. RSC를 지원하는 네트워크 어댑터를 배포하는 것이 좋습니다.

이러한 네트워크 어댑터에서 RSC가 꺼져 있는 이점을 보여 주는 특정 워크로드(예: 짧은 대기 시간, 낮은 처리량 네트워킹)가 없는 한 RSC가 켜져 있는지 확인합니다(기본 설정).

RSC 진단 이해

Windows PowerShell cmdlet Get-NetAdapterRsc 및 Get-NetAdapterStatistics를 사용하여 RSC를 진단할 수 있습니다.

다음은 Get-NetAdapterRsc cmdlet을 실행할 때 출력 예제입니다.


PS C:\Users\Administrator> Get-NetAdapterRsc

Name                       IPv4Enabled  IPv6Enabled  IPv4Operational IPv6Operational               IPv4FailureReason              IPv6Failure
                                            Reason
----                           -----------  -----------  --------------- --------------- ----------------- ------------
Ethernet                       True         False        True            False                  NoFailure       NicProperties

Get cmdlet은 인터페이스에서 RSC를 사용할 수 있는지 여부와 TCP가 RSC를 작동 상태로 설정할 수 있는지 여부를 보여 줍니다. 실패 원인은 해당 인터페이스에서 RSC를 사용하도록 설정하지 못한 것에 대한 세부 정보를 제공합니다.

이전 시나리오에서 IPv4 RSC는 인터페이스에서 지원되고 작동합니다. 진단 오류를 이해하기 위해 병합된 바이트 또는 발생한 예외를 확인할 수 있습니다. 이렇게 하면 병합 문제를 알 수 있습니다.

다음은 Get-NetAdapterStatistics cmdlet을 실행할 때의 출력 예제입니다.

PS C:\Users\Administrator> $x = Get-NetAdapterStatistics "myAdapter"
PS C:\Users\Administrator> $x.rscstatistics

CoalescedBytes       : 0
CoalescedPackets     : 0
CoalescingEvents     : 0
CoalescingExceptions : 0

RSC 및 가상화

RSC는 호스트 네트워크 어댑터가 Hyper-V 가상 스위치에 바인딩되지 않은 경우에만 물리적 호스트에서 지원됩니다. 호스트가 Hyper-V 가상 스위치에 바인딩된 경우 운영 체제에서 RSC를 사용하지 않도록 설정합니다. 또한 가상 네트워크 어댑터는 RSC를 지원하지 않으므로 가상 머신은 RSC의 이점을 얻지 않습니다.

SR-IOV(단일 루트 입력/출력 가상화)를 사용하는 경우 가상 머신에 RSC를 사용하도록 설정할 수 있습니다. 이 경우 가상 함수는 RSC 기능을 지원합니다. 따라서 가상 머신은 RSC의 혜택을 받습니다.

네트워크 어댑터 리소스

일부 네트워크 어댑터는 최적의 성능을 달성하기 위해 리소스를 적극적으로 관리합니다. 여러 네트워크 어댑터를 사용하면 어댑터에 대한 고급 네트워킹 탭을 사용하여 리소스를 수동으로 구성할 수 있습니다. 이러한 어댑터의 경우 수신 버퍼 수 및 송신 버퍼를 포함하여 여러 매개 변수의 값을 설정할 수 있습니다.

네트워크 어댑터 리소스 구성은 다음 Windows PowerShell cmdlet을 사용하여 간소화됩니다.

자세한 내용은 Windows PowerShell의 네트워크 어댑터 Cmdlet을 참조하세요.

이 가이드의 모든 항목에 대한 링크는 네트워크 하위 시스템 성능 튜닝을 참조 하세요.