내용으로 건너뛰기

동일한 VPC에 있는 Amazon EC2 Linux 인스턴스 간의 네트워크 처리량을 벤치마크하려면 어떻게 해야 합니까?

6분 분량
0

동일한 Amazon Virtual Private Cloud(Amazon VPC)에 있는 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스 간의 네트워크 대역폭을 측정하려고 합니다.

해결 방법

네트워크 처리량을 테스트하는 데 사용할 인스턴스 유형, 크기 및 구성 정의

인스턴스가 동일한 VPC에 있는 경우 여러 요인으로 인해 서로 다른 클라우드 환경 간에 상당한 네트워크 성능 차이가 발생할 수 있습니다. 환경의 네트워크 성능을 정기적으로 평가하고 기준을 정하여 애플리케이션 성능을 개선하는 것이 가장 좋습니다. 네트워크 성능 테스트는 요구 사항에 가장 적합한 EC2 인스턴스 유형, 크기 및 구성을 결정하는 데 유용한 인사이트를 제공합니다.

네트워크 성능 향상을 위한 인스턴스 수정

인스턴스를 서로 가깝게 유지

인스턴스가 서로 가까이 있어야 합니다. 물리적으로 가까운 인스턴스는 더 나은 성능을 제공합니다. 인스턴스가 서로 멀리 떨어져 있으면 네트워크 지연이 발생할 수 있습니다. 동일한 가용 영역 또는 AWS 리전에 있는 인스턴스는 서로 다른 가용 영역 또는 리전에 있는 EC2 인스턴스보다 높은 네트워크 처리량을 제공합니다. 다음 시나리오에서는 인스턴스가 서로 점점 멀어집니다.

  • 동일한 리전의 동일한 가용 영역에 있는 인스턴스
  • 동일한 리전의 서로 다른 가용 영역에 있는 인스턴스
  • 같은 대륙의 서로 다른 리전에 있는 인스턴스
  • 서로 다른 대륙의 서로 다른 리전에 있는 인스턴스

인스턴스의 MTU 늘리기

최대 전송 단위(MTU)를 늘리십시오. 모든 EC2 인스턴스 유형이 1,500MTU를 지원합니다. 모든 현재 세대 인스턴스와 이전 세대 C3, G2, I2, M3 및 R3 인스턴스는 점보 프레임을 지원합니다. 점보 프레임은 1,500MTU 이상을 허용합니다. 하지만 점보 프레임을 지원하는 인스턴스는 특정 시나리오에서 1,500MTU로 제한될 수 있습니다.

인스턴스 크기 늘리기

인스턴스 크기를 늘리십시오. 인스턴스 유형에서 큰 인스턴스 크기는 일반적으로 같은 유형이지만 크기가 더 작은 인스턴스보다 더 나은 네트워크 성능을 제공합니다.

Linux에 대해 향상된 네트워킹 지원 사용

향상된 네트워킹을 사용하십시오. 향상된 네트워킹은 높은 성능과 일관되게 낮은 인스턴스 간 지연 시간을 제공합니다. 모든 현재 세대 인스턴스는 기본적으로 Elastic Network Adaptor(ENA) 또는 ENA Express 드라이버를 사용하여 향상된 네트워킹을 활성화합니다.

향상된 네트워킹을 지원하는 이전 세대 인스턴스 유형에서 향상된 네트워킹을 사용하려면 추가적인 구성이 필요할 수 있습니다.

자세한 내용은 EC2 인스턴스에서 향상된 네트워킹을 활성화하고 구성하려면 어떻게 해야 합니까?를 참조하십시오.

배치 그룹에 인스턴스 배치

워크로드 요구 사항을 충족하도록 상호 의존적인 인스턴스를 배치 그룹으로 시작하십시오. 고성능 컴퓨팅(HPC)은 전체 양방향 대역폭과 짧은 지연 시간을 제공하며 인스턴스 유형에 따라 최대 100GB의 네트워크 속도를 지원합니다.

네트워크 I/O 크레딧 메커니즘을 사용하여 네트워크 대역폭 할당

사용 중인 인스턴스 유형에서 I/O 네트워크 크레딧을 사용하여 기준 대역폭을 초과하여 버스트할 수 있는지 확인하려면 네트워크 사양을 참조하십시오.

테스트 인스턴스 설정

다음 단계를 완료하십시오.

  1. 두 개의 테스트 Linux 인스턴스를 시작합니다.
  2. 인스턴스가 Linux에 대한 향상된 네트워킹을 지원하고 동일한 Amazon VPC에 있는지 확인합니다.
  3. (선택 사항) 점보 프레임을 지원하지 않는 인스턴스 간에 네트워크 테스트를 수행하는 경우, 인스턴스에 네트워크 MTU를 설정합니다.
  4. SSH를 사용해 인스턴스에 연결하여 액세스할 수 있는지 확인합니다.

두 인스턴스에 iperf3 네트워크 벤치마크 도구 설치

Amazon Linux와 같은 일부 배포판에서 iperf3은 Extra Packages for Enterprise Linux(EPEL) 리포지토리의 일부입니다. EPEL 리포지토리를 켜려면 CentOS, RHEL 또는 Amazon Linux를 실행하는 Amazon EC2 인스턴스에 대해 EPEL 리포지토리를 활성화하려면 어떻게 해야 하나요?를 참조하십시오.

iperf3 도구에 대한 자세한 내용은 ESnet 웹사이트에서 iperf2/iperf3을 참조하십시오.

SSH를 사용하여 Linux 인스턴스에 연결합니다. 그런 다음, 운영 체제(OS)에 대해 다음 명령 중 하나를 실행하여 iperf3을 설치합니다.

Red Hat Enterprise Linux(RHEL) 9:

