EC2 Windows 인스턴스의 네트워크 성능 최적화

EC2 Windows 인스턴스의 네트워크 성능 최적화 (Optimize network performance on EC2 Windows instances)

고급 네트워킹이 포함된 Windows 인스턴스에서 최대 네트워크 성능을 달성하려면 기본 운영 체제 구성을 수정해야 할 수도 있어요. 높은 네트워크 성능이 필요한 애플리케이션에는 다음 구성 변경을 권장해요. 다른 최적화(예: 체크섬 오프로딩 켜기, RSS 활성화)는 이미 공식 Windows AMI에 구성되어 있어요.

참고 TCP chimney offloading은 대부분의 사용 사례에서 비활성화해야 하며, Windows Server 2016부터 더 이상 사용되지 않아요.

이러한 운영 체제 최적화 외에도 네트워크 트래픽의 최대 전송 단위(MTU)를 고려하고 워크로드와 네트워크 아키텍처에 따라 조정해야 해요. 자세한 내용은 'EC2 인스턴스의 네트워크 최대 전송 단위(MTU)'를 참고하세요.

AWS는 클러스터 배치 그룹에서 시작된 인스턴스 사이의 평균 왕복 지연 시간을 50us, 99.9 백분위수의 꼬리 지연 시간을 200us로 정기적으로 측정해요. 애플리케이션이 지속적으로 낮은 지연 시간을 요구한다면 Nitro System 기반의 고정 성능(fixed performance) 인스턴스에서 최신 버전의 ENA 드라이버를 사용할 것을 권장해요.

수신측 크기 조정 CPU 선호도 구성 (Configure Receive side scaling CPU affinity)

수신측 크기 조정(RSS)은 여러 프로세서에 네트워크 트래픽 CPU 부하를 분산하는 데 사용돼요. 기본적으로 공식 Amazon Windows AMI는 RSS가 활성화된 상태로 구성돼요. ENA 탄력적 네트워크 인터페이스는 최대 8개의 RSS 큐를 제공해요. RSS 큐와 다른 시스템 프로세스에 대한 CPU 선호도를 정의하면 멀티코어 시스템에서 CPU 부하를 분산해 더 많은 네트워크 트래픽을 처리할 수 있어요. vCPU가 16개를 초과하는 인스턴스 유형에서는 모든 탄력적 네트워크 인터페이스의 RSS 구성에서 부팅 프로세서(하이퍼스레딩이 활성화된 경우 논리 프로세서 0과 1)를 수동으로 제외하는 Set-NetAdapterRSS PowerShell cmdlet을 사용할 것을 권장해요. 이렇게 하면 다양한 시스템 구성 요소와의 경합을 방지할 수 있어요.

Windows는 하이퍼스레딩을 인식하며 단일 NIC(네트워크 인터페이스 카드)의 RSS 큐가 항상 서로 다른 물리적 코어에 배치되도록 보장해요. 따라서 하이퍼스레딩이 비활성화되지 않는 한 다른 NIC와의 경합을 완전히 방지하려면 각 NIC의 RSS 구성을 16개 논리 프로세서 범위에 걸쳐 분산하세요. Set-NetAdapterRss cmdlet을 사용하면 BaseProcessorGroup, BaseProcessorNumber, MaxProcessingGroup, MaxProcessorNumber, NumaNode(선택 사항) 값을 정의해 NIC당 유효 논리 프로세서 범위를 정의할 수 있어요. NIC 간 경합을 완전히 없앨 만큼 물리적 코어가 충분하지 않다면 인터페이스의 예상 워크로드에 따라 겹치는 범위를 최소화하거나 탄력적 네트워크 인터페이스 범위의 논리 프로세서 수를 줄이세요(즉, 낮은 볼륨의 관리 네트워크 인터페이스는 많은 RSS 큐를 할당할 필요가 없을 수 있어요). 또한 앞서 언급했듯이 다양한 구성 요소가 CPU 0에서 실행되어야 하므로 충분한 vCPU가 있을 때 모든 RSS 구성에서 CPU 0을 제외할 것을 권장해요.

예를 들어 하이퍼스레딩이 활성화된 2개 NUMA 노드가 있는 72 vCPU 인스턴스에 탄력적 네트워크 인터페이스가 3개 있을 때 다음 명령은 겹치지 않고 두 CPU 사이에 네트워크 부하를 분산하며 코어 0의 사용을 완전히 방지해요.

Set-NetAdapterRss -Name NIC1 -BaseProcessorGroup 0 -BaseProcessorNumber 2 -MaxProcessorNumber 16 
Set-NetAdapterRss -Name NIC2 -BaseProcessorGroup 1 -BaseProcessorNumber 0 -MaxProcessorNumber 14 
Set-NetAdapterRss -Name NIC3 -BaseProcessorGroup 1 -BaseProcessorNumber 16 -MaxProcessorNumber 30 

이러한 설정은 각 네트워크 어댑터에 대해 지속된다는 점에 유의하세요. 인스턴스를 vCPU 수가 다른 인스턴스로 크기를 조정하면 활성화된 각 탄력적 네트워크 인터페이스의 RSS 구성을 다시 평가해야 해요. cmdlet의 전체 Microsoft 설명서는 여기에서 확인할 수 있어요: Set-NetAdapterRss.

SQL 워크로드 특별 참고: 같은 CPU에서 I/O와 네트워크 경합을 최소화하기 위해 탄력적 네트워크 인터페이스 RSS 구성과 함께 I/O 스레드 선호도 설정을 검토할 것을 권장해요. '서버 구성: 선호도 마스크'를 참고하세요.

더 알아보기 (Learn more)