Partilhar via


Considerações de desempenho do Network File System (NFS) 3.0 no Azure Blob Storage

O Azure Blob Storage suporta agora o protocolo Network File System (NFS) 3.0. Este artigo contém recomendações que ajudam a otimizar o desempenho de suas solicitações de armazenamento. Para saber mais sobre o suporte NFS 3.0 para Blob Storage, consulte Network File System (NFS) 3.0 suporte ao protocolo Azure Blob Storage.

Adicionar clientes para aumentar a taxa de transferência

O armazenamento em blob escala linearmente até atingir o limite máximo de saída e entrada da conta de armazenamento. Portanto, seus aplicativos podem obter uma taxa de transferência mais alta usando mais clientes. Para exibir os limites de entrada e saída da conta de armazenamento, consulte Metas de escalabilidade e desempenho para contas de armazenamento padrão.

O gráfico a seguir mostra como a largura de banda aumenta à medida que você adiciona mais clientes. Neste gráfico, um cliente é uma máquina virtual (VM) com uma conta padrão de armazenamento v2 de uso geral.

Diagrama que mostra um gráfico de barras de desempenho padrão.

O gráfico abaixo mostra o mesmo efeito quando aplicado a uma conta de armazenamento premium de blobs de bloco.

Diagrama que mostra um gráfico de barras de desempenho Premium.

Use contas premium de armazenamento blob em blocos para aplicações de pequena escala

Nem todos os aplicativos podem ser dimensionados adicionando mais clientes. Para essas aplicações, a conta premium de armazenamento de blocos em bloco Azure oferece consistentemente baixa latência e taxas de transação elevadas. A conta de armazenamento de blob de blocos premium pode alcançar a largura de banda máxima com menos threads e clientes. Por exemplo, com um único cliente, uma conta de armazenamento premium blob em bloco pode alcançar 2,3x mais largura de banda em comparação com a mesma configuração utilizada numa conta de armazenamento de uso geral v2 com desempenho padrão.

Cada barra no gráfico a seguir mostra a diferença na largura de banda alcançada entre contas de armazenamento de desempenho premium e padrão. À medida que o número de clientes aumenta, essa diferença diminui.

Diagrama que mostra um gráfico de barras de desempenho relativo.

Melhore o tamanho do buffer de leitura antecipada para aumentar o desempenho de leitura de arquivos grandes.

O parâmetro read_ahead_kb do kernel representa a quantidade de dados extra que devem ser lidos após o cumprimento de uma solicitação de leitura específica. Você pode aumentar esse parâmetro para 16 MiB para melhorar a taxa de transferência de leitura de arquivos grandes.

export AZMNT=/your/container/mountpoint

echo 16384 > /sys/class/bdi/0:$(stat -c "%d" $AZMNT)/read_ahead_kb

Evite substituições frequentes nos dados

Demora mais tempo a concluir uma operação de sobrescrição do que uma nova operação de escrita. Uma operação de sobrescrição NFS, especialmente uma edição parcial de ficheiro no local, é uma combinação de várias operações de blob subjacentes, como operações de leitura, modificação e escrita. Portanto, uma aplicação que exige edições frequentes em local não é adequada para contas de Armazenamento Blob com suporte NFS.

Implantar o Cache HPC do Azure para aplicativos sensíveis à latência

Algumas aplicações podem exigir baixa latência além de alta taxa de rendimento. Você pode implantar o Cache HPC do Azure para melhorar significativamente a latência. Saiba mais sobre latência no Blob Storage.

Aumentar o número de conexões TCP

Podes usar a nconnect opção de montagem para obter maior desempenho agregado de leitura e escrita a partir de uma única VM, mas só se o teu kernel Linux tiver suporte para Azure nconnect.

A opção nconnect é uma opção de montagem do cliente para Linux que pode ser utilizada para várias ligações do Protocolo de Controlo de Transmissão (TCP) entre o cliente e o ponto final do serviço de blob. Você pode usar a nconnect opção no comando mount para especificar o número de conexões TCP que deseja criar (por exemplo: mount -t aznfs -o nconnect=16,sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name> /nfsdatain).

Importante

Embora as distribuições Linux mais recentes suportem nconnecttotalmente, use esta opção apenas se o seu kernel tiver suporte Azure nconnect . Usar a nconnect opção de montagem sem suporte Azure nconnect diminui o rendimento, causa múltiplos timeouts e faz com que comandos como READDIR e READIRPLUS funcionem incorretamente.

O suporte Azure nconnect está disponível com a maioria dos kernels Ubuntu recentes que pode usar com VMs Azure. Para saber se o suporte Azure nconnect está disponível para o seu kernel, execute o seguinte comando:

[ -e /sys/module/sunrpc/parameters/enable_azure_nconnect ] && echo "Yes" || echo "No"

Se o suporte Azure nconnect estiver disponível para o seu kernel, Yes será impresso na consola. Caso contrário, No é impresso no console.

Se o suporte Azure nconnect estiver disponível, execute o seguinte comando para o ativar:

echo Y > /sys/module/sunrpc/parameters/enable_azure_nconnect

Outras boas práticas

  • Use VMs com largura de banda de rede suficiente.
  • Use vários pontos de montagem quando suas cargas de trabalho permitirem.
  • Use o maior número possível de threads.
  • Use blocos grandes.
  • Faça pedidos de armazenamento a um cliente que esteja localizado na mesma região da conta de armazenamento para melhorar a latência da rede.