Partilhar via


Melhorar o desempenho para compartilhamentos de arquivos do Azure SMB

Este artigo explica como você pode melhorar o desempenho para compartilhamentos de arquivos premium do Azure SMB, incluindo o uso de SMB Multichannel e cache de metadados (visualização).

Aplica-se a

Tipo de partilhas de ficheiros SMB NFS
Partilhas de ficheiros Standard (GPv2), LRS/ZRS No Não
Partilhas de ficheiros Standard (GPv2), GRS/GZRS No Não
Partilhas de ficheiros Premium (FileStorage), LRS/ZRS Yes No

Otimizar o desempenho

As dicas a seguir podem ajudá-lo a otimizar o desempenho:

  • Certifique-se de que sua conta de armazenamento e seu cliente estejam colocalizados na mesma região do Azure para reduzir a latência da rede.
  • Use aplicativos multi-threaded e distribua a carga por vários arquivos.
  • Os benefícios de desempenho do SMB Multichannel aumentam com o número de arquivos distribuindo carga.
  • O desempenho de compartilhamento premium é limitado pelo tamanho do compartilhamento provisionado (IOPS/saída/entrada) e limites de arquivo único. Para obter detalhes, consulte Noções básicas sobre provisionamento para compartilhamentos de arquivos premium.
  • O desempenho máximo de um único cliente VM ainda está vinculado aos limites da VM. Por exemplo, Standard_D32s_v3 pode suportar uma largura de banda máxima de 16.000 MBps (ou 2GBps), a saída da VM (gravações no armazenamento) é medida, a entrada (leituras do armazenamento) não. O desempenho do compartilhamento de arquivos está sujeito a limites de rede da máquina, CPUs, largura de banda de rede disponível de armazenamento interno, tamanhos de E/S, paralelismo, bem como outros fatores.
  • O teste inicial é geralmente um aquecimento. Rejeitar os resultados e repetir o ensaio.
  • Se o desempenho for limitado por um único cliente e a carga de trabalho ainda estiver abaixo dos limites de compartilhamento provisionado, você poderá obter um desempenho maior distribuindo a carga por vários clientes.

A relação entre IOPS, taxa de transferência e tamanhos de E/S

Taxa de transferência = tamanho de E/S * IOPS

Tamanhos de E/S mais altos geram maior taxa de transferência e terão latências mais altas, resultando em um número menor de IOPS líquidas. Tamanhos de E/S menores gerarão IOPS mais altas, mas resultarão em menor taxa de transferência líquida e latências. Para saber mais, consulte Compreender o desempenho dos Arquivos do Azure.

SMB Multicanal

O SMB Multicanal permite que um cliente SMB 3.x estabeleça várias ligações de rede a uma partilha de ficheiros SMB. O Azure Files dá suporte a SMB Multichannel em compartilhamentos de arquivos premium (compartilhamentos de arquivos no tipo de conta de armazenamento FileStorage) para clientes Windows. No lado do serviço, o SMB Multichannel é desabilitado por padrão nos Arquivos do Azure, mas não há custo adicional para habilitá-lo.

Benefícios

