Nesta página, descrevemos como otimizar a performance dos volumes do Google Cloud NetApp Volumes ajustando as configurações de volume e do lado do cliente. Esses ajustes melhoram a capacidade de processamento, reduzem a latência e melhoram a eficiência geral da transferência de dados para seus aplicativos.
Antes de começar
Antes de fazer mudanças nos volumes para otimizar a performance, revise as considerações de performance.
Ajustar as configurações de volume
É possível otimizar a performance ajustando as seguintes configurações de volume:
Aumentar a capacidade do volume: você pode aumentar a capacidade do volume do nível de serviço Premium, Extreme ou Standard para melhorar a capacidade máxima de processamento do volume Para volumes do nível de serviço Flex File, aumente a capacidade do pool de armazenamento. Para o desempenho personalizado do Flex Unified ou Flex File, aumente a capacidade de processamento e as IOPS do pool de armazenamento.
Fazer upgrade do nível de serviço: é possível mover um volume do nível de serviço Premium para um pool de armazenamento com um nível de serviço Extreme para melhorar a capacidade de processamento.
Usar pools de QoS manuais para atribuir maior capacidade de processamento: é possível diminuir a capacidade de processamento atribuída de volumes maiores com requisitos de capacidade de processamento baixos e aumentar a capacidade de processamento de volumes menores que precisam de maior performance até a capacidade de processamento do pool disponível.
O aumento da capacidade do volume e o upgrade dos níveis de serviço não são destrutivos para cargas de trabalho de E/S em processo no volume e não afetam o acesso ao volume de forma alguma.
Ajustar o cliente
É possível melhorar a performance ajustando as seguintes configurações no cliente:
Colocar clientes juntos: os resultados de latência são afetados diretamente pelas capacidades e localização do cliente. Para melhores resultados, coloque o cliente na mesma região do volume ou o mais próximo possível. Teste o impacto zonal testando a latência de um cliente em cada zona e use a zona com a menor latência.
Configurar a largura de banda da rede do Compute Engine: os recursos de rede das máquinas virtuais do Compute Engine dependem do tipo de instância usado. Normalmente, instâncias maiores podem gerar mais capacidade de processamento de rede. Recomendamos que você selecione uma máquina virtual do cliente com uma capacidade de largura de banda de rede adequada, selecione a interface de rede da NIC virtual do Google (gVNIC) e ative a performance
Tier_1. Para mais informações, consulte a documentação do Compute Engine sobre largura de banda da rede.Abrir várias sessões TCP: se o aplicativo exigir alta capacidade de processamento, você poderá saturar a sessão única do protocolo de controle de transmissão (TCP) que está na base de uma sessão normal de NFS e SMB. Nesses casos, aumente o número de sessões TCP usadas pela conexão NFS e SMB.
Use uma das guias a seguir para ajustar o cliente com base no tipo de cliente:
Linux
Tradicionalmente, um cliente NFS usa uma única sessão TCP para todos os sistemas de arquivos montados em NFS que compartilham um endpoint de armazenamento. O uso da
nconnectopção de montagem permite aumentar o número de sessões TCP compatíveis até um máximo de 16.Recomendamos as práticas recomendadas a seguir para ajustar o tipo de cliente Linux para aproveitar ao máximo o
nconnect:Aumentar o número de sessões TCP com
nconnect: cada sessão TCP adicional adiciona uma fila para 128 solicitações pendentes, melhorando a simultaneidade potencial.Definir o parâmetro
sunrpc.max_tcp_slot_table_entries:sunrpc.max_tcp_slot_table_entriesé um ajuste no nível da conexão parâmetro que pode ser modificado para controlar a performance. Recomendamos definirsunrpc.max_tpc_slot_table_enteriescomo 128 solicitações ou por conexão e não exceder 10.000 slots para todos os clientes NFS em um único projeto que se conecta aos NetApp Volumes. Para definir o parâmetrosunrpc.max_tcp_slot_table_entries, adicione o parâmetro ao arquivo/etc/sysctl.confe recarregue o arquivo de parâmetros usando o comandosysctl -p.Ajustar o valor máximo compatível por sessão para 180: ao contrário do NFSv3, os clientes NFSv4.1 definem a relação entre o cliente e o servidor em sessões. Embora o NetApp Volumes ofereça suporte a até 128 solicitações pendentes por conexão usando o NFSv3, o NFSv4.1 é limitado a 180 solicitações pendentes por sessão. Os clientes Linux NFSv4.1 são padrão para
64 max_session_slotspor sessão, mas é possível ajustar esse valor conforme necessário. Recomendamos mudar o valor compatível máximo por sessão para 180.Para ajustar
max_session_slots, crie um arquivo de configuração em/etc/modprobe.d. Verifique se não há aspas (" ") inline. Caso contrário, a opção não terá efeito.$ echo "options nfs max_session_slots=180" > /etc/modprobe/d/nfsclient/conf $ reboot Use the systool -v -m nfs command to see the current maximum in use by the client. For the command to work, at least one NFSv4.1 mount must be in place. $ systool -v -v nfs { Module = "nfs" … Parameters: … Max_session_slots = "63" <- … }
O gráfico de comparação do NFS
nconnecta seguir demonstra o impacto que o uso da configuração do nconnect pode ter em uma carga de trabalho do NFS. Essas informações foram capturadas usando o Fio com as seguintes configurações:Carga de trabalho de leitura de 100%
Tamanho do bloco de 8 KiB em um único volume
Máquina virtual
n2-standard-32usando o sistema operacional Red Hat 9Conjunto de trabalho de 6 TiB
O uso de um valor
nconnectde 16 resultou em cinco vezes mais performance do que quando não estava ativado.
Windows
Para clientes baseados no Windows, o cliente pode usar o SMB Multichannel com o Receive Side Scaling (RSS) para abrir várias conexões TCP. Para alcançar essa configuração, a máquina virtual precisa ter um adaptador de rede alocado que ofereça suporte ao RSS. Recomendamos definir o RSS para quatro ou oito valores. No entanto, qualquer valor acima de um deve aumentar a capacidade de processamento.
O gráfico a seguir mostra a diferença que o uso da configuração do RSS pode ter em uma carga de trabalho do SMB. Essas informações foram capturadas usando o Fio com as seguintes configurações:
Carga de trabalho de leitura de 100%
Tamanho do bloco de 8 KiB em um único volume
Máquina virtual
n2-standard-32única executando um sistema operacional Windows 2022Conjunto de trabalho de 6 TiB
Oito jobs foram executados com apenas a opção RSS do cliente SMB mudando entre as execuções de teste. O uso de valores de RSS de 4, 8 e 16 aumentou a performance em duas vezes em comparação com o uso de um valor de 1. Cada instância de RSS foi executada nove vezes com um parâmetro
numjobsde 8. O parâmetroiodepthfoi aumentado em cinco cada execução até que a capacidade de processamento máxima fosse atingida.
Cargas de trabalho de computação de alto desempenho e alta simultaneidade
Para cargas de trabalho NFS de alta simultaneidade e grande escala, como as encontradas em ambientes de computação de alto desempenho (HPC) ou EDA, considere aplicar as seguintes otimizações do lado do cliente para melhorar o desempenho e a estabilidade e evitar problemas como tempestades de metadados ou travamentos de clientes:
Opções de montagem do NFS: ao montar o compartilhamento NFS do NetApp Volumes, inclua as seguintes opções no comando
/etc/fstabou de montagem:actimeo=600: aumenta o tempo em que os atributos são armazenados em cache no cliente, reduzindo as chamadasGETATTR.nconnect=8: usa várias conexões TCP por montagem, melhorando a largura de banda.
Exemplo de comando de montagem:
sudo mount -t nfs -o rw,hard,intr,rsize=1048576,wsize=1048576,vers=3,tcp,actimeo=600,nconnect=8 SERVER:/SHARE /mnt/netappConfigurações
keepaliveTCP: ajuste okeepalivetempo do TCP do sistema para detectar conexões sem resposta mais rapidamente. Isso pode ser definido usandosysctl:sudo sysctl -w net.ipv4.tcp_keepalive_time=60Para tornar essa mudança persistente nas reinicializações, adicione
net.ipv4.tcp_keepalive_time = 60a/etc/sysctl.confe recarregue comsudo sysctl -p.
QoS manual
A qualidade de serviço (QoS) manual nos volumes do NetApp Volumes permite ajustar a performance do volume para atender aos requisitos da carga de trabalho e controlar os custos de armazenamento.
O QoS manual oferece os seguintes benefícios:
Otimização de custos: dimensione a performance do volume dentro da capacidade do pool de armazenamento para otimizar os custos da nuvem.
Ajuste instantâneo da capacidade de processamento: ajuste a capacidade de processamento do volume sem inatividade.
Redução de custos de recuperação de desastres: diminua o QoS para volumes replicados para reduzir os custos de recuperação de desastres para pools de destino.
Performance aprimorada para clones ou caches: aumente a performance de volumes de clone ou cache com tamanhos alocados pequenos.
Gerenciamento flexível de cargas de trabalho: use pools de armazenamento maiores como contêineres para várias cargas de trabalho, ajustando a capacidade de processamento de cada volume conforme necessário.
Considerações
É possível gerenciar o QoS manual usando a Google Cloud CLI, a API NetApp Volumes ou o Terraform. O Google Cloud console não é compatível.
O QoS manual é compatível com os níveis de serviço Flex Unified, Standard, Premium e Extreme e não está disponível para o nível de serviço Flex File.
Configurar limites de QoS manual
Para volumes em um pool de armazenamento de QoS manual, é possível definir a capacidade de processamento e a capacidade de forma independente. A capacidade de processamento geral de todos os volumes em um pool de QoS manual é limitada pela capacidade de processamento total do pool. A capacidade de processamento do pool é determinada pela capacidade alocada e pelo nível de serviço. Por exemplo, um pool Premium de 40 TiB pode atingir uma capacidade de processamento máxima de 2.560 MiBps a 64 MiBps por TiB, enquanto um pool Extreme de 200 TiB pode oferecer suporte a volumes com uma capacidade de processamento combinada de 25.600 MiBps.
Depois que o pool de QoS manual for configurado, será possível definir o limite de capacidade de processamento necessário para cada volume nele. O limite máximo de capacidade de processamento para um único volume é de 4, 5 GiBps ou 30 GiBps para volumes de grande capacidade.
Os comandos ou APIs de pool e volume mostram os valores de capacidade de processamento disponíveis e atribuídos para o pool, ajudando você a gerenciar a capacidade de processamento total. Para criar um pool de QoS manual e definir a capacidade de processamento do volume, consulte Criar um pool de armazenamento e Criar um volume.
Criar um pool de armazenamento
gcloud
Crie um pool de armazenamento usando o QoS manual:
gcloud netapp storage-pools create POOL_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --capacity=CAPACITY \ --service-level=SERVICE_LEVEL \ --qos-type=QOS_TYPE \ --network=name=NETWORK_NAME
Substitua as seguintes informações:
POOL_NAME: o nome do pool que você quer criar. O nome do pool precisa ser exclusivo por local.PROJECT_ID: o nome do projeto em que você quer criar o pool de armazenamento.LOCATION: o local do pool que você quer criar.CAPACITY: a capacidade do pool em GiB.SERVICE_LEVEL: o nível de serviço do pool de armazenamento: Standard, Premium ou Extreme.QOS_TYPE: o tipo de QoS do pool de armazenamento: automático ou manual.NETWORK_NAME: o nome da VPC.
Editar um pool de armazenamento
gcloud
Edite um pool de armazenamento de QoS automático atual para usar o QoS manual:
gcloud netapp storage-pools update POOL_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --qos-type=QOS_TYPE
Substitua as seguintes informações:
POOL_NAME: o nome do pool que você quer atualizar.PROJECT_ID: o nome do projeto.LOCATION: o local do pool.QOS_TYPE: o tipo de QoS atualizado para o pool de armazenamento. Somente a configuração manual é compatível.
Criar um volume
gcloud
Crie um volume com o limite de capacidade de processamento de QoS manual especificado usando o seguinte comando:
gcloud netapp volumes create VOLUME_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --storage-pool=STORAGE_POOL \ --capacity=CAPACITY \ --protocols=PROTOCOLS \ --share-name=SHARE_NAME \ --throughput-mibps=THROUGHPUT_MIBPS
Substitua as seguintes informações:
VOLUME_NAME: o nome do volume. Esse nome precisa ser exclusivo por local.PROJECT_ID: o nome do projeto em que o volume será criado.LOCATION: o local do volume.STORAGE_POOL: o pool de armazenamento em que o volume será criado.CAPACITY: a capacidade do volume. Ele define a capacidade que os clientes NAS veem.PROTOCOLS: escolha os protocolos NAS com que o volume é exportado. As opções válidas são NFSv3, NFSv4, SMB e as seguintes combinações:nfsv3,nfsv4nfsv3,smbnfsv4,smb
Dependendo do tipo de protocolo escolhido, recomendamos que você adicione os parâmetros específicos do protocolo, como
export-policyousmb-settings.SHARE_NAME: o caminho de exportação NFS ou o nome de compartilhamento SMB do volume.THROUGHPUT_MIBPS: o limite de capacidade de processamento do volume em MiBps.
Para mais informações sobre outras flags opcionais, consulte a documentação do SDK Google Cloud sobre a criação de volumes.
A seguir
Leia sobre a migração de volume.