Otimizar e testar o desempenho da instância

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Esta página descreve o desempenho médio esperado e as configurações de desempenho recomendadas para o Filestore. Ela também mostra como testar o desempenho das instâncias do Filestore.

Desempenho esperado

Cada nível de serviço do Filestore fornece um nível diferente de desempenho. O desempenho de qualquer instância pode ser diferente dos números esperados devido a vários fatores, como o uso de armazenamento em cache, o número de VMs do cliente, o tipo de máquina das VMs do cliente e a carga de trabalho testada.

Nas tabelas a seguir, você vê o desempenho esperado das instâncias do Filestore com base no nível de serviço e na capacidade configurada:

Desempenho Capacidade (TiB) IOPS de leitura/gravação Capacidade de leitura/gravação (MiB/s)
BASIC_HDD 1–10 600/1.000 100/100
BASIC_HDD 10–63,9 1.000/5.000 180/120
BASIC_SSD 2,5–63,9 60.000/25.000 1.200/350
HIGH_SCALE_SSD 10 92.000/26.000 2.600/880
HIGH_SCALE_SSD 100 920.000/260.000 26.000/8.800
ENTERPRISE 1 12.000/4.000 120/100
ENTERPRISE 10 120.000/40.000 1.200/1.000

A tabela acima mostra o desempenho esperado na capacidade máxima e mínima para alta escala e empresa. Entre esses limites, o desempenho é escalonado de maneira limitada à medida que a capacidade escalona. Por exemplo, se você dobrar a capacidade da sua instância do Enterprise de 1 TiB para 2 TiB, o desempenho esperado da instância dobra de 12.000/4.000 IOPS de leitura/gravação para 24.000/8.000 IOPS de leitura/gravação.

Em cenários de cliente único e de poucos clientes, é preciso aumentar o número de conexões TCP com a opção de ativação nconnect para atingir o desempenho máximo do NFS. Recomendamos especificar até 7 conexões para o nível Alta escala e até 2 conexões para o nível Enterprise. Em geral, quanto maior a capacidade de compartilhamento de arquivos e menos VMs de cliente conectadas, mais desempenho você terá ao especificar outras conexões com nconnect.

Tipo de máquina de cliente recomendado

Recomendamos ter um tipo de máquina do Compute Engine, como n2-standard-8, que forneça uma largura de banda de saída de 16 Gbps. Com essa largura de banda de saída, o cliente pode alcançar aproximadamente 16 larguras de banda de leitura Gbps para cargas de trabalho que podem ser armazenadas em cache. Para mais informações, consulte Largura de banda de rede.

Opções de ativação do cliente Linux

Recomendamos usar as seguintes opções de montagem de NFS, especialmente hard, montar async e ter as opções rsize e wsize definidas como 1 MiB para alcançar o melhor desempenho nas instâncias de VM do cliente Linux. Para mais informações sobre as opções de ativação do NFS, consulte nfs.

Opção padrão Descrição
hard O cliente NFS repete solicitações NFS indefinidamente.
timeo=600 O cliente NFS aguarda 600 segundos (60 segundos) antes de tentar novamente uma solicitação NFS.
retrans=3 O cliente NFS tenta fazer solicitações NFS três vezes antes de realizar outras ações de recuperação.
rsize=1048576 O cliente NFS pode receber, no máximo, 1.048.576 bytes (1 MiB) do servidor NFS por solicitação READ.
wsize=1048576 O cliente NFS pode receber, no máximo, 1.048.576 bytes (1 MiB) do servidor NFS por solicitação WRITE.
resvport O cliente NFS usa uma porta de origem com privilégios ao se comunicar com o servidor NFS para esse ponto de montagem.
async O cliente NFS atrasa o envio de gravações de aplicativos para o servidor NFS até que determinadas condições sejam atendidas.
Cuidado: o uso da opção sync reduz significativamente o desempenho.

