Leistung optimieren

Auf dieser Seite wird beschrieben, wie Sie die Leistung von Google Cloud NetApp Volumes optimieren können, indem Sie Volume- und clientseitige Konfigurationen anpassen. Durch diese Anpassungen werden der Durchsatz erhöht, die Latenz verringert und die Effizienz der Datenübertragung für Ihre Anwendungen insgesamt verbessert.

Hinweis

Bevor Sie Änderungen an Ihren Volumes vornehmen, um die Leistung zu optimieren, sollten Sie die Leistungsüberlegungen lesen.

Volume-Einstellungen anpassen

Sie können die Leistung optimieren, indem Sie die folgenden Volume-Einstellungen anpassen:

  • Volume-Kapazität erhöhen: Sie können die Kapazität Ihres Volumes mit dem Service-Level „Premium“, „Extreme“ oder „Standard“ erhöhen, um den maximal erreichbaren Volume- Durchsatz zu verbessern. Erhöhen Sie für Volumes mit dem Service-Level „Flex“ (Typ „Datei“) stattdessen die Kapazität des Speicherpools. Erhöhen Sie für „Flex“ (Typ „Einheitlich“) oder „Flex“ (Typ „Datei“) mit benutzerdefinierter Leistung den Durchsatz und die IOPS des Speicherpools.

  • Service-Level aktualisieren: Sie können ein Volume mit dem Service-Level „Premium“ in einen Speicherpool mit dem Service-Level „Extreme“ verschieben, um den Durchsatz zu verbessern.

  • Manuelle QoS-Pools verwenden, um einen höheren Durchsatz zuzuweisen: Sie können den zugewiesenen Durchsatz größerer Volumes mit geringen Durchsatzanforderungen verringern und den Durchsatz kleinerer Volumes, die eine höhere Leistung benötigen, auf den verfügbaren Pool-Durchsatz erhöhen.

Das Erhöhen der Volume-Kapazität und das Aktualisieren des Service-Levels haben keine Auswirkungen auf die laufenden E/A-Arbeitslasten auf dem Volume und beeinträchtigen den Zugriff auf das Volume in keiner Weise.

Client anpassen

