Instanzleistung optimieren und testen

Auf dieser Seite werden die erwartete durchschnittliche Leistung und die empfohlenen Leistungseinstellungen für Filestore beschrieben. Außerdem erfahren Sie, wie Sie die Leistung Ihrer Filestore-Instanzen testen können.

Erwartete Leistung

Jede Filestore-Dienststufe bietet eine andere Leistungsebene. Die Leistung einer bestimmten Instanz kann aufgrund verschiedener Faktoren von den erwarteten Zahlen abweichen, z. B. durch die Verwendung von Caching, die Anzahl der Client-VMs, den Maschinentyp der Client-VMs und die getestete Arbeitslast.

In den folgenden Tabellen sehen Sie die erwartete Leistung von Filestore-Instanzen basierend auf ihrer Dienststufe und der konfigurierten Kapazität:

Leistung Kapazität Lese- und Schreib-IOPS Lese- und Schreibdurchsatz (MiB/s)
BASIC_HDD 1 TiB bis 10 TiB 600/1,000 100/100
BASIC_HDD 10 TiB bis 63,9 TiB 1.000/5.000 180/120
BASIC_SSD 2,5 TiB bis 63,9 TiB 60,000/25,000 1,200/350
ZONAL (zonal, niedriger Kapazitätsbereich) 1 TiB 9.200/2.600 260/88
ZONAL (zonal, niedriger Kapazitätsbereich) 9,75 TiB 89.700/25.350 2.535/858
HIGH_SCALE_SSD (jetzt zonal, Bereich mit hoher Kapazität) 10 TiB 92.000/26.000 2.600/880
HIGH_SCALE_SSD (jetzt zonal, Bereich mit hoher Kapazität) 100 TiB 920.000/260.000 26.000/8.800
ENTERPRISE 1 TiB 12.000/4.000 120/100
ENTERPRISE 10 TiB 120.000/40.000 1.200/1.000

Die vorherige Tabelle zeigt die erwartete Leistung bei minimaler und maximaler Kapazität für jede Dienststufe. Zwischen diesen Limits steigt die Leistung linear, wenn die Kapazität steigt. Wenn Sie beispielsweise die Kapazität Ihrer Unternehmensinstanz von 1 TiB auf 2 TiB verdoppeln, verdoppelt sich die erwartete Leistung der Instanz von 12.000/4.000 Lese- und Schreib-IOPS auf 24.000/8.000 Lese- und Schreib-IOPS.

In Szenarien mit einem oder wenigen Clients müssen Sie die Anzahl der TCP-Verbindungen mit der Bereitstellungsoption nconnect erhöhen, um die maximale NFS-Leistung zu erzielen. Wir empfehlen, bis zu 7 Verbindungen für die zonale Dienststufe und bis zu 2 Verbindungen für die Enterprise-Stufe anzugeben. Im Allgemeinen gilt: Je größer die Dateifreigabekapazität und je weniger Client-VMs eine Verbindung herstellen, desto mehr Leistung erzielen Sie, wenn Sie zusätzliche Verbindungen mit nconnect angeben.

Empfohlener Client-Maschinentyp

Wir empfehlen die Verwendung eines Compute Engine-Maschinentyps wie n2-standard-8, der eine Bandbreite für ausgehenden Traffic von 16 Gbps bietet. Mit dieser Bandbreite für ausgehenden Traffic kann der Client ungefähr 16 Gbps Lesebandbreite für Cache-freundliche Arbeitslasten erreichen. Weitere Informationen finden Sie unter Netzwerkbandbreite.

Bereitstellungsoptionen für Linux-Clients

Wir empfehlen, die folgenden NFS-Bereitstellungsoptionen zu verwenden, insbesondere die hard-Bereitstellung, async und die Optionen rsize und wsize, um die beste Leistung auf Linux-Client-VM-Instanzen zu erzielen. Weitere Informationen zu NFS-Bereitstellungsoptionen finden Sie unter nfs.

Standardeinstellung Beschreibung
hard Der NFS-Client wiederholt NFS-Anforderungen auf unbestimmte Zeit.
timeo=600 Der NFS-Client wartet 600 Dezisekunden (60 Sekunden), bevor eine NFS-Anforderung wiederholt wird.
retrans=3 Der NFS-Client versucht dreimal, NFS-Anforderungen zu erfüllen, bevor weitere Wiederherstellungsmaßnahmen ergriffen werden.
rsize=262144 Der NFS-Client kann pro READ-Anfrage maximal 262.144 Byte vom NFS-Server empfangen.
Hinweis: Legen Sie bei Instanzen der Basisstufe den Wert rsize auf 1048576 fest.
wsize=1048576 Der NFS-Client kann pro WRITE-Anfrage maximal 1.048.576 Byte (1 MiB) an den NFS-Server senden.
resvport Der NFS-Client verwendet einen privilegierten Quellport, wenn er mit dem NFS-Server für diesen Bereitstellungspunkt kommuniziert.
async Der NFS-Client verzögert das Senden von Anwendungsschreibvorgängen an den NFS-Server, bis bestimmte Bedingungen erfüllt sind.
Achtung: Durch die Verwendung der Option sync wird die Leistung erheblich reduziert.

Leistung einer einzelnen und mehreren Client-VMs