O SMB Multichannel permite que os clientes usem várias conexões de rede que proporcionam maior desempenho enquanto reduzem o custo de propriedade. O aumento do desempenho é alcançado através da agregação de largura de banda em várias NICs e utilizando o suporte RSS (Receive Side Scaling) para NICs para distribuir a carga de E/S em várias CPUs.

  • Maior taxa de transferência: várias conexões permitem que os dados sejam transferidos por vários caminhos em paralelo e, assim, beneficiam significativamente cargas de trabalho que usam tamanhos de arquivo maiores com tamanhos de E/S maiores e exigem alta taxa de transferência de uma única VM ou de um conjunto menor de VMs. Algumas dessas cargas de trabalho incluem mídia e entretenimento para criação ou transcodificação de conteúdo, genômica e análise de risco de serviços financeiros.
  • IOPS mais alta: a capacidade RSS da NIC permite uma distribuição de carga eficaz entre várias CPUs com várias conexões. Isso ajuda a obter maior escala de IOPS e utilização eficaz de CPUs VM. Isso é útil para cargas de trabalho com tamanhos de E/S pequenos, como aplicativos de banco de dados.
  • Tolerância a falhas de rede: várias conexões reduzem o risco de interrupção, uma vez que os clientes não dependem mais de uma conexão individual.
  • Configuração automática: Quando o SMB Multichannel está habilitado em clientes e contas de armazenamento, ele permite a descoberta dinâmica de conexões existentes e pode criar caminhos de conexão adicionais, conforme necessário.
  • Otimização de custos: as cargas de trabalho podem alcançar uma escala maior a partir de uma única VM ou de um pequeno conjunto de VMs, enquanto se conectam a ações premium. Isso poderia reduzir o custo total de propriedade, reduzindo o número de VMs necessárias para executar e gerenciar uma carga de trabalho.

Para saber mais sobre o SMB Multichannel, consulte a documentação do Windows.

Esse recurso oferece maiores benefícios de desempenho para aplicativos multi-threaded, mas normalmente não ajuda aplicativos single-threaded. Consulte a seção Comparação de desempenho para obter mais detalhes.

Limitações

Atualmente, o SMB Multichannel para compartilhamentos de arquivos do Azure tem as seguintes restrições:

  • Suportado apenas em clientes Windows que utilizam o SMB 3.1.1. Certifique-se de que os sistemas operacionais do cliente SMB sejam corrigidos para os níveis recomendados.
  • Atualmente não é suportado ou recomendado para clientes Linux.
  • Número máximo de canais é quatro, para mais detalhes ver aqui.

Configuração

SMB Multichannel só funciona quando o recurso está habilitado no lado do cliente (seu cliente) e no lado do serviço (sua conta de armazenamento do Azure).

Em clientes Windows, o SMB Multichannel está habilitado por padrão. Você pode verificar sua configuração executando o seguinte comando do PowerShell:

Get-SmbClientConfiguration | Select-Object -Property EnableMultichannel

Na sua conta de armazenamento do Azure, você precisará habilitar o SMB Multichannel. Consulte Ativar SMB Multichannel.

Desativar SMB Multichannel

Na maioria dos cenários, particularmente cargas de trabalho multi-threaded, os clientes devem ver um desempenho melhorado com SMB Multichannel. No entanto, para alguns cenários específicos, como cargas de trabalho de thread único ou para fins de teste, convém desabilitar o SMB Multichannel. Consulte Comparação de desempenho para obter mais detalhes.

Verifique se o SMB Multichannel está configurado corretamente

  1. Crie um novo compartilhamento de arquivos premium ou use um compartilhamento premium existente.
  2. Certifique-se de que o seu cliente suporta SMB Multichannel (um ou mais adaptadores de rede tem o receive-side scaling ativado). Consulte a documentação do Windows para obter mais detalhes.
  3. Monte um compartilhamento de arquivos para seu cliente.
  4. Gere carga com seu aplicativo. Uma ferramenta de cópia, como robocopy /MT, ou qualquer ferramenta de desempenho, como Diskspd para ler/gravar arquivos, pode gerar carga.
  5. Abra o PowerShell como administrador e use o seguinte comando: Get-SmbMultichannelConnection |fl
  6. Procure as propriedades MaxChannels e CurrentChannels.

Captura de ecrã dos resultados Get-SMBMultichannelConnection.

Comparação de desempenho

