Questa pagina illustra i test di rendimento per le istanze di 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, degli IOPS di lettura e degli IOPS di scrittura per le istanze di livello base, regionale, zonale e aziendale.
Puoi testare il rendimento delle istanze di base utilizzando una singola VM client. Non consigliamo di utilizzare una singola VM client per testare le istanze regionali, zonali o aziendali perché i livelli di servizio con scalabilità orizzontale sono ottimizzati per il rendimento di più VM client e un singolo client di solito non può raggiungere il throughput o gli IOPS massimi del cluster.
Per ulteriori informazioni, consulta Rendimento 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 livello di servizio. 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 il rendimento di 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, zonale | 1-9,75 TiB | nconnect=2 |
| Regionale, zonale | 10-100 TiB | nconnect=7 |
| SSD base | - | nconnect=7 |
| Aziende | - | nconnect=2 |
| SSD con scalabilità elevata | - | nconnect=7 |
Puoi ottimizzare il throughput di lettura NFS modificando il valore parametro read_ahead_kb. Per ulteriori informazioni, consulta Ottimizzare il throughput di lettura NFS con il parametro read_ahead_kb.
Testare il rendimento con una singola VM client
Utilizza i seguenti scenari 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=writeThroughput 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=readThroughput 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=writeNumero 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=randreadNumero 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
Testare il rendimento con più VM client
Per ottenere il rendimento massimo per le istanze zonali, 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 comprese tra 10 e 100 TiB, utilizza otto VM client per 10 TiB.
Avvia il server fio su tutte le VM client. Fio utilizza la porta
8765per comunicare, quindi questa porta deve essere aperta nella policy del firewall.fio --serverSeleziona una VM client che orchestrerà l'esecuzione di fio. Crea un file di job fio su quella 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 EOLCrea un file
hosts.listcontenente 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> EOLCrea il seguente set di dati in una directory temporanea sulla VM client per cui hai creato il file di 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.confEsegui 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.confAl termine dei test, arresta i server fio su tutte le VM client ed elimina la directory temporanea:
rm -rf ${TMP_DIR}