Auf dieser Seite wird die Leistungsprüfung für Filestore-Instanzen beschrieben.
Übersicht
Wenn Sie Linux verwenden, können Sie mit dem Tool Flexible IO Tester (fio) den Lese- und Schreibdurchsatz sowie die Lese- und Schreib-IOPS für Instanzen der Basis--, Regional-, Zonen- und Enterprise-Stufe vergleichen.
Sie können die Leistung von Basic-Instanzen mit einer einzelnen Client-VM testen. Wir empfehlen nicht, eine einzelne Client-VM zum Testen von regionalen, zonenbasierten oder Enterprise-Instanzen zu verwenden, da Scale-out-Dienststufen für mehrere Client-VMs leistungsoptimiert sind und ein einzelner Client in der Regel nicht die maximalen Cluster-IOPS oder den maximalen Durchsatz erreichen kann.
Weitere Informationen finden Sie unter Leistung einzelner und mehrerer Client-VMs.
Vorbereitung
Stellen Sie die Filestore-Dateifreigabe, die Sie testen möchten, auf allen Client-VMs bereit. Je nach Service-Tier kann es sich um eine oder mehrere Client-VMs handeln. Eine detaillierte Anleitung und Bereitstellungsoptionen finden Sie unter Dateifreigaben auf Compute Engine-Clients bereitstellen.
Geben Sie die Bereitstellungsoption nconnect für eine höhere NFS-Leistung an. Für bestimmte Dienststufen empfehlen wir, die folgende Anzahl von Verbindungen zwischen Client und Server anzugeben:
| Stufe | Kapazität | Anzahl der Verbindungen |
|---|---|---|
| Regional, zonal | 1–9,75 TiB | nconnect=2 |
| Regional, zonal | 10–100 TiB | nconnect=7 |
| Unternehmen | - | nconnect=2 |
| Hochskalierte SSD | - | nconnect=7 |
Sie können den NFS-Lesedurchsatz optimieren, indem Sie den Parameterwert read_ahead_kb anpassen. Weitere Informationen finden Sie unter NFS-Lesedurchsatz mit dem Parameter read_ahead_kb optimieren.
Leistung mit einer einzelnen Client-VM testen
Verwenden Sie die folgenden Szenarien, um Tests für Basic-Instanzen durchzuführen. Sie können die Befehle direkt über die Befehlszeile ausführen.
Maximaler Schreibdurchsatz für einfache Instanzen, die kleiner als 1 TiB sind:
fio --ioengine=libaio --filesize=4G --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=writeMaximaler Durchsatz für Lesevorgänge:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \ --name=read --blocksize=1m --iodepth=64 --readwrite=readMaximaler Durchsatz für Schreibvorgänge:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \ --name=write --blocksize=1m --iodepth=64 --readwrite=writeMaximale Lese-IOPS:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \ --name=randread --blocksize=4k --iodepth=256 --readwrite=randreadMaximale IOPS für Schreibvorgänge:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \ --name=randwrite --blocksize=4k --iodepth=256 --readwrite=randwrite
Leistung mit mehreren Client-VMs testen
Verwenden Sie mehrere Client-VMs, um die maximale Leistung für zonale, regionale und Enterprise-Instanzen zu erzielen.
Wir empfehlen die Verwendung von acht Client-VMs pro 1 TiB für Instanzen zwischen 1 und 9,75 TiB. Verwenden Sie für Instanzen zwischen 10 und 100 TiB acht Client-VMs pro 10 TiB.
Starten Sie den fio-Server auf allen Client-VMs. Fio verwendet Port
8765für die Kommunikation. Dieser Port muss also in Ihrer Firewallrichtlinie geöffnet sein.fio --serverWählen Sie eine Client-VM aus, die den fio-Lauf orchestriert. Erstellen Sie auf dieser Client-VM eine fio-Jobdatei:
cat << EOL > /tmp/fio_job.conf [global] ioengine=libaio ramp_time=2s runtime=3m time_based direct=1 verify=0 randrepeat=0 group_reporting buffer_compress_percentage=50 directory=\${TMP_DIR} create_only=\${CREATE_ONLY} [read-throughput] blocksize=1048576 numjobs=8 readwrite=read filesize=100M [write-throughput] blocksize=1048576 numjobs=8 readwrite=write filesize=100M [read-iops] blocksize=4k iodepth=64 readwrite=randread filesize=1GB [write-iops] blocksize=4k iodepth=64 readwrite=randwrite filesize=1GB EOLErstellen Sie eine
hosts.list-Datei, die die IP-Adressen oder DNS-Namen der fio-Client-VMs enthält:cat << EOL > /tmp/hosts.list <Client 1 IP/DNS> <Client 2 IP/DNS> ... <Client N IP/DNS> EOLErstellen Sie das folgende Dataset in einem temporären Verzeichnis auf der Client-VM, für die Sie die Jobdatei erstellt haben:
export TMP_DIR=$(mktemp -d MOUNT_POINT_DIRECTORY/XXXXX) chmod 777 ${TMP_DIR} export CREATE_ONLY=1 fio --client=/tmp/hosts.list \ --section=read-throughput --section=read-iops /tmp/fio_job.confFühren Sie Benchmarks mit der Client-VM aus, für die Sie die Jobdatei erstellt haben:
- Maximaler Lesedurchsatz
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-throughput /tmp/fio_job.conf- Maximaler Schreibdurchsatz
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-throughput /tmp/fio_job.conf- Maximale Lese-IOPS
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-iops /tmp/fio_job.conf- Maximale Schreib-IOPS
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-iops /tmp/fio_job.confWenn Sie die Tests abgeschlossen haben, beenden Sie die fio-Server auf allen Client-VMs und löschen Sie das temporäre Verzeichnis:
rm -rf ${TMP_DIR}