Há duas categorias de padrões de carga de trabalho de leitura/gravação: single-threaded e multi-threaded. A maioria das cargas de trabalho usa vários arquivos, mas pode haver casos de uso específicos em que a carga de trabalho funciona com um único arquivo em um compartilhamento. Esta seção aborda diferentes casos de uso e o impacto no desempenho de cada um deles. Em geral, a maioria das cargas de trabalho são multi-threaded e distribuem a carga de trabalho em vários arquivos, portanto, eles devem observar melhorias significativas de desempenho com o SMB Multichannel.

  • Arquivos multi-threaded/múltiplos: Dependendo do padrão de carga de trabalho, você verá uma melhoria significativa no desempenho de E/S de leitura e gravação em vários canais. Os ganhos de desempenho variam de 2x a 4x em termos de IOPS, taxa de transferência e latência. Para esta categoria, SMB Multichannel deve ser habilitado para o melhor desempenho.
  • Multi-threaded/arquivo único: Para a maioria dos casos de uso nesta categoria, as cargas de trabalho se beneficiarão de ter o SMB Multichannel habilitado, especialmente se a carga de trabalho tiver um tamanho > médio de E/S ~16k. Alguns cenários de exemplo que se beneficiam do SMB Multichannel são backup ou recuperação de um único arquivo grande. Uma exceção em que você pode querer desativar o SMB Multichannel é se sua carga de trabalho for pesada em E/S pequenas. Nesse caso, você pode observar uma ligeira perda de desempenho de ~10%. Dependendo do caso de uso, considere distribuir a carga por vários arquivos ou desative o recurso. Consulte a seção Configuração para obter detalhes.
  • Arquivos single-threaded/multiple ou arquivo único: para a maioria das cargas de trabalho single-threaded, há benefícios mínimos de desempenho devido à falta de paralelismo. Normalmente, há uma ligeira degradação do desempenho de ~10% se o SMB Multichannel estiver ativado. Neste caso, o ideal é desativar o SMB Multichannel, com uma exceção. Se a carga de trabalho de thread único puder distribuir a carga em vários arquivos e usar em média um tamanho de E/S maior (> ~16k), então deve haver pequenos benefícios de desempenho do SMB Multichannel.

Configuração de teste de desempenho

Para os gráficos deste artigo, foi usada a seguinte configuração: Uma única VM padrão D32s v3 com uma única NIC habilitada para RSS com quatro canais. A carga foi gerada usando diskspd.exe, múltiplos threads com profundidade de E/S de 10 e E/S aleatórias com vários tamanhos de E/S.

Tamanho vCPU Memória: GiB Armazenamento (SSD) temporário GiB Discos de dados máximos Taxa de transferência máxima de armazenamento em cache e temp: IOPS/MBps (tamanho do cache em GiB) Taxa de transferência máxima de disco sem cache: IOPS/MBps NICs máximos Largura de banda de rede esperada (Mbps)
Standard_D32s_v3 32 128 256 32 64000/512 (800) 51200/768 8 16000

Captura de tela que mostra a configuração do teste de desempenho.

Multi-threaded/vários arquivos com SMB Multichannel

A carga foi gerada contra 10 arquivos com vários tamanhos de E/S. Os resultados do teste de scale-up mostraram melhorias significativas nos resultados do teste IOPS e da taxa de transferência com o SMB Multichannel habilitado. Os diagramas a seguir descrevem os resultados:

Diagrama de desempenho.

Diagrama de desempenho de taxa de transferência.

  • Em uma única NIC, para leituras, foi observado um aumento de desempenho de 2x-3x e para gravações, ganhos de 3x-4x em termos de IOPS e taxa de transferência.
  • O SMB Multichannel permitiu que IOPS e taxa de transferência atingissem os limites de VM mesmo com uma única NIC e o limite de quatro canais.
  • Como a saída (ou leituras para armazenamento) não é medida, a taxa de transferência de leitura pôde exceder o limite de VM publicado de 16.000 Mbps (2 GiB/s). O teste alcançou >2,7 GiB/s. A entrada (ou gravações no armazenamento) ainda está sujeita aos limites da VM.
  • Distribuir a carga por vários arquivos permitiu melhorias substanciais.

Um comando de exemplo usado neste teste é:

