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

최종 업데이트 날짜: 2019년 2월 28일

동일한 VPC에서 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스 간의 네트워크 대역폭을 측정해야 합니다. 어떻게 해야 합니까?

간략한 설명

이 예제는 동일한 VPC의 EC2 인스턴스 간에만 적용됩니다. Amazon EC2 네트워크 성능에 영향을 줄 수 있는 몇 가지 요인은 다음과 같습니다.

  • EC2 인스턴스의 물리적 근접성. 동일한 가용 영역에 있는 인스턴스는 서로 지리적으로 가장 가까운 반면, 동일한 리전의 다른 가용 영역에 있는 인스턴스, 동일한 대륙의 다른 리전에 있는 인스턴스, 다른 대륙의 다른 리전에 있는 인스턴스는 나열된 순서대로 서로 더 멀리 떨어져 있습니다.
  • EC2 인스턴스 MTU(최대 전송 단위). 점보 프레임(9,001MTU)에 나열된 인스턴스 크기 중 하나에 해당하는 EC2 인스턴스의 기본 구성에 점보 프레임이 사용됩니다.
  • EC2 인스턴스의 크기. 특정 인스턴스 유형의 인스턴스 크기가 더 크면 일반적으로 유형이 동일하고 인스턴스 크기가 더 작을 때보다 더 좋은 네트워크 성능을 제공합니다.
  • Linux에 대한 EC2 확장 네트워킹 지원 (T2 및 M3 인스턴스 유형 제외).
  • 배치 그룹을 사용한 EC2 HPC(고성능 컴퓨팅) 지원. HPC는 전체 바이섹션 대역폭과 낮은 지연 시간을 제공하며 인스턴스 유형에 따라 최대 100기가비트의 네트워크 속도를 지원합니다. 각 인스턴스 유형의 네트워크 성능을 확인하려면 인스턴스 유형 표를 참조하십시오. 자세한 내용은 배치 그룹에서 인스턴스 시작을 참조하십시오.

이러한 요인으로 인해 다양한 클라우드 환경 간에 상당한 네트워크 성능 차이가 나타날 수 있습니다. 모범 사례로서, 환경의 네트워크 성능을 정기적으로 평가하고 기준선을 설정하여, 애플리케이션 성능을 개선하는 것이 좋습니다 네트워크 성능 테스트를 통해 요구 사항에 가장 적합한 EC2 인스턴스 유형, 크기 및 구성을 결정하는 데 유용한 분석 정보를 얻을 수 있습니다.

​해결 방법

벤치마크 테스트를 시작하기 전에 Linux EC2 인스턴스를 시작하고 구성합니다.

  1. 네트워크 성능 테스트를 실행할 수 있는 ​2개의 Linux 인스턴스를 시작합니다.
  2. 인스턴스가 Linux용 확장 네트워킹을 지원해야 하며 동일한 VPC에 있어야 합니다.
  3. (선택 사항) 점보 프레임을 지원하지 않는 인스턴스 간에 네트워크 테스트를 수행하는 경우 EC2 인스턴스의 네트워크 MTU(최대 전송 단위)의 단계에 따라 인스턴스의 MTU를 확인하고 설정합니다.
  4. 인스턴스에 연결하여 해당 인스턴스에 액세스할 수 있는지 확인합니다.

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

Amazon Linux와 같은 일부 배포판에서는 iperf가 EPEL 리포지토리의 일부로 포함되어 있습니다. EPEL 리포지토리를 활성화하려면 CentOS, RHEL 또는 Amazon Linux를 실행 중인 Amazon EC2 인스턴스에 대해 EPEL 리포지토리를 활성화하려면 어떻게 해야 합니까?를 참조하십시오.

Linux 인스턴스에 연결하고 다음 명령을 실행하여 iperf를 설치합니다.

RHEL 6 Linux 호스트에 iperf를 설치하려면 다음과 유사한 명령을 실행합니다.

# yum -y install  https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm  && yum -y install iperf

RHEL 7 Linux 호스트에 iperf를 설치하려면 다음과 유사한 명령을 실행합니다.

# yum -y install  https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  && yum -y install iperf

Debian/Ubuntu 호스트에 iperf를 설치하려면 다음과 유사한 명령을 실행합니다.

# apt-get install -y iperf

CentOS6/7 호스트에 iperf를 설치하려면 다음과 유사한 명령을 실행합니다.

