대역폭/처리량 테스트(NTTTCP)Bandwidth/Throughput testing (NTTTCP)

Azure에서 네트워크 처리량 성능을 테스트하는 경우 테스트할 네트워크를 대상으로 지정하고 성능에 영향을 줄 수 있는 기타 리소스의 사용을 최소화하는 도구를 사용하는 것이 가장 좋습니다.When testing network throughput performance in Azure, it's best to use a tool that targets the network for testing and minimizes the use of other resources that could impact performance. NTTTCP가 권장됩니다.NTTTCP is recommended.

이 도구를 같은 크기의 두 Azure VM에 복사합니다.Copy the tool to two Azure VMs of the same size. 한 VM은 송신기 역할을 하고 다른 VM은 수신기 역할을 합니다.One VM functions as SENDER and the other as RECEIVER.

테스트를 위해 VM 배포Deploying VMs for testing

이 테스트를 위해 두 Vm이 동일한 근접 배치 그룹 또는 동일한 가용성 집합에 있어야 내부 ip를 사용 하 고 테스트에서 부하 분산 장치를 제외할 수 있습니다.For the purposes of this test, the two VMs should be in either the same Proximity Placement Group or the same Availability Set so that we can use their internal IPs and exclude the Load Balancers from the test. VIP로 테스트할 수 있지만 이러한 종류의 테스트는 이 문서에서 다루지 않습니다.It is possible to test with the VIP but this kind of testing is outside the scope of this document.

수신기의 IP 주소를 기록해 둡니다.Make a note of the RECEIVER's IP address. 해당 IP를 "a.b.c.r"로 지칭하겠습니다.Let's call that IP "a.b.c.r"

VM의 코어 수를 기록해 둡니다.Make a note of the number of cores on the VM. 이것을 "#num_cores"로 지칭하겠습니다.Let's call this "#num_cores"

송신기 VM과 수신기 VM에서 300초(또는 5분) 동안 NTTTCP 테스트를 실행합니다.Run the NTTTCP test for 300 seconds (or 5 minutes) on the sender VM and receiver VM.

팁: 이 테스트를 처음 설정할 때는 더 빠른 피드백을 얻기 위해 테스트 기간을 더 짧게 유지할 수 있습니다.Tip: When setting up this test for the first time, you might try a shorter test period to get feedback sooner. 이 도구가 예상대로 작동하면 가장 정확한 결과를 얻기 위해 테스트 기간을 300초로 연장합니다.Once the tool is working as expected, extend the test period to 300 seconds for the most accurate results.

참고

송신기 수신기는 동일한 테스트 기간 매개 변수(-t)를 지정해야 합니다.The sender and receiver must specify the same test duration parameter (-t).

10초 동안 단일 TCP 스트림을 테스트하려면To test a single TCP stream for 10 seconds:

수신기 매개 변수: ntttcp -r -t 10 -P 1Receiver parameters: ntttcp -r -t 10 -P 1

송신기 매개 변수: ntttcp -s10.27.33.7 -t 10 -n 1 -P 1Sender parameters: ntttcp -s10.27.33.7 -t 10 -n 1 -P 1

참고

이전 샘플은 구성을 확인하는 데만 사용해야 합니다.The preceding sample should only be used to confirm your configuration. 올바른 테스트 예제는 이 문서 뒷부분에 나옵니다.Valid examples of testing are covered later in this document.

Windows가 실행되는 VM 테스트:Testing VMs running WINDOWS:

VM에 NTTTCP를 가져옵니다.Get NTTTCP onto the VMs.

