Instanzleistung testen

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=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 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.

  1. Starten Sie den fio-Server auf allen Client-VMs. Fio verwendet Port 8765 für die Kommunikation. Dieser Port muss also in Ihrer Firewallrichtlinie geöffnet sein.

    fio --server
    
  2. Wä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
    
    EOL
    
  3. Erstellen 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>
    EOL
    
  4. Erstellen 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.conf
    
  5. Fü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.conf
    
  6. Wenn 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}