Desempenho de uma ou mais VMs do cliente

Os níveis de serviço escalonáveis do Filestore são otimizados para desempenho de várias VMs de cliente, não de uma VM de cliente única.

Para instâncias de nível Enterprise e de grande escala, pelo menos quatro VMs do cliente são necessárias para aproveitar o desempenho total. Isso garante que todas as VMs no cluster subjacente do Filestore sejam totalmente utilizadas.

Para ter mais contexto, o menor cluster escalonável do Filestore tem quatro VMs. Cada VM de cliente se comunica com apenas uma VM de cluster do Filestore, independentemente do número de conexões NFS por cliente especificado usando a opção de montagem nconnect. Se você estiver usando uma única VM de cliente, as operações de leitura e gravação serão realizadas apenas de uma única VM de cluster do Filestore.

Melhore o desempenho nos recursos do Google Cloud

As operações em vários recursos do Google Cloud, como copiar dados do Cloud Storage para uma instância do Filestore usando gsutil, podem ser lentas. Para ajudar a minimizar problemas de desempenho, tente o seguinte:

  • Verifique se o bucket do Cloud Storage, a VM do cliente e a instância do Filestore estão na mesma região.

    As regiões birregionais oferecem uma opção de desempenho máximo para dados armazenados no Cloud Storage. Se você usar essa opção, verifique se os outros recursos residem em uma das regiões únicas que compõem a região birregional. Por exemplo, se os dados do Cloud Storage estiverem em us-central1,us-west1, verifique se a VM do cliente e a instância do Filestore residem em us-central1.

  • Para ter um ponto de referência, verifique o desempenho de uma VM anexada ao DP e compare com o desempenho de uma instância do Filestore.

    • Se a VM anexada ao DP tiver um desempenho semelhante ou mais lento do que a instância do Filestore, isso poderá indicar um gargalo de desempenho não relacionado ao Filestore. Tente o seguinte para melhorar o desempenho de referência dos recursos que não são do Filestore:

      • Aplique a opção gsutil -m. Essa opção permite que as operações compatíveis, incluindo cp, mv e rsync, sejam executadas em paralelo.

      • Aplique as configurações gsutil a seguir. Cada um deles é um valor de configuração boto mutável definido no arquivo de configuração boto. Os usuários podem modificar o arquivo diretamente (recomendado) ou usando a opção -o:

    • Se o desempenho da instância do Filestore for substancialmente mais lento do que a VM anexada ao DP, tente distribuir a operação por várias VMs.

      • Isso ajuda a melhorar o desempenho das operações de leitura do Cloud Storage.

      • Para instâncias de nível Enterprise e Alta escala, pelo menos quatro VMs do cliente são necessárias para aproveitar o desempenho total. Isso garante que todas as VMs no cluster subjacente do Filestore sejam totalmente utilizadas. Para mais informações, consulte Desempenho de VMs de um ou vários clientes.

Como testar o desempenho

Se você estiver usando o Linux, utilize a ferramenta fio para comparar as capacidades de leitura e gravação e a IOPS para instâncias do nível básico. Os exemplos nesta seção mostram comparativos comuns que é possível executar. Para garantir o melhor desempenho, pode ser necessário executar a ferramenta fio de várias instâncias de VM do cliente. Esse método de comparativo de mercado de desempenho não apresenta resultados precisos para instâncias dos níveis Enterprise e de Alta escala.

O exemplo a seguir compara a 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  \
--name=write --blocksize=1m --iodepth=64 --readwrite=write

O exemplo a seguir compara a IOPS 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  \
--name=randwrite --blocksize=4k --iodepth=256 --readwrite=randwrite

O exemplo a seguir compara as capacidades máximas 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  \
--name=read --blocksize=1m --iodepth=64 --readwrite=read

O exemplo a seguir compara a IOPS 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  \
--name=randread --blocksize=4k --iodepth=256 --readwrite=randread

A seguir