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_1zu 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
nconnectBereitstellungsoption 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
nconnectoptimal zu nutzen:Anzahl der TCP-Sitzungen mit
nconnecterhö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_entriesfestlegen:sunrpc.max_tcp_slot_table_entriesist ein Anpassungsparameter auf Verbindungsebene, den Sie ändern können, um die Leistung zu steuern. Wir empfehlen,sunrpc.max_tpc_slot_table_enteriesauf 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 Parametersunrpc.max_tcp_slot_table_entriesfestzulegen, fügen Sie ihn der Datei/etc/sysctl.confhinzu und laden Sie die Parameterdatei mit dem Befehlsysctl -pneu.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_slotspro 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_slotsanzupassen, 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
nconnectzeigt 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-32virtuelle Maschine mit Red Hat 9-Betriebssystem6 TiB-Arbeitssatz
Die Verwendung eines
nconnect-Werts von 16 führte zu einer fünfmal höheren Leistung als ohne Aktivierung.
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-32virtuelle Maschine mit Windows 2022-Betriebssystem6 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 Parameteriodepthwurde bei jeder Ausführung um fünf erhöht, bis der maximale Durchsatz erreicht war.
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/fstaboder `mount` ein:actimeo=600: Erhöht die Zeit, in der Attribute auf dem Client im Cache gespeichert werden, wodurchGETATTR-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/netappTCP-
keepalive-Einstellungen: Passen Sie die TCP-keepalive-Zeit des Systems an, um nicht reagierende Verbindungen schneller zu erkennen. Dies kann mitsysctlfestgelegt werden:sudo sysctl -w net.ipv4.tcp_keepalive_time=60Damit diese Änderung auch nach Neustarts erhalten bleibt, fügen Sie
/etc/sysctl.confnet.ipv4.tcp_keepalive_time = 60hinzu und laden Sie sie mitsudo sysctl -pneu.
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,nfsv4nfsv3,smbnfsv4,smb
Je nach ausgewähltem Protokolltyp empfehlen wir, die protokollspezifischen Parameter wie
export-policyodersmb-settingshinzuzufü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