Auf dieser Seite werden Leistungstests 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-, Zonal- und Enterprise-Stufe vergleichen.
Sie können die Leistung von Basisinstanzen mit einer einzelnen Client-VM testen. Wir empfehlen nicht, eine einzelne Client-VM zum Testen regionaler, zonaler oder Enterprise-Instanzen zu verwenden, da Scale-out-Dienstebenen für mehrere Client-VMs optimiert 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 von einzelnen und mehreren Client-VMs.
Vorbereitung
Stellen Sie die Filestore-Dateifreigabe, die Sie testen möchten, auf allen Client-VMs bereit. Je nach Dienstebene kann es sich um eine oder mehrere Client-VMs handeln. Eine detaillierte Anleitung und Informationen zu Bereitstellungsoptionen finden Sie unter Dateifreigaben auf Compute Engine-Clients bereitstellen.
Geben Sie die Bereitstellungsoption nconnect
für eine bessere NFS-Leistung an. Für bestimmte Dienstebenen 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 |
Leistung mit einer einzelnen Client-VM testen
Mit den folgenden Szenarien können Sie Tests auf einfachen Instanzen ausführen. Sie können die Befehle direkt über die Befehlszeile ausführen.
Maximaler Schreibdurchsatz für einfache Instanzen mit weniger als 1 TiB:
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=write
Maximaler 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=read
Maximaler 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=write
Maximale 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=randread
Maximale Schreib-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=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.
Für Instanzen mit 1 bis 9,75 TiB empfehlen wir acht Client-VMs pro 1 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
8765
für die Kommunikation. Dieser Port muss daher in Ihrer Firewall-Richtlinie geöffnet sein.fio --server
Wählen Sie eine Client-VM aus, die die fio-Ausführung 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 EOL
Erstellen Sie eine
hosts.list
-Datei mit den IP-Adressen oder DNS-Namen der fio-Client-VMs:cat << EOL > /tmp/hosts.list <Client 1 IP/DNS> <Client 2 IP/DNS> ... <Client N IP/DNS> EOL
Erstellen Sie den folgenden Datensatz 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.conf
Führen Sie Benchmarks mit der Client-VM aus, für die Sie die Jobdatei erstellt haben:
- Maximaler Durchsatz für Lesevorgänge
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-throughput /tmp/fio_job.conf
- Maximaler Durchsatz für Schreibvorgänge
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-throughput /tmp/fio_job.conf
- Maximale IOPS für Lesevorgänge
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-iops /tmp/fio_job.conf
- Maximale IOPS für Schreibvorgänge
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-iops /tmp/fio_job.conf
Wenn Sie mit den Tests fertig sind, beenden Sie die fio-Server auf allen Client-VMs und löschen Sie das temporäre Verzeichnis:
rm -rf ${TMP_DIR}