Benchmarking von höherer Netzwerkbandbreite für VM-Instanzen


In diesem Dokument wird erläutert, wie Sie die Netzwerkleistung pro VM Tier_1 testen. Erstellen Sie dazu zwei VMs und streamen Sie den Traffic, um die Netzwerkleistung zu beobachten. Damit Sie dieses Feature nutzen können, müssen Sie Ihre VM mit Betriebssystemen erstellen, die die Google virtuelle NIC (gVNIC) unterstützen. Die Netzwerkleistung pro VM-Stufe 1 erfordert höhere VM-Größen. Achten Sie daher darauf, dass Ihr CPU-Kontingent ausreicht, um die VMs zu erstellen.

Hinweise

  • Stellen Sie sicher, dass Sie in Ihrem Projekt ein öffentliches Image, das gVNIC unterstützt, verwenden, oder erstellen Sie ein benutzerdefiniertes Image.
  • Prüfen Sie, ob Sie VPC-Firewallregeln erstellt haben, die eingehenden Traffic über Port TCP:5001 oder einen anderen Port Ihrer Wahl zulassen, um iperf-Leistungstests zuzulassen.
  • Verwenden Sie iPerf Version 2, nicht Version 3, um das Benchmarking durchzuführen.
  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.

    Wählen Sie den Tab für die Verwendung der Beispiele auf dieser Seite aus:

    Console

    Wenn Sie über die Google Cloud Console auf Google Cloud-Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.

    gcloud

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Legen Sie eine Standardregion und -zone fest.

    REST

    Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

      Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init

VMs für Benchmarking einrichten

Erstellen Sie zwei n2-standard-64-vCPU-Maschinen mit aktivierter VM-Leistung pro VM-Stufe 1 und der höchsten maximalen Übertragungseinheit (MTU). Dadurch erhalten Ihre VMs bis zu 75 Gbit/s maximale Leistung der ausgehenden Bandbreite über interne IP-Adressen.

gcloud

  1. Verwenden Sie zum Erstellen eines Images den Befehl 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
    

    Dabei gilt:

    • PROJECT_ID: Name Ihres Projekts
    • IMAGE_NAME: Der Name des Images, das Sie erstellen möchten.
    • SOURCE_IMAGE_FAMILY ist die erforderliche Version eines öffentlichen Images. Verwenden Sie für diesen Test ubuntu-2004-lts.
    • SOURCE_IMAGE_PROJECT: der Name des Projekts, das das Quell-Image enthält. Verwenden Sie für diesen Test ubuntu-os-cloud.

    Beispiel

    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. Erstellen Sie ein VPC-Netzwerk im automatischen Modus, das die maximale MTU-Einstellung verwendet:

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

    Dabei gilt:

    • PROJECT_ID: Name Ihres Projekts
    • NETWORK_NAME: Ein Name für das Netzwerk.
  3. Erstellen Sie zwei identische Instanzen:

      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
    

    Dabei gilt:

    • VM_NAME_1, VM_NAME_2 sind die Namen der VM-Instanzen, die Sie erstellen möchten.
    • PROJECT_ID ist der Name Ihres Projekts.
    • ZONE ist die Zone Ihrer VM. Beide VMs müssen sich in derselben Zone befinden.
    • PROJECT_NAME/global/images/IMAGE_NAME ist Name Ihres Projekts und des Images.
    • NETWORK_NAME: Der Name des Netzwerks, das Sie mit der maximalen MTU-Einstellung konfiguriert haben.

Benchmark durchführen

Die beiden VMs müssen sich in derselben Zone und im selben VPC-Netzwerk befinden. Während der Benchmark führen diese beiden VMs bidirektionale Tests des VPC-Netzwerkpfads durch.

MTU-Einstellung prüfen

Prüfen Sie, ob das VPC-Netzwerk (Virtual Private Cloud) die maximale MTU-Einstellung hat, die mit ifconfig im Gastbetriebssystem einer der VMs konfiguriert ist.

  1. Verbindung zu einer der VMs herstellen

  2. Führen Sie im Terminalfenster den folgenden Befehl aus:

     /sbin/ifconfig | grep mtu
    

    Die gemeldete MTU sollte 8896 sein.

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

VM-Konfiguration prüfen

Prüfen Sie die virtuellen Maschinenattribute, um zu bestätigen, dass für die virtuellen Maschinen das Tier_1-Netzwerk aktiviert ist.

gcloud

Verwenden Sie zum Aufrufen der Instanzen den Befehl 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)"