Sie können die Leistung verbessern, indem Sie die folgenden Einstellungen auf dem Client anpassen:

  • Clients gemeinsam platzieren: Die Latenz wird direkt von den Funktionen und dem Standort des Clients beeinflusst. Um optimale Ergebnisse zu erzielen, platzieren Sie den Client in derselben Region wie das Volume oder so nah wie möglich daran. Testen Sie die Auswirkungen auf die Zone, indem Sie die Latenz von einem Client in jeder Zone aus testen und die Zone mit der niedrigsten Latenz verwenden.

  • Compute Engine-Netzwerkbandbreite konfigurieren: Die Netzwerkfunktionen von Compute Engine-VMs hängen vom verwendeten Instanztyp ab. In der Regel können größere Instanzen einen höheren Netzwerkdurchsatz erzielen. Wir empfehlen, eine Client-VM mit einer geeigneten Netzwerkbandbreite auszuwählen, die Netzwerkschnittstelle Google Virtual NIC (gVNIC) auszuwählen und die Leistung von Tier_1 zu aktivieren. Weitere Informationen finden Sie in der Compute Engine Dokumentation zur Netzwerkbandbreite.

  • Mehrere TCP-Sitzungen öffnen: Wenn Ihre Anwendung einen hohen Durchsatz erfordert, können Sie die einzelne TCP-Sitzung (Transmission Control Protocol) überschreiten, die einer normalen NFS- und SMB-Sitzung zugrunde liegt. Erhöhen Sie in solchen Fällen die Anzahl der TCP-Sitzungen, die von Ihrer NFS- und SMB-Verbindung verwendet werden.

    Verwenden Sie einen der folgenden Tabs, um Ihren Client je nach Clienttyp anzupassen:

    Linux

    Traditionell verwendet ein NFS-Client eine einzelne TCP-Sitzung für alle NFS-bereitgestellten Dateisysteme, die einen Speicherendpunkt gemeinsam nutzen. Mit der nconnect Bereitstellungsoption können Sie die Anzahl der unterstützten TCP-Sitzungen auf maximal 16 erhöhen.

    Wir empfehlen die folgenden Best Practices zum Anpassen Ihres Linux-Clienttyps, um nconnect optimal zu nutzen:

    • Anzahl der TCP-Sitzungen mit nconnect erhöhen: Jede zusätzliche TCP-Sitzung fügt eine Warteschlange für 128 ausstehende Anfragen hinzu, wodurch die potenzielle Nebenläufigkeit verbessert wird.

    • Parameter sunrpc.max_tcp_slot_table_entries festlegen: sunrpc.max_tcp_slot_table_entries ist ein Anpassungsparameter auf Verbindungsebene, den Sie ändern können, um die Leistung zu steuern. Wir empfehlen, sunrpc.max_tpc_slot_table_enteries auf 128 Anfragen pro Verbindung festzulegen und 10.000 Slots für alle NFS-Clients in einem einzelnen Projekt, die eine Verbindung zu NetApp Volumes herstellen, nicht zu überschreiten. Um den Parameter sunrpc.max_tcp_slot_table_entries festzulegen, fügen Sie ihn der Datei /etc/sysctl.conf hinzu und laden Sie die Parameterdatei mit dem Befehl sysctl -p neu.

    • Maximal unterstützten Wert pro Sitzung auf 180 festlegen: Im Gegensatz zu NFSv3, definieren NFSv4.1-Clients die Beziehung zwischen Client und Server in Sitzungen. Während NetApp Volumes mit NFSv3 bis zu 128 ausstehende Anfragen pro Verbindung unterstützt, ist NFSv4.1 auf 180 ausstehende Anfragen pro Sitzung beschränkt. Für Linux-NFSv4.1-Clients ist standardmäßig 64 max_session_slots pro Sitzung festgelegt. Sie können diesen Wert jedoch nach Bedarf anpassen. Wir empfehlen, den maximal unterstützten Wert pro Sitzung auf 180 zu ändern.

      Um max_session_slots anzupassen, erstellen Sie eine Konfigurationsdatei unter /etc/modprobe.d. Achten Sie darauf, dass keine Anführungszeichen (" ") in der Zeile vorkommen. Andernfalls wird die Option nicht wirksam.

      $ echo "options nfs max_session_slots=180" > /etc/modprobe/d/nfsclient/conf
      $ reboot
      
      Use the systool -v -m nfs command to see the current maximum in use
      by the client. For the command to work, at least one NFSv4.1 mount
      must be in place.
      
      $ systool -v -v nfs
      {
      Module = "nfs"
      
      Parameters:
      
      Max_session_slots = "63" <-
      
      }
      

    Das folgende Vergleichsdiagramm für NFS nconnect zeigt die Auswirkungen der Verwendung der nconnect-Konfiguration auf eine NFS-Arbeitslast. Diese Informationen wurden mit Fio mit den folgenden Einstellungen erfasst:

    • 100% Lesearbeitslast

    • 8 KiB-Blockgröße für ein einzelnes Volume

    • n2-standard-32 virtuelle Maschine mit Red Hat 9-Betriebssystem

    • 6 TiB-Arbeitssatz

    Die Verwendung eines nconnect-Werts von 16 führte zu einer fünfmal höheren Leistung als ohne Aktivierung.

    Vergleich von NFS-nconnect mit einer einzelnen virtuellen Red Hat 9-Maschine mit einer Blockgröße von 8 KiB.

    Windows

    Bei Windows-basierten Clients kann der Client SMB Multichannel mit Receive Side Scaling (RSS) verwenden, um mehrere TCP-Verbindungen zu öffnen. Für diese Konfiguration muss Ihre virtuelle Maschine einen zugewiesenen Netzwerkadapter haben, der RSS unterstützt. Wir empfehlen, RSS auf vier oder acht Werte festzulegen. Jeder Wert über eins sollte jedoch den Durchsatz erhöhen.

    Das folgende Diagramm zeigt den Unterschied, den die Verwendung der RSS-Konfiguration für eine SMB-Arbeitslast haben kann. Diese Informationen wurden mit Fio mit den folgenden Einstellungen erfasst:

    • 100% Lesearbeitslast

    • 8 KiB-Blockgröße für ein einzelnes Volume

    • Einzelne n2-standard-32 virtuelle Maschine mit Windows 2022-Betriebssystem

    • 6 TiB-Arbeitssatz

    Acht Jobs wurden ausgeführt, wobei sich nur die SMB-Client-RSS-Option zwischen den Testausführungen änderte. Die Verwendung von RSS-Werten von 4, 8 und 16 verdoppelte die Leistung im Vergleich zu einem Wert von 1. Jede RSS-Instanz wurde neunmal mit einem numjobs-Parameter von 8 ausgeführt. Der Parameter iodepth wurde bei jeder Ausführung um fünf erhöht, bis der maximale Durchsatz erreicht war.

    SMB-RSS-Vergleich einer einzelnen Windows 2022-VM mit einer Blockgröße von 8 KiB

