다음을 통해 공유


네트워크 어댑터 선택

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

네트워크 집약적인 애플리케이션은 고성능 네트워크 어댑터가 필수적입니다. 이번 섹션에서는 네트워크 어댑터를 선택할 때 유의해야 할 점과, 다양한 네트워크 어댑터 설정을 통해 최상의 네트워크 성능을 구현하는 방법을 살펴봅니다.

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

오프로드 기능

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

Microsoft 제품의 네트워크 스택은 적합한 오프로드 기능을 갖춘 네트워크 어댑터를 선택하는 경우 하나 이상의 작업을 해당 네트워크 어댑터로 오프로드할 수 있습니다. 다음 표에서는 Windows Server 2016에서 지원되는 다양한 오프로드 기능에 대한 간략한 개요를 보여줍니다.

오프로드 형식 설명
TCP에 대한 체크섬 계산 네트워크 스택은 송신 및 수신 코드 경로에서 송신 제어 프로토콜 (TCP) 체크섬의 계산 및 유효성 검사를 오프로드할 수 있습니다. 또한 송신 및 수신 코드 경로에서 IPv4 및 IPv6 체크섬 계산 및 유효성 검사를 오프로드할 수 있습니다.
UDP에 대한 체크섬 계산 네트워크 스택은 송신 및 수신 코드 경로에서 사용자 데이터그램 프로토콜 (UDP) 체크섬의 계산 및 유효성 검사를 오프로드할 수 있습니다.
IPv4에 대한 체크섬 계산 네트워크 스택은 송신 및 수신 코드 경로에서 IPv4 체크섬 계산 및 유효성 검사를 오프로드할 수 있습니다.
IPv6에 대한 체크섬 계산 네트워크 스택은 송신 및 수신 코드 경로에서 IPv6 체크섬 계산 및 유효성 검사를 오프로드할 수 있습니다.
대용량 TCP 패킷의 세분화 TCP/IP 전송 계층은 대용량 송신 오프로드 (LSOv2)를 지원합니다. LSOv2를 사용하면, TCP/IP 전송 계층은 대용량 TCP 패킷의 분할 작업을 네트워크 어댑터로 오프로드할 수 있습니다.
수신측 배율 (RSS) RSS는 멀티 프로세서 시스템에서 네트워크 수신 처리를 여러 CPU에 효율적으로 할당하는 네트워크 드라이버 기술입니다. RSS에 대한 자세한 내용은 이번 토픽의 뒷부분에 나와 있습니다.
Receive Segment Coalescing (RSC) RSC는 호스트의 헤더 처리 부담을 줄이기 위해 패킷을 그룹화하는 기능입니다. 최대 64KB의 수신된 페이로드는 하나의 더 큰 패킷으로 묶어서 처리할 수 있습니다. RSS에 대한 자세한 내용은 이번 토픽의 뒷부분에 나와 있습니다.

수신측 크기 조정

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

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

RSS는 수신된 네트워크 I/O 패킷을 각각의 논리 프로세서에 분배하여, 동일한 TCP 연결에 속한 패킷들이 동일한 논리 프로세서에서 처리됨으로써 패킷 순서 유지를 가능하게 합니다.

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 인덱스 쌍을 지정합니다. 정확히 2개의 고유 항목 (0:0 및 0:4)가 확인되며, 이는 각각 k-group 0/cpu0 및 k-group 0/cpu 4를 나타냅니다.

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

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

NIC 팀 및 RSS

NIC 팀을 사용하여 다른 네트워크 인터페이스 카드와 팀을 구성하면 네트워크 어댑터에서 RSS를 활성화할 수 있습니다. 이 시나리오에서는, RSS는 기본 물리 네트워크 어댑터에 한하여 설정 및 사용이 가능합니다. 사용자는 팀 네트워크 어댑터에서 RSS cmdlet을 설정할 수 없습니다.

Receive Segment Coalescing (RSC)

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

이 방법은 처리량 증대를 주된 이점으로 하며 대기 시간에 영향을 줄 수 있습니다. 높은 수신 워크로드를 요구하는 작업의 처리량 향상을 위해 RSC를 권장합니다. RSC를 지원하는 네트워크 어댑터를 배포하는 것을 고려해보세요.

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

RSC 진단 이해

Windows PowerShell cmdlet Get-NetAdapterRscGet-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을 참조하세요.

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