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, a capacidade de gravação, as IOPS de leitura e as IOPS de gravação para instâncias do nível básico, regional, zonal e empresarial.
É possível testar o desempenho das instâncias básicas usando uma única VM cliente. Não recomendamos o uso de uma única VM cliente para testar instâncias regionais, zonais ou empresariais, porque os níveis de serviço de escalonamento horizontal são otimizados para várias VMs cliente, e um único cliente geralmente não consegue atingir o máximo de IOPS ou capacidade de transferência do cluster.
Para mais informações, consulte Desempenho de VMs de cliente únicas e múltiplas.
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 aumentar 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, por zona | 1 a 9,75 TiB | nconnect=2 |
| Regional, por zona | 10-100 TiB | nconnect=7 |
| Enterprise | - | nconnect=2 |
| SSD de grande escala | - | nconnect=7 |
É possível otimizar a capacidade de leitura do NFS ajustando o valor do parâmetro read_ahead_kb. Para mais informações, consulte Otimizar a taxa de transferência de leitura do NFS com o parâmetro read_ahead_kb.
Testar a performance com uma única VM cliente
Use os cenários a seguir para realizar testes em instâncias básicas. É possível executar os comandos diretamente da linha de comando.
Capacidade máxima de processamento de gravação 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=writeCapacidade 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=readCapacidade 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=writeIOPS 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=randreadIOPS 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 a performance com várias VMs de cliente
Para alcançar o desempenho máximo das instâncias zonais, regionais e empresariais, use várias VMs clientes.
Recomendamos usar 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 fio em todas as VMs de cliente. O Fio usa a porta
8765para se comunicar. Portanto, essa porta precisa estar aberta na sua política de firewall.fio --serverSelecione uma VM cliente que vai orquestrar a execução do fio. Crie um arquivo de job 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 EOLCrie um arquivo
hosts.listque 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> EOLCrie 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.confExecute comparativos de mercado usando a VM cliente para a qual você criou o arquivo de job:
- Capacidade máxima de processamento de leitura
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-throughput /tmp/fio_job.conf- Capacidade máxima de processamento 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.confDepois de concluir o teste, pare os servidores fio em todas as VMs clientes e exclua o diretório temporário delas:
rm -rf ${TMP_DIR}