Esta página aborda os testes de desempenho para instâncias do Filestore.
Vista geral
Se estiver a usar o Linux, pode usar a ferramenta Flexible IO Tester (fio) para testar o débito de leitura, o débito de escrita, as IOPS de leitura e as IOPS de escrita para instâncias de nível básico, regional, zonal e empresarial.
Pode testar o desempenho de instâncias básicas usando uma única VM cliente. Não recomendamos a utilização de uma única VM cliente para testar instâncias regionais, zonais ou empresariais, porque os níveis de serviço de expansão são otimizados em função do desempenho para várias VMs cliente e, normalmente, um único cliente não consegue atingir o máximo de IOPS ou débito do cluster.
Para mais informações, consulte o artigo Desempenho de VMs de cliente únicas e múltiplas.
Antes de começar
Monte a partilha de ficheiros do Filestore que quer testar em todas as VMs cliente. Pode ser uma ou várias VMs de cliente, consoante o nível de serviço. Para ver instruções detalhadas e opções de montagem, consulte o artigo Montar partilhas de ficheiros em clientes do Compute Engine.
Certifique-se de que especifica a opção de montagem nconnect
para aumentar o desempenho do NFS. Para níveis de serviço específicos, recomendamos que especifique o seguinte número de ligações entre o cliente e o servidor:
Nível | Capacidade | Número de associações |
---|---|---|
Regional, zonal | 1 a 9,75 TiB | nconnect=2 |
Regional, zonal | 10 a 100 TiB | nconnect=7 |
Enterprise | - | nconnect=2 |
SSD de grande escala | - | nconnect=7 |
Pode otimizar a taxa de transferência de leitura do NFS ajustando o valor do parâmetro read_ahead_kb
. Para mais informações, consulte o artigo Otimize o débito de leitura do NFS com o parâmetro read_ahead_kb
.
Teste o desempenho com uma única VM cliente
Use os seguintes cenários para realizar testes em instâncias básicas. Pode executar os comandos diretamente a partir da linha de comandos.
Débito de gravação máximo para instâncias básicas inferiores 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
Débito de leitura máximo:
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
Débito de gravação máximo:
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áximos:
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 escrita máximas:
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
Teste o desempenho com várias VMs de cliente
Para alcançar o máximo desempenho para instâncias zonais, regionais e empresariais, use várias VMs de cliente.
Recomendamos a utilização 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 fio em todas as VMs de cliente. O Fio usa a porta
8765
para comunicar, pelo que esta porta tem de estar aberta na sua política de firewall.fio --server
Selecione uma VM cliente que vai orquestrar a execução do fio. Crie um ficheiro de tarefas 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 EOL
Crie um ficheiro
hosts.list
que contenha os endereços IP ou os 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 num diretório temporário na VM cliente para a qual criou o ficheiro de tarefas:
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 testes de referência com a VM cliente para a qual criou o ficheiro de tarefas:
- Débito de leitura máximo
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-throughput /tmp/fio_job.conf
- Débito de gravação máximo
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-throughput /tmp/fio_job.conf
- IOPS de leitura máximas
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-iops /tmp/fio_job.conf
- IOPS de escrita máximas
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-iops /tmp/fio_job.conf
Quando terminar os testes, pare os servidores fio em todas as VMs cliente e elimine o respetivo diretório temporário:
rm -rf ${TMP_DIR}