최신 버전을 다운로드합니다(https://github.com/microsoft/ntttcp/releases/download/v5.35/NTttcp.exe).Download the latest version: https://github.com/microsoft/ntttcp/releases/download/v5.35/NTttcp.exe

또는 최상위 GitHub 페이지를 봅니다. https://github.com/microsoft/ntttcpOr view the top-level GitHub Page: https://github.com/microsoft/ntttcp\

NTTTCP를 c:\tools와 같은 별도 폴더에 추가하는 것을 고려합니다.Consider putting NTTTCP in separate folder, like c:\tools

NTTTCP가 Windows 방화벽을 통과하도록 허용Allow NTTTCP through the Windows firewall

수신기에서 Windows 방화벽에 NTTTCP 트래픽이 도착하도록 허용 규칙을 만듭니다.On the RECEIVER, create an Allow rule on the Windows Firewall to allow the NTTTCP traffic to arrive. 특정 TCP 포트에서 인바운드를 허용하는 것보다 이름으로 전체 NTTTCP 프로그램을 허용하는 것이 가장 쉽습니다.It's easiest to allow the entire NTTTCP program by name rather than to allow specific TCP ports inbound.

다음과 같이 ntttcp가 Windows 방화벽을 통과하도록 허용합니다.Allow ntttcp through the Windows Firewall like this:

netsh advfirewall firewall add rule program = <PATH> \ntttcp.exe name = "ntttcp" protocol = any dir = in action = allow enable = yes PROFILE = anynetsh advfirewall firewall add rule program=<PATH>\ntttcp.exe name="ntttcp" protocol=any dir=in action=allow enable=yes profile=ANY

예를 들어 ntttcp.exe를 "c:\tools" 폴더에 복사한 경우 명령은 다음과 같습니다.For example, if you copied ntttcp.exe to the "c:\tools" folder, this would be the command:

netsh advfirewall firewall add rule program=c:\tools\ntttcp.exe name="ntttcp" protocol=any dir=in action=allow enable=yes profile=ANYnetsh advfirewall firewall add rule program=c:\tools\ntttcp.exe name="ntttcp" protocol=any dir=in action=allow enable=yes profile=ANY

NTTTCP 테스트 실행Running NTTTCP tests

수신기에서 NTTTCP를 시작합니다(PowerShell이 아닌 CMD에서 실행).Start NTTTCP on the RECEIVER (run from CMD, not from PowerShell):

ntttcp -r –m [2*#num_cores],*,a.b.c.r -t 300ntttcp -r –m [2*#num_cores],*,a.b.c.r -t 300

VM에 4개의 코어가 있고 IP 주소가 10.0.0.4이면 다음과 같이 표시됩니다.If the VM has four cores and an IP address of 10.0.0.4, it would look like this:

ntttcp -r –m 8,*,10.0.0.4 -t 300ntttcp -r –m 8,*,10.0.0.4 -t 300

수신기에서 NTTTCP를 시작합니다(PowerShell이 아닌 CMD에서 실행).Start NTTTCP on the SENDER (run from CMD, not from PowerShell):

ntttcp -s –m 8,*,10.0.0.4 -t 300ntttcp -s –m 8,*,10.0.0.4 -t 300

결과를 기다립니다.Wait for the results.

LINUX가 실행되는 VM 테스트:Testing VMs running LINUX:

nttcp-for-linux를 사용합니다.Use nttcp-for-linux. https://github.com/Microsoft/ntttcp-for-linux에서 사용할 수 있습니다.It is available from https://github.com/Microsoft/ntttcp-for-linux

Linux VM(송신기 및 수신기 둘 다)에서 다음 명령을 실행하여 VM에서 ntttcp-for-linux를 준비합니다.On the Linux VMs (both SENDER and RECEIVER), run these commands to prepare ntttcp-for-linux on your VMs:

CentOS-gcc 및 git 설치:CentOS - Install gcc and git:

  yum install gcc -y  
  yum install git -y

Ubuntu-빌드-필수 및 git 설치:Ubuntu - Install build-essential and git:

 apt-get -y install build-essential  
 apt-get -y install git

SUSE-git-core, gcc를 설치 하 고 다음을 수행 합니다.SUSE - Install git-core, gcc, and make:

  zypper in -y git-core gcc make

둘 다에서 만들고 설치합니다.Make and Install on both:

 git clone https://github.com/Microsoft/ntttcp-for-linux
 cd ntttcp-for-linux/src
 make && make install

Windows 예제와 같이 Linux 수신기의 IP를 10.0.0.4로 가정합니다.As in the Windows example, we assume the Linux RECEIVER's IP is 10.0.0.4

수신기에서 NTTTCP-for-Linux를 시작합니다.Start NTTTCP-for-Linux on the RECEIVER:

ntttcp -r -t 300

그런 후 송신기에서 다음을 실행합니다.And on the SENDER, run:

ntttcp -s10.0.0.4 -t 300

시간 매개 변수를 지정하지 않을 경우 기본 테스트 시간은 60초입니다.Test length defaults to 60 seconds if no time parameter is given

Windows 및 LINUX가 실행되는 VM 간의 테스트:Testing between VMs running Windows and LINUX:

이 시나리오에서는 테스트를 실행할 수 있도록 비동기화 모드를 사용하도록 설정합니다.On this scenarios we should enable the no-sync mode so the test can run. Linux의 경우 -N 플래그, Windows의 경우 -ns 플래그 를 사용하여 설정합니다.This is done by using the -N flag for Linux, and -ns flag for Windows.

Linux에서 Windows로:From Linux to Windows:

받는 사람 <Windows>:Receiver <Windows>:

ntttcp -r -m <2 x nr cores>,*,<Windows server IP>

보낸 사람 <Linux>:Sender <Linux> :

ntttcp -s -m <2 x nr cores>,*,<Windows server IP> -N -t 300

Windows에서 Linux로:From Windows to Linux:

받는 사람 <Linux>:Receiver <Linux>:

ntttcp -r -m <2 x nr cores>,*,<Linux server IP>

보낸 사람 <Windows>:Sender <Windows>:

ntttcp -s -m <2 x nr cores>,*,<Linux  server IP> -ns -t 300

클라우드 서비스 인스턴스 테스트:Testing Cloud Service Instances:

다음 섹션을 ServiceDefinition.csdef에 추가해야 합니다.You need to add following section into your ServiceDefinition.csdef

<Endpoints>
  <InternalEndpoint name="Endpoint3" protocol="any" />
</Endpoints> 

다음 단계Next steps