# yum -y install epel-release && yum -y install iperf

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

TCP 성능을 테스트할 때 iperf는 기본적으로 포트 5001을 통해 통신합니다. 하지만 -p 스위치를 사용하면 해당 포트를 구성할 수 있습니다 보안 그룹이 iperf에 사용되는 포트를 통한 통신을 허용하도록 구성되어 있는지 확인합니다.

인스턴스 하나를 기본 포트에서 수신 대기하는 서버로 구성하거나 -p 스위치를 사용하여 대체 리스너 포트를 지정합니다.

$ sudo iperf -s [-p <port number>]

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

$ sudo iperf -c 192.0.2.0 --parallel 10 -i 1 -t 60 [-p <port number>]

이러한 지정된 iperf 파라미터를 사용하면 클라이언트 스트림당 간격(60초), 클라이언트 스트림당 전송된 데이터 및 각 클라이언트 스트림에 사용된 대역폭이 출력에 표시됩니다. 여기에 표시된 iperf 출력은 2개의 c5n.18xlarge EC2 Linux 인스턴스를 테스트하여 생성되었습니다. 여기에서는 표시하기 쉽도록 -t 파라미터를 -t 60 대신 -t 2로 수정하고 --parallel 10을 --parallel 2로 수정했습니다. 모든 연결을 통해 전송된 총 대역폭은 9.6Gbits/s였습니다.

Output:
$ iperf3 -c 192.0.2.0 -t 2 -i 1 --parallel 2 -R
Connecting to host 192.0.2.0, port 5201
Reverse mode, remote host 192.0.2.0 is sending
[  4] local 198.51.100.0 port 47122 connected to 192.0.2.0 port 5201
[  6] local 198.51.100.0 port 47124 connected to 192.0.2.0 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   572 MBytes  4.80 Gbits/sec
[  6]   0.00-1.00   sec   572 MBytes  4.80 Gbits/sec
[SUM]   0.00-1.00   sec  1.12 GBytes  9.60 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec   573 MBytes  4.80 Gbits/sec
[  6]   1.00-2.00   sec   573 MBytes  4.80 Gbits/sec
[SUM]   1.00-2.00   sec  1.12 GBytes  9.61 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-2.00   sec  1.12 GBytes  4.82 Gbits/sec    0             sender
[  4]   0.00-2.00   sec  1.12 GBytes  4.81 Gbits/sec                  receiver
[  6]   0.00-2.00   sec  1.12 GBytes  4.81 Gbits/sec    0             sender
[  6]   0.00-2.00   sec  1.12 GBytes  4.81 Gbits/sec                  receiver
[SUM]   0.00-2.00   sec  2.24 GBytes  9.63 Gbits/sec    0             sender
[SUM]   0.00-2.00   sec  2.24 GBytes  9.63 Gbits/sec                  receiver

iperf Done.

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

UDP 성능을 테스트할 때 iperf는 기본적으로 포트 5001을 통해 통신합니다. 하지만 -p 스위치를 사용하면 사용할 포트를 구성할 수 있습니다. 보안 그룹이 iperf에 사용되는 포트를 통한 통신을 허용하도록 구성되어 있는지 확인합니다.

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

먼저, 인스턴스 하나를 기본 포트에서 수신 대기하는 서버로 구성하거나 -p 스위치를 사용하여 대체 리스너 포트를 지정합니다.

$ sudo iperf -s [-p <port number>]

다음으로, 두 번째 인스턴스를 클라이언트로 구성한 후 원하는 파라미터를 사용하여 서버에 대한 테스트를 실행합니다. 예를 들어 다음 명령은 사용 중인 포트에서 대역폭 목표가 100Mbits/s인 지정된 서버 인스턴스에 대해 UDP 테스트를 시작합니다.

$ sudo iperf -c 10.0.2.176 [-p <port number>] -u -b 100m

출력에는 간격(시간), 전송된 데이터의 용량, 달성된 대역폭, 지터(데이터그램의 주기적 도착에 대한 시간 편차) 및 UDP 데이터그램의 손실/합계가 표시됩니다.

[ ID] Interval        Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  3]  0.0-10.0 sec   120 MBytes   101 Mbits/sec  ; 0.005 ms  0/85470 (0%)
[  3]  0.0-10.0 sec   1 datagrams received out-of-order
[  3] Sent 15113 datagrams