Teste o desempenho da instância

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.

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