Die skalierbaren Dienststufen von Filestore sind für mehrere Client-VMs leistungsoptimiert, nicht für eine einzelne Client-VM.

Für enterprise- und zonale Instanzen sind mindestens vier Client-VMs erforderlich, um die volle Leistung nutzen zu können. Dadurch wird sichergestellt, dass alle VMs im zugrunde liegenden Filestore-Cluster vollständig genutzt werden.

Für zusätzlichen Kontext hat der kleinste skalierbare Filestore-Cluster vier VMs. Jede Client-VM kommuniziert mit nur einer Filestore-Cluster-VM, unabhängig von der Anzahl der NFS-Verbindungen pro Client, die mit der Bereitstellungsoption nconnect angegeben wurden. Wenn Sie eine einzelne Client-VM verwenden, werden Lese- und Schreibvorgänge nur von einer einzelnen Filestore-Cluster-VM ausgeführt.

Leistung von Google Cloud-Ressourcen verbessern

Vorgänge über mehrere Google Cloud-Ressourcen hinweg, wie das Kopieren von Daten von Cloud Storage in eine Filestore-Instanz mit gsutil, können langsam sein. Versuchen Sie Folgendes, um Leistungsprobleme zu minimieren:

  • Achten Sie darauf, dass sich der Cloud Storage-Bucket, die Client-VM und die Filestore-Instanz in derselben Region befinden.

    Dual-Regionen bieten eine leistungsstarke Option für Daten, die in Cloud Storage gespeichert sind. Achten Sie bei Verwendung dieser Option darauf, dass sich die anderen Ressourcen in einer der einzelnen Regionen der Dual-Region befinden. Wenn sich Ihre Cloud Storage-Daten beispielsweise in us-central1,us-west1 befinden, müssen Sie darauf achten, dass sich die Client-VM und die Filestore-Instanz in us-central1 befinden.

  • Als Referenz sollten Sie die Leistung einer mit einem PD verbundenen VM prüfen und mit der Leistung einer Filestore-Instanz vergleichen.

    • Wenn die an PD angehängte VM im Vergleich zur Filestore-Instanz eine ähnliche oder langsamere Leistung aufweist, kann dies auf einen Leistungsengpass hindeuten, der nichts mit Filestore zu tun hat. Versuchen Sie Folgendes, um die Basisleistung Ihrer Nicht-Filestore-Ressourcen zu verbessern:

      • Wenden Sie die Option gsutil -m an. Mit dieser Option können unterstützte Vorgänge, einschließlich cp, mv und rsync, parallel ausgeführt werden.

      • Wenden Sie die folgenden gsutil-Konfigurationen an. Alle sind änderbare boto-Konfigurationswerte, die in der Konfigurationsdatei boto festgelegt werden. Nutzer können die Datei direkt ändern (empfohlen) oder die Option gsutil -o verwenden:

    • Wenn die Leistung der Filestore-Instanz deutlich langsamer ist als die der an den PD angehängten VM, sollten Sie den Vorgang auf mehrere VMs verteilen.

      • Dies verbessert die Leistung von Lesevorgängen aus Cloud Storage.

      • Für enterprise- und zonale Instanzen sind mindestens vier Client-VMs erforderlich, um die volle Leistung nutzen zu können. Dadurch wird sichergestellt, dass alle VMs im zugrunde liegenden Filestore-Cluster vollständig genutzt werden. Weitere Informationen finden Sie unter Leistung von einzelnen und mehreren Client-VMs.

Testleistung

Wenn Sie Linux verwenden, können Sie mit dem Tool fio den Lese- und Schreibdurchsatz und die IOPS für Instanzen der Basisstufe messen. Diese Methode zum Benchmarking der Leistung wird für Instanzen der Enterprise- und zonalen Stufe nicht empfohlen.

Die Beispiele in diesem Abschnitt zeigen allgemeine Benchmarks, die Sie möglicherweise ausführen möchten. Möglicherweise müssen Sie fio von mehreren Client-VM-Instanzen aus ausführen, um maximale Leistung zu erzielen.

Im folgenden Beispiel wird der maximale Schreibdurchsatz gemessen:

fio --ioengine=libaio --filesize=32G --ramp_time=2s \
--runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
--group_reporting --directory=/mnt/nfs  \
--name=write --blocksize=1m --iodepth=64 --readwrite=write

Im folgenden Beispiel werden maximale Schreib-IOPS gemessen:

fio --ioengine=libaio --filesize=32G --ramp_time=2s \
--runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
--group_reporting --directory=/mnt/nfs  \
--name=randwrite --blocksize=4k --iodepth=256 --readwrite=randwrite

Im folgenden Beispiel wird der maximale Lesedurchsatz gemessen:

fio --ioengine=libaio --filesize=32G --ramp_time=2s \
--runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
--group_reporting --directory=/mnt/nfs  \
--name=read --blocksize=1m --iodepth=64 --readwrite=read

Im folgenden Beispiel werden maximale Lese-IOPS gemessen:

fio --ioengine=libaio --filesize=32G --ramp_time=2s \
--runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
--group_reporting --directory=/mnt/nfs  \
--name=randread --blocksize=4k --iodepth=256 --readwrite=randread

Nächste Schritte