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 in lettura, del throughput in scrittura, delle IOPS in lettura e delle IOPS in scrittura per le istanze di livello di base, regionale, zonale ed enterprise.
Puoi testare le prestazioni delle istanze di base utilizzando una singola VM client. Sconsigliamo di utilizzare una singola VM client per testare istanze regionali, zonali o aziendali perché i livelli di servizio scaleout sono ottimizzati per le prestazioni di più VM client e un singolo client in genere non può raggiungere le IOPS o il throughput massimi del cluster.
Per ulteriori informazioni, consulta Rendimento delle VM client singole e multiple.
Prima di iniziare
Monta la condivisione file di Filestore che vuoi testare su tutte le VM client. Può essere una o più VM client a seconda del livello di servizio. Per istruzioni dettagliate e opzioni di montaggio, vedi 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 |
---|---|---|
A livello di regione o di zona | 1-9,75 TiB | nconnect=2 |
A livello di regione o di zona | 10-100 TiB | 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
.
Testa le prestazioni 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.
Velocità effettiva di scrittura massima per le istanze di base di dimensioni 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
Velocità effettiva di lettura massima:
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
Velocità effettiva di scrittura massima:
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
IOPS di lettura massimi:
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
IOPS di scrittura massimi:
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 prestazioni massime per le istanze zonali, regionali ed enterprise, utilizza più VM client.
Consigliamo di utilizzare otto VM client per 1 TiB per 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
8765
per comunicare, quindi questa porta deve essere aperta nel criterio del firewall.fio --server
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
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
Crea il seguente set di dati in una directory temporanea sulla 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
Esegui i benchmark utilizzando la VM client per cui hai creato il file del job:
- Velocità effettiva di lettura massima
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-throughput /tmp/fio_job.conf
- Velocità effettiva di scrittura massima
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-throughput /tmp/fio_job.conf
- IOPS di lettura massimi
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-iops /tmp/fio_job.conf
- IOPS di scrittura massimi
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-iops /tmp/fio_job.conf
Al termine dei test, arresta i server fio su tutte le VM client ed elimina la relativa directory temporanea:
rm -rf ${TMP_DIR}