Considerações de desempenho do Sistema de Ficheiros de Rede (NFS) 3.0 no armazenamento de Blobs do Azure

Agora, o armazenamento de blobs suporta o protocolo NFS (Network File System) 3.0. Este artigo contém recomendações que o ajudam a otimizar o desempenho dos seus pedidos de armazenamento. Para saber mais sobre o suporte NFS 3.0 para Armazenamento de Blobs do Azure, veja Suporte do protocolo NFS (Network File System) 3.0 para o armazenamento de Blobs do Azure.

Adicionar clientes para aumentar o débito

O Armazenamento de Blobs do Azure é dimensionado linearmente até atingir o limite máximo de entradas e saídas da conta de armazenamento. Por conseguinte, as suas aplicações podem obter um débito mais elevado com mais clientes. Para ver os limites de entrada e saída da conta de armazenamento, veja Metas de escalabilidade e desempenho para contas de armazenamento padrão.

O gráfico seguinte mostra como a largura de banda aumenta à medida que adiciona mais clientes. Neste gráfico, um cliente é uma Máquina Virtual (VM) e com uma conta de armazenamento v2 para fins gerais padrão.

Desempenho padrão

O gráfico seguinte mostra este mesmo efeito quando aplicado a uma conta de armazenamento de blobs de blocos premium.

Desempenho premium

Utilizar contas de armazenamento de blobs de blocos premium para aplicações de pequena escala

Nem todas as aplicações podem aumentar verticalmente ao adicionar mais clientes. Para essas aplicações, a conta de armazenamento de blobs de blocos premium do Azure oferece baixa latência consistente e taxas de transação elevadas. A conta de armazenamento de blobs de blocos premium pode atingir a largura de banda máxima com menos threads e clientes. Por exemplo, com um único cliente, uma conta de armazenamento de blobs de blocos premium pode alcançar uma largura de banda de 2,3x em comparação com a mesma configuração utilizada com uma conta de armazenamento v2 para fins gerais de desempenho padrão.

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

Desempenho relativo

Melhorar o tamanho da leitura antecipada para aumentar o débito de leitura de ficheiros grandes

O parâmetro kernel read_ahead_kb representa a quantidade de dados adicionais que devem ser lidos depois de cumprir um determinado pedido de leitura. Pode aumentar este parâmetro para 16 MiB para melhorar o débito de leitura de ficheiros grande.

export AZMNT=/your/container/mountpoint

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

Evitar substituições frequentes em dados

Demora mais tempo a concluir uma operação de substituição do que uma nova operação de escrita. Tal deve-se ao facto de uma operação de substituição NFS, especialmente uma edição parcial de ficheiros no local, ser uma combinação de várias operações de blobs subjacentes: uma operação de leitura, modificação e escrita. Por conseguinte, uma aplicação que requer edições frequentes no local não é adequada para contas de armazenamento de blobs ativadas para NFS.

Implementar o Azure HPC Cache para aplicações sensíveis à latência

Algumas aplicações podem exigir baixa latência, além do débito elevado. Pode implementar o Azure HPC Cache para melhorar significativamente a latência. Saiba mais sobre a Latência no Armazenamento de blobs.

Aumentar o número de ligações TCP

Pode utilizar a opção nconnect de montagem para obter um desempenho de leitura e escrita agregado mais elevado a partir de uma única VM, mas apenas se o kernel do Linux tiver suporte para nconnect do Azure.

nconnect é uma opção de montagem do Linux do lado do cliente que lhe permite utilizar várias ligações TCP entre o cliente e o ponto final de serviço blob. Pode utilizar a opção nconnect no comando de montagem para especificar o número de ligações TCP que pretende 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 mais recentes do Linux suportem totalmente o nconnect, deve utilizar esta opção apenas se o seu kernel tiver suporte para nconnect do Azure. Utilizar a opção de montagem sem o nconnect suporte do NConnect do Azure irá diminuir o débito, causar vários tempos limite e fazer com que comandos como READDIR e READIRPLUS funcionem incorretamente.

O suporte para nconnect do Azure está disponível com a maioria dos kernals do Ubuntu recentes que podem ser utilizados com máquinas virtuais do Azure. Para saber se o suporte do 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 do Azure nconnect estiver disponível para o kernel, Yes será impresso na consola do . Caso contrário, 'No será impresso na consola do .

Se o suporte do Azure nconnect estiver disponível, ative-o ao executar o seguinte comando.

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

Outras recomendações de melhores práticas

  • Utilize VMs com largura de banda de rede suficiente.

  • Utilize vários pontos de montagem quando as cargas de trabalho o permitirem.

  • Utilize o maior número possível de threads.

  • Utilize tamanhos de bloco grandes.

  • Faça pedidos de armazenamento a partir de um cliente que esteja localizado na mesma região que a conta de armazenamento. Isto pode melhorar a latência de rede.

Passos seguintes