Testar a performance da instância

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.

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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}