Compartilhar via


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

O Armazenamento de blobs agora dá suporte ao protocolo NFS (network file system) 3.0. Este artigo contém recomendações que ajudam você a otimizar o desempenho de suas solicitações de armazenamento. Para saber mais sobre o suporte do NFS 3.0 para o Armazenamento de Blobs do Azure, consulte o suporte ao protocolo NFS (Sistema de Arquivos de Rede) 3.0 para o Armazenamento de Blobs do Azure.

Adicionar clientes para aumentar a taxa de transferência

O Armazenamento de Blobs do Azure é dimensionado de forma linear até atingir o limite máximo de entrada e saída da conta de armazenamento. Portanto, seus aplicativos podem obter maior taxa de transferência usando mais clientes. Para exibir os limites de saída e entrada 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 VM (Máquina Virtual) e com uma conta de armazenamento v2 de uso geral padrão.

Desempenho padrão

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

Desempenho Premium

Usar contas de armazenamento de blobs de blocos premium para aplicativos de pequena escala

Nem todos os aplicativos podem escalar verticalmente adicionando mais clientes. Para esses aplicativos, a conta de armazenamento de blobs de blocos premium do Azure oferece baixa latência consistente e altas taxas de transação. 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 blob de bloco premium pode obter uma largura de banda 2,3 vezes maior em comparação com a mesma configuração usada com uma conta de armazenamento de uso geral com desempenho padrão v2.

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

Desempenho relativo

Melhorar o tamanho de leitura antecipada para aumentar a taxa de transferência de leitura de arquivos grandes

O parâmetro de kernel read_ahead_kb representa a quantidade de dados adicionais que devem ser lidos após o cumprimento de uma determinada solicitação de leitura. Você pode aumentar esse parâmetro para 16 MiB para melhorar a taxa de transferência de leitura de arquivo grande.

export AZMNT=/your/container/mountpoint

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

Evitar substituições frequentes nos dados

Demora mais tempo para concluir uma operação de substituição do que uma nova operação de gravação. Isso ocorre porque uma operação de substituição de NFS, especialmente uma edição parcial de arquivo in-loco, é uma combinação de várias operações de blob subjacentes: uma operação de leitura, uma modificação e uma de gravação. Portanto, um aplicativo que requer edições frequentes no local não é adequado para contas de armazenamento de blobs habilitadas para NFS.

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

Alguns aplicativos podem exigir baixa latência, além de alta taxa de transferência. Você pode implantar o HPC Cache do Azure para melhorar significativamente a latência. Saiba mais sobre a Latência no Armazenamento de Blobs.

Aumentar o número de conexões TCP

Você pode usar a opção nconnect de montagem para obter um maior desempenho agregado de leitura e escrita de uma única VM, mas somente se o kernel do sistema Linux tiver suporte para nconnect do Azure.

nconnect é uma opção de montagem do Linux do lado do cliente que permite que você use várias conexões TCP entre o cliente e o ponto de extremidade do serviço Blob. Você pode usar a opção nconnect no comando de montagem 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 mais recentes do Linux ofereçam suporte total à nconnect, você deverá usar essa opção somente se o kernel tiver suporte para nconnect do Azure. Usar a opção nconnect de montagem sem o suporte de nconnect do Azure diminuirá a taxa de transferência, causará vários tempos limite e fará com que comandos como READDIR e READIRPLUS funcionem incorretamente.

O suporte à nconnect do Azure está disponível com a maioria dos kernels recentes do Ubuntu que podem ser usados com máquinas virtuais do Azure. Para descobrir se o suporte ao nconnect do Azure está disponível para o kernel, execute o comando a seguir.

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

Se o suporte ao nconnect do Azure estiver disponível no kernel, Yes será impresso no console. Caso o contrário, 'No é impresso no console.

Se o suporte ao nconnect do Azure estiver disponível, habilite-o executando o comando a seguir.

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

Outras recomendações de práticas recomendadas

  • Use VMs com largura de banda de rede suficiente.

  • Use vários pontos de montagem quando suas cargas de trabalho permitirem.

  • Use o máximo de threads possível.

  • Use blocos de grande tamanho.

  • Faça solicitações de armazenamento de um cliente localizado na mesma região que a conta de armazenamento. Isso pode melhorar a latência de rede.

Próximas etapas