Hochleistungs-Computing und Arbeitslasten mit hoher Parallelität

Für umfangreiche NFS-Arbeitslasten mit hoher Parallelität, wie sie in Hochleistungs-Computing- oder EDA-Umgebungen vorkommen, sollten Sie die folgenden clientseitigen Optimierungen anwenden, um die Leistung und Stabilität zu verbessern und Probleme wie Metadatenstürme oder Client-Hänger zu vermeiden:

  • NFS-Bereitstellungsoptionen: Wenn Sie die NetApp Volumes NFS-Freigabe bereitstellen, fügen Sie die folgenden Optionen in den Befehl /etc/fstab oder `mount` ein:

    • actimeo=600: Erhöht die Zeit, in der Attribute auf dem Client im Cache gespeichert werden, wodurch GETATTR-Aufrufe reduziert werden.
    • nconnect=8: Verwendet mehrere TCP-Verbindungen pro Bereitstellung, wodurch die Bandbreite verbessert wird.

    Beispiel für einen Bereitstellungsbefehl:

    sudo mount -t nfs -o rw,hard,intr,rsize=1048576,wsize=1048576,vers=3,tcp,actimeo=600,nconnect=8 SERVER:/SHARE /mnt/netapp
    
  • TCP-keepalive-Einstellungen: Passen Sie die TCP-keepalive -Zeit des Systems an, um nicht reagierende Verbindungen schneller zu erkennen. Dies kann mit sysctl festgelegt werden:

    sudo sysctl -w net.ipv4.tcp_keepalive_time=60
    

    Damit diese Änderung auch nach Neustarts erhalten bleibt, fügen Sie /etc/sysctl.conf net.ipv4.tcp_keepalive_time = 60 hinzu und laden Sie sie mit sudo sysctl -p neu.

Manuelle QoS

Mit der manuellen Dienstqualität (Quality of Service, QoS) in NetApp Volumes können Sie die Volume-Leistung an die Anforderungen der Arbeitslast anpassen und die Speicherkosten kontrollieren.

Manuelle QoS bietet die folgenden Vorteile:

  • Kostenoptimierung: Skalieren Sie die Volume-Leistung innerhalb der Kapazität Ihres Speicherpools , um die Cloud-Kosten zu optimieren.

  • Sofortige Anpassung des Durchsatzes: Passen Sie den Volume-Durchsatz ohne Ausfallzeiten an.

  • Kostensenkung bei der Notfallwiederherstellung: Senken Sie die QoS für replizierte Volumes, um die Kosten für die Notfallwiederherstellung für Zielpools zu senken.

  • Verbesserte Leistung für Klone oder Caches: Erhöhen Sie die Leistung für Klon oder Cache-Volumes mit kleinen zugewiesenen Größen.

  • Flexible Arbeitslastverwaltung: Verwenden Sie größere Speicherpools als Container für mehrere Arbeitslasten und passen Sie den Durchsatz jedes Volumes nach Bedarf an.

Hinweise

  • Sie können die manuelle QoS mit der Google Cloud CLI, der NetApp Volumes API oder Terraform verwalten. Die Google Cloud Console wird nicht unterstützt.

  • Manuelle QoS wird für die Service-Levels „Flex“ (Typ „Einheitlich“), „Standard“, „Premium“ und „Extreme“ unterstützt und ist für das Service-Level „Flex“ (Typ „Datei“) nicht verfügbar.

Manuelle Dienstqualität-Limits einrichten

Für Volumes in einem manuellen QoS-Speicherpool können Sie Durchsatz und Kapazität unabhängig festlegen. Der Gesamtdurchsatz aller Volumes in einem manuellen QoS-Pool ist durch den Gesamtdurchsatz des Pools begrenzt. Der Pool-Durchsatz wird durch die zugewiesene Kapazität und das Service-Level bestimmt. Ein 40-TiB-Pool mit dem Service-Level „Premium“ kann beispielsweise einen maximalen Durchsatz von 2.560 MiB/s bei 64 MiB/s pro TiB erreichen, während ein 200-TiB-Pool mit dem Service-Level „Extreme“ Volumes mit einem kombinierten Durchsatz von 25.600 MiB/s unterstützen kann.

