Esta página aborda os testes de desempenho 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, a IOPS de leitura e a IOPS de gravação para instâncias de nível básico, regional, zonal e empresarial.
É possível testar o desempenho de instâncias básicas usando uma única VM do cliente. Não recomendamos o uso de uma única VM do 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 do cliente, e um único cliente geralmente não consegue atingir a IOPS ou a capacidade máxima do cluster.
Para mais informações, consulte Desempenho de VMs de cliente únicas e múltiplas.
Antes de começar
Ative o compartilhamento de arquivos do Filestore que você quer testar em todas as VMs do cliente. Pode ser uma ou várias VMs do cliente, dependendo do nível de serviço. Para instruções detalhadas e opções de ativação, consulte Como ativar compartilhamentos de arquivos em clientes do Compute Engine.
Especifique a opção de ativação 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 a 100 TiB | nconnect=7 |
| SSD básico | - | 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 capacidade de processamento de leitura do NFS com o parâmetro read_ahead_kb.
Testar o desempenho com uma única VM do 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 máxima 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 o desempenho com várias VMs do cliente
Para alcançar o desempenho máximo de instâncias zonais, regionais e empresariais, use várias VMs do cliente.
Recomendamos o uso de oito VMs do cliente por 1 TiB para instâncias entre 1 e 9,75 TiB. Para instâncias entre 10 e 100 TiB, use oito VMs do cliente por 10 TiB.
Inicie o servidor fio em todas as VMs do cliente. O fio usa a porta
8765para se comunicar. Portanto, essa porta precisa estar aberta na política de firewall.fio --serverSelecione uma VM do cliente que vai orquestrar a execução do fio. Crie um arquivo de job fio nessa VM do 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 conjunto de dados a seguir em um diretório temporário na VM do cliente para a qual 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 comparações usando a VM do cliente para a qual você criou o arquivo de job:
- 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.confDepois de concluir os testes, interrompa os servidores fio em todas as VMs do cliente e exclua o diretório temporário delas:
rm -rf ${TMP_DIR}