Instanzleistung testen

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.

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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}