$ sudo dnf -y install iperf3

Debian 또는 Ubuntu:

$ sudo apt-get install -y iperf3

CentOS 6/7:

$ sudo yum -y install epel-release && yum -y install iperf3

Amazon Linux 2023:

$ sudo yum -y install iperf3

인스턴스 간 TCP 네트워크 성능 테스트

기본적으로 iperf3은 TCP 성능을 테스트할 때 포트 5001을 통해 통신합니다. 하지만 -p 스위치를 사용하여 포트를 변경할 수 있습니다. iperf3이 사용하는 포트를 통한 통신을 허용하도록 보안 그룹을 구성해야 합니다.

첫 번째 인스턴스를 특정 TCP 포트에서 수신하는 서버로 구성하려면 다음 명령을 실행하십시오.

$ sudo iperf3 -s -p 5001

참고: 포트를 변경하려면 5001을 원하는 포트 번호로 바꾸십시오.

두 번째 인스턴스를 클라이언트로 구성한 다음, 관련 파라미터를 사용하여 서버에 대해 테스트를 실행합니다. 예를 들어 다음 명령은 40개의 병렬 연결이 있는 서버에 대해 TCP 테스트를 시작합니다.

$ sudo iperf3 -c 172.31.30.41 --parallel 40 -i 1 -t 2

출력에는 각 클라이언트 스트림에서 전송되는 간격과 데이터 및 각 클라이언트 스트림이 사용하는 대역폭이 표시됩니다. 다음 iperf3 출력은 클러스터 배치 그룹에서 시작하는 두 개의 c5n.18xlarge EC2 Linux 인스턴스에 대한 테스트 결과를 보여줍니다. 모든 연결에서 전송되는 총 대역폭은 97.6Gbps입니다.

출력 예시:

------------------------------------------------------------------------------------Client connecting to 172.31.30.41, TCP port 5001
TCP window size:  975 KByte (default)
------------------------------------------------------------------------------------
[  8] local 172.31.20.27 port 49498 connected with 172.31.30.41 port 5001
[ 38] local 172.31.20.27 port 49560 connected with 172.31.30.41 port 5001
[ 33] local 172.31.20.27 port 49548 connected with 172.31.30.41 port 5001
[ 40] local 172.31.20.27 port 49558 connected with 172.31.30.41 port 5001
[ 36] local 172.31.20.27 port 49554 connected with 172.31.30.41 port 5001
[ 39] local 172.31.20.27 port 49562 connected with 172.31.30.41 port 5001
...
[SUM]  0.0- 2.0 sec  22.8 GBytes  97.6 Gbits/sec

인스턴스 간 UDP 네트워크 성능 테스트

기본적으로 iperf3은 UDP 성능을 테스트할 때 포트 5001을 통해 통신합니다. 하지만 -p 스위치를 사용하여 포트를 변경할 수 있습니다. iperf3이 사용하는 포트를 통한 통신을 허용하도록 보안 그룹을 구성해야 합니다.

참고: 다른 대역폭을 지정하지 않는 한 UDP의 기본값은 1Mbps입니다.

첫 번째 인스턴스를 특정 UDP 포트에서 수신하는 서버로 구성하려면 다음 명령을 실행하십시오.

$ sudo iperf3 -s -u -p 5001

참고: 포트를 변경하려면 5001을 원하는 포트 번호로 바꾸십시오.

두 번째 인스턴스를 클라이언트로 구성한 다음, 원하는 파라미터를 사용하여 서버에 대해 테스트를 실행합니다. 다음 예에서는 -b 파라미터를 5g로 설정한 상태에서 서버 인스턴스에 대해 UDP 테스트를 실행합니다. -b 파라미터는 대역폭을 UDP 기본값인 1Mbps에서 5Gbps로 변경합니다. 5Gbps는 c5n.18xlarge 인스턴스가 VPC 내 단일 트래픽 흐름에 대해 제공할 수 있는 최대 네트워크 성능입니다.

$ sudo iperf3 -c 172.31.1.152 -u -b 5g

참고: UDP는 연결이 필요 없으며 TCP에 포함된 혼잡 제어 알고리즘이 없습니다. iperf3으로 테스트할 경우 UDP에서 얻는 대역폭은 TCP에서 얻는 대역폭보다 낮을 수 있습니다.

출력 예시:

$ sudo iperf3 -c 172.31.30.41 -u -b 5g
------------------------------------------------------------------------------------
Client connecting to 172.31.30.41, UDP port 5001
Sending 1470 byte datagrams, IPG target: 2.35 us (kalman adjust)
UDP buffer size:  208 KByte (default)
------------------------------------------------------------------------------------
[  3] local 172.31.20.27 port 39022 connected with 172.31.30.41 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3] 0.0-10.0 sec  5.82 GBytes  5.00 Gbits/sec
[  3] Sent 4251700 datagrams
[  3] Server Report:
[  3] 0.0-10.0 sec  5.82 GBytes  5.00 Gbits/sec   0.003 ms 1911/4251700 (0.045%)
[  3] 0.00-10.00 sec  1 datagrams received out-of-order

위의 예제 출력에서는 다음 값을 보여줍니다.

  • 간격(시간)
  • 전송된 데이터 양
  • 달성한 대역폭
  • 지터(데이터그램의 주기적 도달 시간 편차)
  • UDP 데이터그램 손실 및 합계

관련 정보

ESnet 웹사이트의 iperf3을 사용한 디스크 테스트

ESnet 웹사이트의 네트워크 튜닝

ESnet 웹사이트의 처리량 도구 비교

SourceForge 웹사이트의 Iperf2

ESnet 웹사이트의 iperf3 FAQ

AWS 공식업데이트됨 2년 전