Esegui un benchmark della larghezza di banda di rete più elevata per le istanze VM


Questo documento spiega come testare le prestazioni di rete Tier_1 per VM creando due VM e trasmettendo traffico avanti e indietro per osservare le prestazioni della rete. Per sfruttare questa funzionalità, devi creare la VM con sistemi operativi che supportano Google Virtual NIC (gVNIC). Le prestazioni di rete Tier_1 per VM richiedono dimensioni VM più grandi, quindi verifica di avere una quota CPU sufficiente per creare le VM.

Prima di iniziare

  • Assicurati di utilizzare un'immagine pubblica che supporta gVNIC o crea un'immagine personalizzata nel tuo progetto.
  • Verifica di aver creato regole firewall VPC per consentire il traffico in entrata sulla porta TCP:5001 o su un'altra porta di tua scelta per consentire i test di prestazioniiperf.
  • Utilizza la versione 2 di iPerf, non la versione 3, per eseguire il benchmarking.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    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. Install the Google Cloud CLI, then initialize it by running the following command:

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

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per saperne di più, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Configurazione delle VM per il benchmarking

Crea due macchine con n2-standard-64 vCPU con le prestazioni di rete Tier_1 per VM attivate e l'impostazione unità massima di trasmissione (MTU) più elevata. In questo modo, le VM avranno fino a 75 Gbps di larghezza di banda in uscita massima (utilizzando gli IP interni).

gcloud

  1. Per creare un'immagine, utilizza il 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
    

    Sostituisci quanto segue:

    • PROJECT_ID: il nome del progetto.
    • IMAGE_NAME: il nome dell'immagine che vuoi creare.
    • SOURCE_IMAGE_FAMILY: la versione richiesta di un'immagine pubblica. Per questo test, utilizza ubuntu-2004-lts.
    • SOURCE_IMAGE_PROJECT: il nome del progetto che contiene l'immagine di origine. Per questo test, utilizza ubuntu-os-cloud.

    Esempio

    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. Crea una rete VPC in modalità automatica che utilizza l'impostazione MTU massima:

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

    Sostituisci quanto segue:

    • PROJECT_ID: il nome del progetto.
    • NETWORK_NAME: un nome per la rete.
  3. Crea due istanze identiche:

      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
    

    Sostituisci quanto segue:

    • VM_NAME_1, VM_NAME_2: i nomi delle istanze VM che vuoi creare.
    • PROJECT_ID: il nome del progetto.
    • ZONE: la zona della tua VM. Entrambe le VM devono trovarsi nella stessa zona.
    • PROJECT_NAME/global/images/IMAGE_NAME: il nome del progetto e il nome dell'immagine.
    • NETWORK_NAME: il nome della rete configurata con l'impostazione MTU massima.

Eseguire il benchmark

Le due VM devono trovarsi nella stessa zona e nella stessa rete VPC. Durante il benchmark, queste due VM eseguono test bidirezionali del percorso di rete VPC.

Verifica l'impostazione MTU

Verifica che la rete Virtual Private Cloud (VPC) abbia l'impostazione MTU massima configurata utilizzando ifconfig nel sistema operativo guest di una delle VM.

  1. Connettiti a una delle VM.

  2. Nella finestra del terminale, esegui il seguente comando:

     /sbin/ifconfig | grep mtu
    

    L'MTU segnalata deve essere 8896.

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

Verifica la configurazione della VM

Verifica che la rete Tier_1 sia abilitata nelle macchine virtuali esaminando le relative proprietà.

gcloud

Per visualizzare le istanze, utilizza il comando 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)"

Sostituisci quanto segue:

  • VM_NAME_1: i nomi delle istanze VM che vuoi visualizzare.
  • VM_NAME_2: i nomi delle istanze VM che vuoi visualizzare.
  • PROJECT_ID: il nome del progetto.
  • ZONE: la zona della tua VM. Entrambe le VM devono trovarsi nella stessa zona.

Nella risposta dovresti vedere quanto segue:

networkPerformanceConfig.totalEgressBandwidthTier: TIER_1

Utilizzare iPerf per eseguire il benchmark su sistemi basati su Debian

gcloud

  1. Se non lo hai ancora fatto, completa i passaggi descritti in Configurare le VM per il benchmarking.

  2. Dopo aver avviato entrambe le VM, utilizza SSH per connetterti a una delle VM.

    gcloud compute ssh VM_NAME_1 \
      --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • VM_NAME_1: il nome della prima VM.
    • PROJECT_ID: il nome del progetto.
  3. Nella prima VM, completa i seguenti passaggi:

    1. Installa iperf.

      sudo apt-get update && sudo apt-get install iperf
      
    2. Ottieni l'indirizzo IP interno di questa VM. Prendi nota dell'indirizzo IP interno per utilizzarlo in un secondo momento.

      ip a
      
    3. Avvia il server iPerf.

      iperf -s
      

      Viene avviato un server in ascolto per le connessioni al fine di eseguire il benchmark. Lascia in esecuzione il server iPerf per tutta la durata del test.

  4. In un terminale client separato, connettiti alla seconda VM utilizzando SSH.

    gcloud compute ssh VM_NAME_2 \
       --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • VM_NAME_2: il nome della seconda VM.
    • PROJECT_ID: il nome del progetto.
  5. Nella seconda VM, completa i seguenti passaggi:

    1. Installa iPerf.

      sudo apt-get update && sudo apt-get install iperf
      
    2. Esegui il test iperf e specifica l'indirizzo IP della prima VM come target.

      iperf -t 30 -c internal_ip_of_instance_1 -P 16
      

      Viene eseguito un test di 30 secondi. Se iPerf non è in grado di raggiungere l'altra VM, potresti dover modificare la rete o le impostazioni del firewall sulle VM o forse nella console Google Cloud.

      I risultati dovrebbero essere simili a quelli dell'esempio seguente. Mostra il limite di larghezza di banda in uscita di 75 Gbps per n2-standard-64 con la funzionalità Tier_1 networking attivata, che supera il limite predefinito di 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
      

Rimuovere le risorse dopo i test di benchmark

Rimuovi le risorse che hai creato durante i test di benchmark per evitare addebiti per l'immagine e altre VM.

gcloud

  1. Utilizza il comando gcloud compute instances delete per rimuovere le istanze create per i test di benchmark.

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

    Sostituisci quanto segue:

    • VM_NAME_1, VM_NAME_2: i nomi delle due istanze VM che vuoi eliminare.
    • PROJECT_ID: il nome del progetto.
    • ZONE: la zona della tua VM. Entrambe le VM devono trovarsi nella stessa zona.
  2. Utilizza il comando gcloud compute networks delete per rimuovere la rete creata per i test di benchmark.

    gcloud compute networks delete NETWORK_NAME  \
       --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • NETWORK_NAME: il nome della rete che vuoi eliminare.
    • PROJECT_ID: il nome del progetto.
  3. Utilizza il comando gcloud compute images delete per rimuovere l'immagine creata per i test di benchmark.

     gcloud compute images delete IMAGE_NAME  \
        --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • IMAGE_NAME: il nome dell'immagine che vuoi eliminare.
    • PROJECT_ID: il nome del progetto.

Passaggi successivi