Testare le prestazioni dell'istanza

Questa pagina illustra i test delle prestazioni per le istanze Filestore.

Panoramica

Se utilizzi Linux, puoi utilizzare lo strumento Flexible IO Tester (fio) per eseguire il benchmark del throughput di lettura, del throughput di scrittura, delle IOPS di lettura e delle IOPS di scrittura per le istanze di livello basic, regionale, di zona ed enterprise.

Puoi testare le prestazioni delle istanze di base utilizzando una singola VM client. Non è consigliabile utilizzare una singola VM client per testare istanze regionali, di zona o aziendali perché i livelli di servizio di scalabilità orizzontale sono ottimizzati per le prestazioni di più VM client e un singolo client in genere non può raggiungere il throughput o gli IOPS massimi del cluster.

Per saperne di più, consulta Prestazioni di una o più VM client.

Prima di iniziare

Monta la condivisione file di Filestore che vuoi testare su tutte le VM client. Può trattarsi di una o più VM client, a seconda del service tier. Per istruzioni dettagliate e opzioni di montaggio, consulta Montaggio delle condivisioni file sui client Compute Engine.

Assicurati di specificare l'opzione di montaggio nconnect per aumentare le prestazioni NFS. Per livelli di servizio specifici, consigliamo di specificare il seguente numero di connessioni tra il client e il server:

Livello Capacità Numero di connessioni
Regionale, a livello di zona 1-9,75 TiB nconnect=2
Regionale, a livello di zona 10-100 TiB nconnect=7
Aziende - nconnect=2
SSD con scalabilità elevata - nconnect=7

Puoi ottimizzare la velocità effettiva di lettura NFS modificando il valore parametro read_ahead_kb. Per saperne di più, consulta Ottimizza la velocità effettiva di lettura NFS con il parametro read_ahead_kb.

Testare le prestazioni con una singola VM client

Utilizza gli scenari seguenti per eseguire test sulle istanze di base. Puoi eseguire i comandi direttamente dalla riga di comando.

  • Throughput massimo di scrittura per le istanze di base inferiori a 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
    
  • Throughput massimo di lettura:

    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
    
  • Throughput massimo di scrittura:

    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
    
  • Numero massimo di IOPS di lettura:

    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
    
  • Numero massimo di IOPS di scrittura:

    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
    

Testa le prestazioni con più VM client

Per ottenere le massime prestazioni per le istanze di zona, regionali e aziendali, utilizza più VM client.

Consigliamo di utilizzare otto VM client per 1 TiB per le istanze comprese tra 1 e 9,75 TiB. Per le istanze tra 10 e 100 TiB, utilizza otto VM client ogni 10 TiB.

  1. Avvia il server fio su tutte le VM client. Fio utilizza la porta 8765 per comunicare, pertanto questa porta deve essere aperta nella policy firewall.

    fio --server
    
  2. Seleziona una VM client che orchestrerà l'esecuzione di fio. Crea un file di job fio sulla VM client:

    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. Crea un file hosts.list contenente gli indirizzi IP o i nomi DNS delle VM client fio:

    cat << EOL > /tmp/hosts.list
    <Client 1 IP/DNS>
    <Client 2 IP/DNS>
    ...
    <Client N IP/DNS>
    EOL
    
  4. Crea il seguente set di dati in una directory temporanea nella VM client per cui hai creato il file del job:

    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. Esegui i benchmark utilizzando la VM client per cui hai creato il file di job:

    • Throughput massimo di lettura
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=read-throughput /tmp/fio_job.conf
    
    • Throughput massimo di scrittura
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=write-throughput /tmp/fio_job.conf
    
    • Numero massimo di IOPS di lettura
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=read-iops /tmp/fio_job.conf
    
    • Numero massimo di IOPS di scrittura
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=write-iops /tmp/fio_job.conf
    
  6. Al termine del test, arresta i server fio su tutte le VM client ed elimina la relativa directory temporanea:

    rm -rf ${TMP_DIR}