对较高带宽的虚拟机实例进行基准化分析

本文档介绍如何通过创建两个虚拟机以及前后流式传输流量来观察网络性能,以测试更高的带宽网络性能选项。要利用此功能,您必须在支持 Google 虚拟 NIC (gVNIC)操作系统中创建虚拟机。此外,网络性能选项还需要较高的虚拟机大小,请确认您拥有足够的 CPU 配额

准备工作

设置虚拟机以执行基准测试

创建两个 n2-standard-64 vCPU 机器,并启用 TIER_1 网络性能。这样,您虚拟机的最高出站流量性能上限为 75 Gbps(使用内部 IP)。

根据提供的示例映像在项目中创建映像,确保您使用的是支持 gVNIC 的映像。此外,验证您是否已创建 VPC 防火墙规则,以允许端口 TCP:5001 或您选择的其他端口中的入站流量,以允许 iperf 性能测试。

gcloud

  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 my_image_name \
      --project=my_project \
      --source-image-family=ubuntu-2004-lts \
      --source-image-project=ubuntu-os-cloud \
      --guest-os-features=GVNIC

创建两个相同的实例:

      gcloud beta 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-interface=nic-type=GVNIC \
          --network-performance-configs=total-egress-bandwidth-tier=TIER_1

请替换以下内容:

  • VM_NAME_1VM_NAME_2:您要创建的虚拟机实例的名称。
  • PROJECT_ID:您的项目名称。
  • ZONE:您的虚拟机所在的可用区。两个虚拟机必须位于同一可用区。
  • PROJECT_NAME/global/images/IMAGE_NAME:项目名称和映像名称。

执行基准测试

两个虚拟机必须位于同一地区和同一 VPC 网络中。在基准测试期间,这两个虚拟机对 VPC 网络路径进行双向测试。

通过检查虚拟机属性,确认虚拟机已启用网络性能。

gcloud beta compute instances describe VM_NAME_1 \
    --project=PROJECT_ID \
    --zone=ZONE

在响应中,您应该会看到以下内容:

networkPerformanceConfig:
  totalEgressBandwidthTier: TIER_1

使用 iPerf 在基于 Debian 的系统上执行基准测试。

  1. 创建两个可以支持所需带宽速度的虚拟机。

  2. 两个虚拟机运行后,使用 SSH 连接到其中一个虚拟机。

    gcloud compute ssh VM_NAME \
        --project=PROJECT_ID
    

    请替换以下内容:

    • VM_NAME:第一个虚拟机的名称
    • PROJECT_ID:您的项目 ID
  3. 在第一个虚拟机上,完成以下步骤:

    1. 安装 iperf

      sudo apt-get update && sudo apt-get install iperf
      
    2. 获取此虚拟机的内部 IP 地址。记录下来以进行跟踪。

      ip a
      
    3. 启动 iPerf 服务器。

      iperf -s
      

      它会启动一个服务器来侦听连接,以便执行基准测试。在测试期间,保持运行状态。

  4. 通过新的客户端终端,用 SSH 连接到第二个虚拟机。

    gcloud compute ssh VM_NAME \
       --project=PROJECT_ID
    

    请替换以下内容:

    • VM_NAME:第二个虚拟机的名称
    • PROJECT_ID:您的项目 ID
  5. 在第二个虚拟机上,完成以下步骤:

    1. 安装 iPerf。

      sudo apt-get update && sudo apt-get install iperf
      
    2. 运行 iperf 测试,并将第一个虚拟机的 IP 地址指定为目标。

      iperf -t 30 -c internal_ip_of_instance_1 -P 16
      

      这会执行 30 秒测试。如果 iPerf 无法访问其他虚拟机,则可能需要调整虚拟机或 Cloud Console 中的网络或防火墙设置

      结果应类似于以下示例:默认出站流量带宽上限为 32 Gbps。

      ------------------------------------------------------------
      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
      

后续步骤