Esta página aborda os testes de performance para instâncias do Filestore.
Visão geral
Se você estiver usando o Linux, use a ferramenta Flexible IO Tester (fio) para comparar a capacidade de leitura e gravação e as IOPS para instâncias do nível básico, regional, zonal e empresarial.
É possível testar o desempenho de instâncias básicas usando uma única VM de cliente. Não recomendamos usar uma única VM de cliente para testar instâncias regionais, zonais ou corporativas, porque os níveis de serviço de escalonamento são otimizados para várias VMs de cliente, e um único cliente geralmente não consegue atingir o IOPS ou a capacidade máxima do cluster.
Para mais informações, consulte Desempenho de VM de cliente único e várias VMs.
Antes de começar
Monte o compartilhamento de arquivos do Filestore que você quer testar em todas as VMs clientes. Pode ser uma ou várias VMs de cliente, dependendo do nível de serviço. Para instruções detalhadas e opções de montagem, consulte Como montar compartilhamentos de arquivos em clientes do Compute Engine.
Especifique a opção de montagem nconnect
para melhorar o desempenho do NFS. Para níveis de serviço específicos, recomendamos especificar o seguinte número de conexões entre o cliente e o servidor:
Nível | Capacidade | Número de conexões |
---|---|---|
Regional, zonal | 1 a 9,75 TiB | nconnect=2 |
Regional, zonal | 10-100 TiB | nconnect=7 |
Enterprise | - | nconnect=2 |
SSD de grande escala | - | nconnect=7 |
Testar a performance com uma única VM de cliente
Use os cenários a seguir para realizar testes em instâncias básicas. É possível executar os comandos diretamente na linha de comando.
Capacidade de processamento de gravação máxima para instâncias básicas menores que 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
Capacidade máxima de leitura:
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
Capacidade máxima de gravação:
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 de leitura máxima:
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 de gravação máxima:
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
Testar o desempenho com várias VMs de cliente
Para alcançar o desempenho máximo em instâncias zonais, regionais e corporativas, use várias VMs de cliente.
Recomendamos o uso de oito VMs de cliente por 1 TiB para instâncias entre 1 e 9,75 TiB. Para instâncias entre 10 e 100 TiB, use oito VMs de cliente por 10 TiB.
Inicie o servidor de fio em todas as VMs de cliente. O Fio usa a porta
8765
para se comunicar. Portanto, essa porta precisa estar aberta na sua política de firewall.fio --server
Selecione uma VM cliente que orquestre a execução do fio. Crie um arquivo de job de fio nessa VM cliente:
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
Crie um arquivo
hosts.list
que contenha os endereços IP ou nomes DNS das VMs do cliente fio:cat << EOL > /tmp/hosts.list <Client 1 IP/DNS> <Client 2 IP/DNS> ... <Client N IP/DNS> EOL
Crie o seguinte conjunto de dados em um diretório temporário na VM de cliente em que você criou o arquivo de 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
Execute comparativos usando a VM cliente em que você criou o arquivo de trabalho:
- Capacidade máxima de leitura
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-throughput /tmp/fio_job.conf
- Capacidade máxima de gravação
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-throughput /tmp/fio_job.conf
- IOPS de leitura máxima
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-iops /tmp/fio_job.conf
- IOPS de gravação máxima
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-iops /tmp/fio_job.conf
Depois de concluir os testes, pare os servidores de fio em todas as VMs do cliente e exclua o diretório temporário:
rm -rf ${TMP_DIR}