diskspd.exe -W300 -C5 -r -w100 -b4k -t8 -o8 -Sh -d60 -L -c2G -Z1G z:\write0.dat z:\write1.dat z:\write2.dat z:\write3.dat z:\write4.dat z:\write5.dat z:\write6.dat z:\write7.dat z:\write8.dat z:\write9.dat .

Cargas de trabalho multi-threaded/single file com SMB Multichannel

A carga foi gerada contra um único arquivo de 128 GiB. Com o SMB Multichannel habilitado, o teste de scale-up com arquivos multi-threaded/single mostrou melhorias na maioria dos casos. Os diagramas a seguir descrevem os resultados:

Diagrama de desempenho de IOPS.

Diagrama de desempenho de taxa de transferência de arquivo único.

  • Em uma única NIC com tamanho médio de E/S maior (> ~16k), houve melhorias significativas em leituras e gravações.
  • Para tamanhos de E/S menores, houve um pequeno impacto de ~10% no desempenho com SMB Multichannel habilitado. Isso pode ser atenuado distribuindo a carga por vários arquivos ou desativando o recurso.
  • O desempenho ainda está limitado por limites de arquivo único.

Cache de metadados para compartilhamentos de arquivos SMB premium

O cache de metadados é um aprimoramento para compartilhamentos de arquivos premium do SMB Azure com o objetivo de reduzir a latência de metadados, aumentar as IOPS disponíveis e aumentar a taxa de transferência da rede. Esse recurso de visualização melhora as seguintes APIs de metadados e pode ser usado em clientes Windows e Linux:

  • Criar
  • Abertura
  • Fechar
  • Delete

Para embarcar, inscreva-se na pré-visualização pública e forneceremos detalhes adicionais. Atualmente, esse recurso de visualização só está disponível para compartilhamentos de arquivos SMB premium (compartilhamentos de arquivos no tipo de conta de armazenamento FileStorage). Não há custos adicionais associados ao uso desse recurso.

Disponibilidade regional

Atualmente, a visualização de cache de metadados só está disponível nas seguintes regiões do Azure.

  • Leste da Austrália
  • Brasil Sudeste
  • Sul de França
  • Alemanha Centro-Oeste
  • Norte da Suíça
  • E.A.U. Central
  • Norte dos E.A.U.
  • E.U.A. Centro-Oeste

Melhorias de desempenho com cache de metadados

A maioria das cargas de trabalho ou padrões de uso que contêm metadados pode se beneficiar do cache de metadados. Para determinar se sua carga de trabalho contém metadados, você pode usar o Azure Monitor para dividir as transações por dimensão de API.

As cargas de trabalho e os padrões de uso típicos com muitos metadados incluem:

  • Serviços Web/aplicações
  • Tarefas de DevOps
  • Trabalhos de indexação/lote
  • Áreas de trabalho virtuais com diretórios base ou outras cargas de trabalho que interagem principalmente com muitos arquivos pequenos, diretórios ou identificadores

Os diagramas a seguir descrevem resultados potenciais.

Reduzir a latência dos metadados

Ao armazenar em cache caminhos de arquivos e diretórios para pesquisas futuras, o cache de metadados pode reduzir a latência em arquivos e diretórios acessados com frequência em 30% ou mais para cargas de trabalho com muitos metadados em escala.

Gráfico mostrando a latência em milissegundos com e sem cache de metadados.

Aumentar as IOPS disponíveis

O cache de metadados pode aumentar o IOPS disponível em mais de 60% para cargas de trabalho pesadas de metadados em escala.

Gráfico mostrando IOPS disponíveis com e sem cache de metadados.

Aumente a taxa de transferência da rede

O cache de metadados pode aumentar a taxa de transferência da rede em mais de 60% para cargas de trabalho pesadas de metadados em escala.

Gráfico mostrando a taxa de transferência da rede com e sem cache de metadados.

Próximos passos