Dabei gilt:

  • VM_NAME_1 ist der Name der VM-Instanz, den Sie aufrufen möchten.
  • VM_NAME_2 ist der Name der VM-Instanz, den Sie aufrufen möchten.
  • PROJECT_ID ist der Name Ihres Projekts.
  • ZONE ist die Zone Ihrer VM. Beide VMs müssen sich in derselben Zone befinden.

In der Antwort sollte Folgendes angezeigt werden:

networkPerformanceConfig.totalEgressBandwidthTier: TIER_1

Führen Sie mit iPerf auf Debian-basierten Systemen den Benchmark durch.

gcloud

  1. Führen Sie die Schritte unter VMs für das Benchmarking einrichten aus, falls Sie dies noch nicht getan haben.

  2. Wenn beide VMs ausgeführt werden, stellen Sie eine SSH-Verbindung zu einer der VMs her.

    gcloud compute ssh VM_NAME_1 \
      --project=PROJECT_ID
    

    Dabei gilt:

    • VM_NAME_1 ist der Name Ihrer ersten VM.
    • PROJECT_ID ist der Name Ihres Projekts.
  3. Führen Sie auf der ersten VM die folgenden Schritte aus:

    1. Installieren Sie iperf.

      sudo apt-get update && sudo apt-get install iperf
      
    2. Rufen Sie die interne IP-Adresse für diese VM ab. Notieren Sie sich die interne IP-Adresse für die spätere Verwendung.

      ip a
      
    3. Starten Sie den iPerf-Server.

      iperf -s
      

      Dadurch wird ein Server gestartet, der die Verbindungen überwacht, um die Benchmark zu ermitteln. Lassen Sie den iPerf-Server für die Dauer des Tests ausgeführt.

  4. Stellen Sie in einem separaten Clientterminal über SSH eine Verbindung zur zweiten VM her.

    gcloud compute ssh VM_NAME_2 \
       --project=PROJECT_ID
    

    Dabei gilt:

    • VM_NAME_2 ist der Name Ihrer zweiten VM.
    • PROJECT_ID ist der Name Ihres Projekts.
  5. Führen Sie auf der zweiten VM die folgenden Schritte aus:

    1. Installieren Sie iPerf.

      sudo apt-get update && sudo apt-get install iperf
      
    2. Führen Sie den iperf-Test aus und geben Sie die IP-Adresse der ersten VM als Ziel an.

      iperf -t 30 -c internal_ip_of_instance_1 -P 16
      

      Dadurch wird ein 30-Sekunden-Test durchgeführt. Wenn iPerf die andere VM nicht erreichen kann, müssen Sie gegebenenfalls die Netzwerk- oder Firewall-Einstellungen auf den VMs oder in der Cloud Console anpassen.

      Das Ergebnis sollte in etwa so aussehen: Es zeigt das Limit von 75 Gbit/s für ausgehenden Traffic für n2-standard-64 mit aktiviertem Tier_1-Netzwerk und überschreitet das standardmäßige Bandbreitenlimit von 32 Gbit/s.

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

Ressourcen nach dem Benchmarktest entfernen

Entfernen Sie die Ressourcen, die Sie während des Benchmarktests erstellt haben, um Gebühren für das Image und zusätzliche VMs zu vermeiden.

gcloud

  1. Verwenden Sie den Befehl gcloud compute instances delete, um die Instanzen zu entfernen, die Sie für Benchmarktests erstellt haben.

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

    Dabei gilt:

    • VM_NAME_1, VM_NAME_2 sind die Namen der beiden VM-Instanzen, die Sie löschen möchten.
    • PROJECT_ID ist der Name Ihres Projekts.
    • ZONE ist die Zone Ihrer VM. Beide VMs sollten sich in derselben Zone befinden.
  2. Verwenden Sie den Befehl gcloud compute networks delete, um das Netzwerk zu entfernen, das Sie für Benchmarktests erstellt haben.

    gcloud compute networks delete NETWORK_NAME  \
       --project=PROJECT_ID
    

    Dabei gilt:

    • NETWORK_NAME: Der Name des Netzwerks, das Sie löschen möchten.
    • PROJECT_ID ist der Name Ihres Projekts.
  3. Verwenden Sie den Befehl gcloud compute images delete, um das Image zu entfernen, das Sie für Benchmarktests erstellt haben.

     gcloud compute images delete IMAGE_NAME  \
        --project=PROJECT_ID
    

    Dabei gilt:

    • IMAGE_NAME ist der Name des Images, das Sie löschen möchten.
    • PROJECT_ID ist der Name Ihres Projekts.

Nächste Schritte