Testar o desempenho da instância

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=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 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.

  1. Inicie o servidor fio em todas as VMs do cliente. O fio usa a porta 8765 para se comunicar. Portanto, essa porta precisa estar aberta na política de firewall.

    fio --server
    
  2. Selecione 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
    
    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 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.conf
    
  5. Execute 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.conf
    
  6. Depois 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}