Testar o desempenho 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, 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=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 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.

  1. Inicie o servidor 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 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
    
    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 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.conf
    
  6. Depois 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}