Sobald der manuelle QoS-Pool eingerichtet ist, können Sie das erforderliche Durchsatzlimit für jedes Volume darin festlegen. Das maximale Durchsatzlimit für ein einzelnes Volume beträgt 4, 5 GiB/s oder 30 GiB/s für Volumes mit großer Kapazität.

In den Pool- und Volume-Befehlen oder APIs werden die verfügbaren und zugewiesenen Durchsatzwerte für den Pool angezeigt, damit Sie den Gesamtdurchsatz verwalten können. Informationen zum Erstellen eines manuellen QoS-Pools und zum Definieren des Volume-Durchsatzes finden Sie unter Speicherpool erstellen und Volume erstellen.

Speicherpool erstellen

gcloud

So erstellen Sie einen Speicherpool mit manueller QoS:

    gcloud netapp storage-pools create POOL_NAME \
       --project=PROJECT_ID \
       --location=LOCATION \
       --capacity=CAPACITY \
       --service-level=SERVICE_LEVEL \
       --qos-type=QOS_TYPE \
       --network=name=NETWORK_NAME

Ersetzen Sie die folgenden Informationen:

  • POOL_NAME: der Name des Pools, den Sie erstellen möchten. Der Poolname muss pro Standort eindeutig sein.

  • PROJECT_ID: der Name des Projekts, in dem Sie den Speicherpool erstellen möchten.

  • LOCATION: der Standort des Pools, den Sie erstellen möchten.

  • CAPACITY: die Kapazität des Pools in GiB.

  • SERVICE_LEVEL: das Service-Level für Ihren Speicherpool: „Standard“, „Premium“ oder „Extreme“.

  • QOS_TYPE: der QoS-Typ Ihres Speicherpools: „auto“ oder „manual“.

  • NETWORK_NAME: der Name der VPC.

Speicherpool bearbeiten

gcloud

So bearbeiten Sie einen vorhandenen automatischen QoS-Speicherpool, um manuelle QoS zu verwenden:

    gcloud netapp storage-pools update POOL_NAME \
       --project=PROJECT_ID \
       --location=LOCATION \
       --qos-type=QOS_TYPE

Ersetzen Sie die folgenden Informationen:

  • POOL_NAME: der Name des Pools, den Sie aktualisieren möchten.

  • PROJECT_ID: der Name des Projekts.

  • LOCATION: der Standort des Pools.

  • QOS_TYPE: der aktualisierte QoS-Typ für Ihren Speicherpool. Nur die manuelle Konfiguration wird unterstützt.

Volume erstellen

gcloud

Erstellen Sie mit dem folgenden Befehl ein Volume mit einem angegebenen manuellen QoS-Durchsatzlimit:

gcloud netapp volumes create VOLUME_NAME \
  --project=PROJECT_ID \
  --location=LOCATION \
  --storage-pool=STORAGE_POOL \
  --capacity=CAPACITY \
  --protocols=PROTOCOLS \
  --share-name=SHARE_NAME \
  --throughput-mibps=THROUGHPUT_MIBPS

Ersetzen Sie die folgenden Informationen:

  • VOLUME_NAME: der Name des Volumes. Dieser Name muss pro Standort eindeutig sein.

  • PROJECT_ID: der Name des Projekts, in dem das Volume erstellt werden soll.

  • LOCATION: der Standort für das Volume.

  • STORAGE_POOL: der Speicherpool, in dem das Volume erstellt werden soll.

  • CAPACITY: die Kapazität des Volumes. Sie definiert die Kapazität, die NAS-Clients sehen.

  • PROTOCOLS: Wählen Sie die NAS-Protokolle aus, mit denen das Volume exportiert wird. Gültige Optionen sind NFSv3, NFSv4, SMB und die folgenden Kombinationen:

    • nfsv3,nfsv4
    • nfsv3,smb
    • nfsv4,smb

    Je nach ausgewähltem Protokolltyp empfehlen wir, die protokollspezifischen Parameter wie export-policy oder smb-settings hinzuzufügen.

  • SHARE_NAME: der NFS-Exportpfad oder der SMB-Freigabename des Volumes.

  • THROUGHPUT_MIBPS: das Durchsatzlimit des Volumes in MiB/s.

Weitere Informationen zu zusätzlichen optionalen Flags finden Sie in der Google Cloud SDK-Dokumentation zur Volume-Erstellung.

Nächste Schritte

Weitere Informationen zur Volume-Migration