Compare maior largura de banda de rede para instâncias de VM


Este documento explica como testar o desempenho de rede por VM Tier_1 criando duas VMs e transmitindo tráfego para observar o desempenho da rede. Para aproveitar esse recurso, você deve criar sua VM com sistemas operacionais compatíveis com Google Virtual NIC (gVNIC) . O desempenho da rede por VM Tier_1 requer tamanhos de VM maiores, portanto, confirme se você tem cota de CPU suficiente para criar as VMs.

Antes de começar

  • Certifique-se de estar usando uma imagem pública compatível com gVNIC ou crie uma imagem personalizada em seu projeto.
  • Verifique se você criou regras de firewall VPC para permitir a entrada na porta TCP:5001 ou em outra porta de sua escolha para permitir testes de desempenho iperf .
  • Use o iPerf versão 2, não a versão 3, para realizar o benchmarking.
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    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

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Configurando VMs para benchmarking

Crie duas máquinas vCPU n2-standard-64 com desempenho de rede por VM Tier_1 habilitado e a configuração de unidade de transmissão máxima (MTU) mais alta. Isso dá às suas VMs até 75 Gbps de largura de banda máxima de saída (usando IPs internos).

gcloud

  1. Para criar uma imagem, use o comando 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
    

    Substitua o seguinte:

    • PROJECT_ID : o nome do seu projeto.
    • IMAGE_NAME : o nome da imagem que você deseja criar.
    • SOURCE_IMAGE_FAMILY : versão obrigatória de uma imagem pública. Para este teste, use ubuntu-2004-lts .
    • SOURCE_IMAGE_PROJECT : o nome do projeto que contém a imagem de origem. Para este teste, use ubuntu-os-cloud .

    Exemplo

    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
    
  2. Crie uma rede VPC de modo automático que use a configuração máxima de MTU:

      gcloud compute networks create NETWORK_NAME \
      --project=PROJECT_ID \
      --subnet-mode=AUTO --mtu=8896
    

    Substitua o seguinte:

    • PROJECT_ID : o nome do seu projeto.
    • NETWORK_NAME : um nome para a rede.
  3. Crie duas instâncias idênticas:

      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
    

    Substitua o seguinte:

    • VM_NAME_1 , VM_NAME_2 : os nomes das instâncias de VM que você deseja criar.
    • PROJECT_ID : nome do seu projeto.
    • ZONE : a zona da sua VM. Ambas as VMs devem residir na mesma zona.
    • PROJECT_NAME /global/images/ IMAGE_NAME : o nome do seu projeto e o nome da imagem.
    • NETWORK_NAME : o nome da rede que você configurou com a configuração máxima de MTU.

Executando o benchmark

Suas duas VMs devem residir na mesma zona e na mesma rede VPC . Durante o benchmark, essas duas VMs realizam testes bidirecionais do caminho da rede VPC.

Verifique a configuração de MTU

Confirme se a rede Virtual Private Cloud (VPC) tem a configuração máxima de MTU configurada usando ifconfig no sistema operacional convidado de uma das VMs.

  1. Conecte-se a uma das VMs .

  2. Na janela do terminal, execute o seguinte comando:

     /sbin/ifconfig | grep mtu
    

    O MTU relatado deve ser 8.896.

     ens4: flags=4163  mtu 8896
     lo: flags=73  mtu 65536
    

Verifique a configuração da VM

Confirme se as máquinas virtuais têm a rede Tier_1 habilitada examinando as propriedades da máquina virtual.

gcloud

Para visualizar as instâncias, use o comando gcloud computing instances description .

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

Substitua o seguinte:

  • VM_NAME_1 : os nomes da instância de VM que você deseja visualizar.
  • VM_NAME_2 : os nomes da instância de VM que você deseja visualizar.
  • PROJECT_ID : nome do seu projeto.
  • ZONE : a zona da sua VM. Ambas as VMs devem residir na mesma zona.

Na resposta você deverá ver o seguinte:

networkPerformanceConfig.totalEgressBandwidthTier: TIER_1

Use iPerf para realizar benchmark em sistemas baseados em Debian

gcloud

  1. Se ainda não tiver feito isso, conclua as etapas em Configurando VMs para benchmarking .

  2. Depois que ambas as VMs estiverem em execução, use SSH para conectar-se a uma das VMs.

    gcloud compute ssh VM_NAME_1 \
      --project=PROJECT_ID
    

    Substitua o seguinte:

    • VM_NAME_1 : o nome da sua primeira VM.
    • PROJECT_ID : nome do seu projeto.
  3. Na primeira VM, conclua as seguintes etapas:

    1. Instale iperf .

      sudo apt-get update && sudo apt-get install iperf
      
    2. Obtenha o endereço IP interno desta VM. Anote o endereço IP interno para uso posterior.

      ip a
      
    3. Inicie o servidor iPerf.

      iperf -s
      

      Isso inicia um servidor que escuta conexões para realizar o benchmark. Deixe o servidor iPerf em execução durante o teste.

  4. Em um terminal cliente separado, conecte-se à segunda VM usando SSH.

    gcloud compute ssh VM_NAME_2 \
       --project=PROJECT_ID
    

    Substitua o seguinte:

    • VM_NAME_2 : o nome da sua segunda VM.
    • PROJECT_ID : nome do seu projeto.
  5. Na segunda VM, conclua as seguintes etapas:

    1. Instale o iPerf.

      sudo apt-get update && sudo apt-get install iperf
      
    2. Execute o teste iperf e especifique o endereço IP da primeira VM como destino.

      iperf -t 30 -c internal_ip_of_instance_1 -P 16
      

      Isso executa um teste de 30 segundos. Se o iPerf não conseguir acessar a outra VM, talvez seja necessário ajustar as configurações de rede ou firewall nas VMs ou talvez no console do Google Cloud.

      Seus resultados devem ser parecidos com o exemplo a seguir. Ele mostra o limite de largura de banda de saída de 75 Gbps para n2-standard-64 com rede Tier_1 habilitada, excedendo o limite de largura de banda de saída padrão de 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
      

Remover recursos após testes de benchmark

Remova os recursos que você criou durante o teste de benchmark para evitar cobranças pela imagem e VMs adicionais.

gcloud

  1. Use o comando gcloud compute instances delete para remover as instâncias que você criou para testes de benchmark.

    gcloud compute instances delete \
      VM_NAME_1 VM_NAME_2 \
       --project=PROJECT_ID \
       --zone=ZONE
    

    Substitua o seguinte:

    • VM_NAME_1 , VM_NAME_2 : os nomes das duas instâncias de VM que você deseja excluir.
    • PROJECT_ID : nome do seu projeto.
    • ZONE : a zona da sua VM. Ambas as VMs devem estar na mesma zona.
  2. Use o comando gcloud compute networks delete para remover a rede que você criou para testes de benchmark.

    gcloud compute networks delete NETWORK_NAME  \
       --project=PROJECT_ID
    

    Substitua o seguinte:

    • NETWORK_NAME : o nome da rede que você deseja excluir.
    • PROJECT_ID : nome do seu projeto.
  3. Use o comando gcloud compute images delete para remover a imagem que você criou para testes de benchmark.

     gcloud compute images delete IMAGE_NAME  \
        --project=PROJECT_ID
    

    Substitua o seguinte:

    • IMAGE_NAME : o nome da imagem que você deseja excluir.
    • PROJECT_ID : nome do seu projeto.

O que vem a seguir