이 문서에서는 2개의 VM을 만들고 네트워크 성능 관측을 위해 트래픽을 앞뒤로 스트리밍하여 VM당 Tier_1 네트워킹 성능을 테스트하는 방법을 설명합니다. 이 기능을 사용하려면 Google Virtual NIC(gVNIC)를 지원하는 운영체제로 VM을 만들어야 합니다. VM당 Tier_1 네트워킹 성능에는 더 큰 VM이 필요하므로 VM을 만들기에 CPU 할당량이 충분한지 확인합니다.
시작하기 전에
- gVNIC를 지원하는 공개 이미지를 사용하거나 프로젝트에 커스텀 이미지를 만들어야 합니다.
iperf
성능 테스트를 허용하기 위해 TCP:5001 포트 또는 다른 선택한 포트로 인그레스를 허용하도록 VPC 방화벽을 만들었는지 확인합니다.- 버전 3이 아닌 iPerf 버전 2를 사용하여 벤치마킹을 수행합니다.
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음 옵션 중 하나를 선택하여 Compute Engine에 인증하면 됩니다.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
이미지를 만들려면 gcloud compute images create 명령어를 사용합니다.
gcloud compute images create IMAGE_NAME \ --project=PROJECT_ID \ --source-image-family=SOURCE_IMAGE_FAMILY \ --source-image-project=SOURCE_IMAGE_PROJECT \ --guest-os-features=GVNIC
다음을 바꿉니다.
- PROJECT_ID: 프로젝트의 이름입니다.
- IMAGE_NAME: 만들려는 이미지의 이름입니다.
- SOURCE_IMAGE_FAMILY: 공개 이미지의 필수 버전입니다. 이 테스트에는
ubuntu-2004-lts
를 사용합니다. - SOURCE_IMAGE_PROJECT: 소스 이미지가 포함된 프로젝트의 이름입니다. 이 테스트에는
ubuntu-os-cloud
를 사용합니다.
예시
gcloud compute images create benchmark-image-test \ --project=my-project \ --source-image-family=ubuntu-2004-lts \ --source-image-project=ubuntu-os-cloud \ --guest-os-features=GVNIC
최대 MTU 설정을 사용하는 자동 모드 VPC 네트워크를 만듭니다.
gcloud compute networks create NETWORK_NAME \ --project=PROJECT_ID \ --subnet-mode=AUTO --mtu=8896
다음을 바꿉니다.
- PROJECT_ID: 프로젝트의 이름입니다.
- NETWORK_NAME: 네트워크의 이름입니다.
동일한 인스턴스를 2개 만듭니다.
gcloud compute instances create \ VM_NAME_1 VM_NAME_2 \ --project=PROJECT_ID \ --zone=ZONE \ --machine-type=n2-standard-64 \ --image=projects/PROJECT_NAME/global/images/IMAGE_NAME \ --network=NETWORK_NAME \ --network-interface=nic-type=GVNIC \ --network-performance-configs=total-egress-bandwidth-tier=TIER_1
다음을 바꿉니다.
- VM_NAME_1, VM_NAME_2: 만들려는 VM 인스턴스의 이름입니다.
- PROJECT_ID: 프로젝트 이름입니다.
- ZONE: VM의 영역입니다. 두 VM 모두 같은 영역에 있어야 합니다.
- PROJECT_NAME/global/images/IMAGE_NAME: 프로젝트 이름과 이미지 이름입니다.
- NETWORK_NAME: 최대 MTU 설정으로 구성한 네트워크의 이름입니다.
터미널 창에서 다음 명령어를 실행합니다.
/sbin/ifconfig | grep mtu
보고된 MTU가 8896이어야 합니다.
ens4: flags=4163 mtu 8896 lo: flags=73 mtu 65536
- VM_NAME_1: 보려는 VM 인스턴스의 이름입니다.
- VM_NAME_2: 보려는 VM 인스턴스의 이름입니다.
- PROJECT_ID: 프로젝트 이름입니다.
- ZONE: VM의 영역입니다. 두 VM 모두 같은 영역에 있어야 합니다.
아직 수행하지 않았으면 벤치마킹을 위한 VM 설정의 단계를 수행합니다.
두 VM이 모두 실행되면 SSH를 사용하여 VM 중 하나에 연결합니다.
gcloud compute ssh VM_NAME_1 \ --project=PROJECT_ID
다음을 바꿉니다.
- VM_NAME_1: 첫 번째 VM의 이름입니다.
- PROJECT_ID: 프로젝트 이름입니다.
첫 번째 VM에서 다음 단계를 완료하세요.
iperf
를 설치합니다.sudo apt-get update && sudo apt-get install iperf
이 VM의 내부 IP 주소를 가져옵니다. 나중에 사용할 수 있도록 내부 IP 주소를 기록해 둡니다.
ip a
iPerf 서버를 시작합니다.
iperf -s
그러면 벤치마크를 수행하기 위해 연결을 수신 대기하는 서버가 시작됩니다. 테스트 기간 동안 iPerf 서버가 계속 실행되게 둡니다.
별도의 클라이언트 터미널에서 SSH를 사용하여 두 번째 VM에 연결합니다.
gcloud compute ssh VM_NAME_2 \ --project=PROJECT_ID
다음을 바꿉니다.
- VM_NAME_2: 두 번째 VM의 이름입니다.
- PROJECT_ID: 프로젝트 이름입니다.
두 번째 VM에서 다음 단계를 완료하세요.
iPerf를 설치합니다.
sudo apt-get update && sudo apt-get install iperf
iperf 테스트를 실행하고 첫 번째 VM의 IP 주소를 대상으로 지정합니다.
iperf -t 30 -c internal_ip_of_instance_1 -P 16
그러면 30초 테스트가 수행됩니다. iPerf가 다른 VM에 연결할 수 없으면 VM 또는 Google Cloud 콘솔에서 네트워크나 방화벽 설정을 조정해야 할 수 있습니다.
다음 예시와 같은 결과가 표시됩니다. Tier_1 네트워킹이 사용 설정된
n2-standard-64
의 75Gbps 이그레스 대역폭 한도를 나타내며 기본 32Gbps 이그레스 대역폭 한도를 초과합니다.------------------------------------------------------------ Client connecting to 10.128.0.10, TCP port 5001 TCP window size: 1.59 MByte (default) ------------------------------------------------------------ [ 12] local 10.128.0.11 port 57722 connected with 10.128.0.10 port 5001 [ 11] local 10.128.0.11 port 57720 connected with 10.128.0.10 port 5001 [ 16] local 10.128.0.11 port 57730 connected with 10.128.0.10 port 5001 [ 6] local 10.128.0.11 port 57710 connected with 10.128.0.10 port 5001 [ 13] local 10.128.0.11 port 57724 connected with 10.128.0.10 port 5001 [ 8] local 10.128.0.11 port 57712 connected with 10.128.0.10 port 5001 [ 9] local 10.128.0.11 port 57716 connected with 10.128.0.10 port 5001 [ 14] local 10.128.0.11 port 57726 connected with 10.128.0.10 port 5001 [ 15] local 10.128.0.11 port 57728 connected with 10.128.0.10 port 5001 [ 10] local 10.128.0.11 port 57718 connected with 10.128.0.10 port 5001 [ 4] local 10.128.0.11 port 57706 connected with 10.128.0.10 port 5001 [ 5] local 10.128.0.11 port 57708 connected with 10.128.0.10 port 5001 [ 3] local 10.128.0.11 port 57704 connected with 10.128.0.10 port 5001 [ 17] local 10.128.0.11 port 57732 connected with 10.128.0.10 port 5001 [ 7] local 10.128.0.11 port 57714 connected with 10.128.0.10 port 5001 [ 18] local 10.128.0.11 port 57734 connected with 10.128.0.10 port 5001 [ ID] Interval Transfer Bandwidth [ 12] 0.0-30.0 sec 7.63 GBytes 2.19 Gbits/sec [ 11] 0.0-30.0 sec 17.7 GBytes 5.07 Gbits/sec [ 16] 0.0-30.0 sec 9.15 GBytes 2.62 Gbits/sec [ 6] 0.0-30.0 sec 43.8 GBytes 12.6 Gbits/sec [ 13] 0.0-30.0 sec 23.6 GBytes 6.76 Gbits/sec [ 8] 0.0-30.0 sec 13.3 GBytes 3.80 Gbits/sec [ 9] 0.0-30.0 sec 9.29 GBytes 2.66 Gbits/sec [ 14] 0.0-30.0 sec 19.6 GBytes 5.62 Gbits/sec [ 15] 0.0-30.0 sec 12.5 GBytes 3.58 Gbits/sec [ 10] 0.0-30.0 sec 11.1 GBytes 3.19 Gbits/sec [ 4] 0.0-30.0 sec 19.0 GBytes 5.43 Gbits/sec [ 5] 0.0-30.0 sec 7.32 GBytes 2.10 Gbits/sec [ 3] 0.0-30.0 sec 8.78 GBytes 2.51 Gbits/sec [ 17] 0.0-30.0 sec 17.5 GBytes 5.02 Gbits/sec [ 7] 0.0-30.0 sec 33.4 GBytes 9.57 Gbits/sec [ 18] 0.0-30.0 sec 7.64 GBytes 2.19 Gbits/sec [SUM] 0.0-30.0 sec 261 GBytes 74.9 Gbits/sec
gcloud compute instances delete
명령어를 사용하여 벤치마크 테스트용으로 만든 인스턴스를 삭제합니다.gcloud compute instances delete \ VM_NAME_1 VM_NAME_2 \ --project=PROJECT_ID \ --zone=ZONE
다음을 바꿉니다.
- VM_NAME_1, VM_NAME_2: 삭제하려는 두 VM 인스턴스의 이름입니다.
- PROJECT_ID: 프로젝트 이름입니다.
- ZONE: VM의 영역입니다. 두 VM 모두 동일한 영역에 있어야 합니다.
gcloud compute networks delete
명령어를 사용하여 벤치마크 테스트용으로 만든 네트워크를 삭제합니다.gcloud compute networks delete NETWORK_NAME \ --project=PROJECT_ID
다음을 바꿉니다.
- NETWORK_NAME: 삭제하려는 네트워크의 이름입니다.
- PROJECT_ID: 프로젝트 이름입니다.
gcloud compute images delete
명령어를 사용하여 벤치마크 테스트용으로 만든 이미지를 삭제합니다.gcloud compute images delete IMAGE_NAME \ --project=PROJECT_ID
다음을 바꿉니다.
- IMAGE_NAME: 삭제할 이미지의 이름입니다.
- PROJECT_ID: 프로젝트 이름입니다.
- Tier_1 네트워킹 가격 책정에 대해 알아보기
- 추가 머신 유형에 대한 대역폭 등급 검토하기
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
자세한 내용은 Google Cloud 인증 문서의 REST 사용을 위한 인증을 참고하세요.
벤치마킹을 위한 VM 설정
사용 설정된 VM당 Tier_1 네트워킹 성능 및 최고 최대 전송 단위 (MTU)를 사용하여 2개의
n2-standard-64
vCPU 머신을 만듭니다. 이렇게 하면 최대 75Gbps 이그레스 대역폭(내부 IP 사용)이 VM에 부여됩니다.gcloud
벤치마크 수행
두 VM이 동일한 영역 및 동일한 VPC 네트워크에 있어야 합니다. 벤치마크 중 두 VM이 VPC 네트워크 경로에 대해 양방향 테스트를 수행합니다.
MTU 설정 확인
Virtual Private Cloud(VPC) 네트워크에 VM 중 하나의 게스트 OS에서
ifconfig
를 사용하여 구성된 최대 MTU 설정이 있는지 확인합니다.VM 구성 확인
가상 머신 속성을 검사하여 가상 머신의 Tier_1 네트워킹이 사용 설정되었는지 확인하세요.
gcloud
인스턴스를 보려면 gcloud compute instances describe 명령어를 사용합니다.
gcloud compute instances describe VM_NAME_1 \ --project=PROJECT_ID \ --zone=ZONE \ --format="text(networkPerformanceConfig)"
gcloud compute instances describe VM_NAME_2 \ --project=PROJECT_ID \ --zone=ZONE \ --format="text(networkPerformanceConfig)"
다음을 바꿉니다.
응답에 다음이 표시되어야 합니다.
networkPerformanceConfig.totalEgressBandwidthTier: TIER_1
iPerf를 사용하여 Debian 기반 시스템에서 벤치마크를 수행합니다.
gcloud
벤치마크 테스트 후 리소스 삭제
이미지 및 추가 VM에 대한 요금이 청구되지 않도록 벤치마크 테스트 중에 만든 리소스를 삭제합니다.
gcloud
다음 단계
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-12-22(UTC)
-