Aprimorar o desempenho de compartilhamentos de arquivos SMB do Azure
Este artigo explica como você pode melhorar o desempenho dos compartilhamentos de arquivos Premium do SMB do Azure, incluindo o uso de cache de metadados e SMB Multichannel (versão prévia).
Aplica-se a
Tipo de compartilhamento de arquivos | SMB | NFS |
---|---|---|
Compartilhamentos de arquivos padrão (GPv2), LRS/ZRS | ![]() |
![]() |
Compartilhamentos de arquivos padrão (GPv2), GRS/GZRS | ![]() |
![]() |
Compartilhamento de arquivos premium (FileStorage), LRS/ZRS | ![]() |
![]() |
Otimizando o desempenho
As dicas a seguir podem ajudá-lo a otimizar o desempenho:
- Verifique se a sua conta de armazenamento e cliente estão localizados na mesma região do Azure para reduzir a latência de rede.
- Use aplicativos com vários threads e distribua a carga em vários arquivos.
- Os benefícios de desempenho do SMB Multichannel aumentam em paralelo com o número de arquivos de distribuição de carga.
- O desempenho de compartilhamento premium é limitado pelo tamanho do compartilhamento provisionado (IOPS/saída/entrada) e por limites de arquivo único. Para obter detalhes, confira Noções básicas sobre o provisionamento de compartilhamentos de arquivos premium.
- O desempenho máximo de um cliente com apenas uma VM ainda é atrelado aos limites da VM. Por exemplo, Standard_D32s_v3 pode dar suporte a uma largura de banda máxima de 16.000 MBps (ou 2 GBps), a saída da VM (gravações no armazenamento) é limitada e a entrada (leituras do armazenamento) não. O desempenho do compartilhamento de arquivo está sujeito a limites de rede do computador, CPUs, largura de banda de rede disponível para armazenamento interno, tamanhos de E/S, paralelismo, além de outros fatores.
- O teste inicial geralmente é um aquecimento. Descarte os resultados e repita o teste.
- Se o desempenho for limitado por um cliente individual e a carga de trabalho ainda estiver abaixo dos limites de compartilhamento provisionados, será possível obter um desempenho melhor com a distribuição da carga entre 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 maiores geram uma taxa de transferência mais alta e terão latências maiores, resultando em um número menor de IOPS de rede. Tamanhos de E/S menores gerarão uma IOPS maior, mas resultarão em latências e taxa de transferência líquida menores. Para saber mais, confira Entender o desempenho dos Arquivos do Azure.
SMB Multichannel
O SMB Multichannel habilita que um cliente SMB 3.x estabeleça múltiplas conexões de rede para um compartilhamento de arquivo SMB. Os Arquivos do Azure oferecem suporte a SMB multicanal 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 está desabilitado por padrão em Arquivos do Azure, mas não há nenhum custo adicional para habilitá-lo.
A partir de julho de 2024, o SMB Multichannel será habilitado por padrão para todas as contas de armazenamento do Azure recém-criadas nas seguintes regiões:
- Austrália Central
- Sudeste do Brasil
- Leste do Canadá
- Sul da França
- Leste da Ásia
- Sudeste Asiático
- Índia Central (Jio)
- Índia Ocidental (Jio)
- Índia Ocidental
- Leste do Japão
- Oeste do Japão
- Sul da Coreia
- Norte da Europa
- Europa Ocidental
- Oeste da Noruega
- Sul do Reino Unido
Benefícios
O SMB Multichannel permite que os clientes usem várias conexões de rede que fornecem maior desempenho e, ao mesmo tempo, reduzem o custo de propriedade. O aumento do desempenho é obtido por meio da agregação de largura de banda em vários NICs e utilizando o suporte ao Receive Side Scaling (RSS) 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 sobre vários caminhos em paralelo e, portanto, beneficiem de modo significativo as cargas de trabalho que usam tamanhos de arquivo maiores com E/S maiores e que exigem alta taxa de transferência em uma VM ou em um conjunto menor de VMs. Algumas dessas cargas de trabalho incluem mídia e entretenimento para criação de conteúdo ou transcodificação, genômica e análise de risco de serviços financeiros.
- IOPS mais alta: a funcionalidade RSS do adaptador de rede permite uma distribuição de carga efetiva entre várias CPUs com várias conexões. Isso ajuda na obtenção de uma escala de IOPS mais alta e na utilização eficaz de CPUs da VM. Isso é útil para cargas de trabalho que têm tamanhos de E/S pequenos, como aplicativos de banco de dados.
- Tolerância a falhas da rede: várias conexões reduzem o risco de interrupção, pois os clientes não dependem mais de uma conexão individual.
- Configuração automática: quando o SMB Multichannel estiver habilitado em clientes e contas de armazenamento, ele permitirá 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 com apenas uma VM ou com um pequeno conjunto de VMs, enquanto se conectam a compartilhamentos premium. Isso pode 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, confira a documentação do Windows.
Esse recurso fornece benefícios de desempenho maiores para aplicativos com vários threads, mas normalmente não ajuda aplicativos de thread único. Confira a seção Comparação de desempenho para obter mais detalhes.
Limitações
O SMB Multichannel para compartilhamentos de arquivos do Azure atualmente tem as seguintes restrições:
- Disponível somente para o compartilhamento de arquivos premium do Azure. Não disponível para o compartilhamento de arquivos padrão do Azure.
- Compatível apenas com clientes Windows que usam SMB 3.1.1. Verifique se os sistemas operacionais cliente SMB são corrigidos para os níveis recomendados.
- No momento, não há suporte ou recomendação para clientes Linux.
- O número máximo de canais é quatro; para obter mais detalhes, consulte aqui.
Configuração
O SMB Multichannel funciona apenas quando o recurso está habilitado no lado do cliente (o seu cliente) e no lado do serviço (a sua conta de armazenamento do Azure).
Em clientes do Windows, o SMB Multichannel é habilitado por padrão. É possível verificar a sua configuração executando o seguinte comando do PowerShell:
Get-SmbClientConfiguration | Select-Object -Property EnableMultichannel
Se o SMB Multichannel não estiver habilitado na sua conta de armazenamento do Azure, consulte Status do SMB Multichannel.
Desabilitar o SMB Multichannel
Na maioria dos cenários, especialmente cargas de trabalho com vários threads, os clientes observam um desempenho aprimorado com o SMB Multichannel. No entanto, em alguns cenários específicos, como em cargas de trabalho de thread único ou para fins de teste, talvez seja vantajoso desabilitar o SMB Multicanal. Consulte Comparação de desempenho e Status do SMB Multichannel para obter mais detalhes.
Verificar se o SMB Multichannel está configurado corretamente
- Crie um novo compartilhamento de arquivo premium ou use um compartilhamento premium existente.
- Verifique se o cliente dá suporte ao SMB Multichannel (um ou mais adaptadores de rede estão com a escala do lado do receptor habilitada). Confira a documentação do Windows para obter mais detalhes.
- Monte um compartilhamento de arquivo para o seu cliente.
- Gere a carga com o seu aplicativo. Uma ferramenta de cópia, como robocopy /MT, ou qualquer ferramenta de desempenho, como Diskspd para arquivos de leitura/gravação, pode gerar carga.
- Abra o PowerShell como um administrador e use o seguinte comando:
Get-SmbMultichannelConnection |fl
- Procurar as propriedades MaxChannels e CurrentChannels.
Comparação de desempenho
Há duas categorias de padrões de carga de trabalho de leitura/gravação: thread único e vários threads. 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 apenas um arquivo em um compartilhamento. Esta seção aborda diferentes casos de uso e qual impacto no desempenho cada um deles tem. Em geral, a maioria das cargas de trabalho tem vários threads e distribui a carga de trabalho em vários arquivos. Portanto, eles devem observar um aumento significativo no desempenho com o SMB Multichannel.
- Vários threads/vários arquivos: dependendo do padrão de carga de trabalho, você deverá ver um aumento significativo no desempenho de E/S (leitura e gravação) em vários canais. Os ganhos de desempenho variam entre um aumento de 2x a 4x em termos de IOPS, taxa de transferência e latência. Nessa categoria, o SMB Multichannel deve estar habilitado para obter o melhor desempenho.
- Vários threads/arquivo único: na maioria dos casos de uso nessa categoria, as cargas de trabalho serão beneficiadas pela habilitação do SMB Multichannel, 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 o backup ou a recuperação de um arquivo grande. Uma exceção em que você pode querer desabilitar o SMB Multichannel é se sua carga de trabalho for pesada em E/S pequenas. Nesse caso, você poderá observar uma pequena perda de desempenho de aproximadamente 10%. Dependendo do caso de uso, considere a propagação da carga entre vários arquivos ou desabilite o recurso. Confira a seção Configuração para obter detalhes.
- Arquivos de thread único/vários ou arquivo único: para a maioria das cargas de trabalho de thread único, há benefícios mínimos de desempenho devido à falta de paralelismo. Normalmente, há uma pequena degradação de desempenho de aproximadamente 10% se o SMB Multichannel estiver habilitado. Nesse caso, é ideal desabilitar o SMB Multichannel com uma exceção. Se a carga de trabalho de thread único puder distribuir a carga entre vários arquivos e usar um tamanho médio de E/S maior (> ~16k), deverá haver pequenos benefícios de desempenho do SMB Multichannel.
Configuração de teste de desempenho
Para os gráficos neste artigo, a seguinte configuração foi usada: uma VM Standard D32s v3 com um adaptador de rede habilitado para RSS com quatro canais. A carga foi gerada usando o diskspd.exe, vários threads com uma profundidade de E/S de 10 e usando E/Ss aleatórias de vários tamanhos.
Tamanho | vCPU | Memória: GiB | Armazenamento temporário (SSD) GiB | Discos de dados máximos | Taxa de transferência máxima de armazenamento em cache e temporária: IOPS/MBps (tamanho do cache no GiB) | Taxa de transferência de disco sem cache: IOPS/MBps | Máximo de NICs | Largura de banda de rede esperada (Mbps) |
---|---|---|---|---|---|---|---|---|
Standard_D32s_v3 | 32 | 128 | 256 | 32 | 64000/512 (800) | 51200/768 | 8 | 16000 |
Vários threads/vários arquivos com SMB Multichannel
A carga foi gerada em dez arquivos com vários tamanhos de E/S. Os resultados de teste de escala vertical mostraram aprimoramentos significativos nos resultados de teste de taxa de transferência e de IOPS com o SMB Multichannel habilitado. Os seguintes diagramas descrevem os resultados:
- Em um adaptador de rede houve um aumento de desempenho de leitura de 2x a 3x e um aumento de 3x a 4x no desempenho das gravações, tanto na IOPS e como na taxa de transferência.
- O SMB Multichannel permitiu que a IOPS e a taxa de transferência alcançassem os limites de VM mesmo com apenas um adaptador de rede e com um limite de quatro canais.
- Como a saída (ou leituras no armazenamento) não é limitada, a taxa de transferência de leitura conseguiu de exceder o limite publicado da VM de 16.000 Mbps (2 GiB/s). O teste obteve um resultado de>2,7 GiB/s. A entrada (ou gravações no armazenamento) ainda está sujeita aos limites de VM.
- A distribuição de carga em vários arquivos é permitida para a obtenção de aprimoramentos substanciais.
Um exemplo de comando 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 de vários threads/arquivo único com o SMB Multichannel
A carga foi gerada em um arquivo de 128 GiB. Com o SMB Multichannel habilitado, o teste de escala vertical com vários threads/arquivos únicos mostrou aprimoramentos na maioria dos casos. Os seguintes diagramas descrevem os resultados:
- Em um adaptador de rede com o tamanho médio de E/S maior (> ~16k), houve melhoras significativas em leituras e gravações.
- Em tamanhos de E/S menores, houve um pequeno impacto de aproximadamente 10% no desempenho com o SMB Multichannel habilitado. Isso pode ser reduzido por meio da disseminação da carga em vários arquivos ou desabilitando o recurso.
- O desempenho ainda tem limites de arquivo único.
Cache de metadados para compartilhamentos de arquivos Premium do SMB
O cache de metadados é um aprimoramento para compartilhamentos de arquivos Premium do SMB do Azure com o objetivo de reduzir a latência de metadados, aumentar a IOPS disponível e aumentar a taxa de transferência de rede. Esta versão prévia do recurso melhora as seguintes APIs de metadados e pode ser usado em clientes Windows e Linux:
- Criar
- Aberto
- Fechar
- Excluir
Para integrar, inscreva-se na versão prévia pública e forneceremos detalhes adicionais. Atualmente, essa versão prévia do recurso só está disponível para compartilhamentos de arquivos Premium do SMB (compartilhamentos de arquivos no tipo de conta de armazenamento FileStorage). Não há custos adicionais associados ao uso desse recurso.
Disponibilidade regional
Atualmente, a versão prévia do cache de metadados só está disponível nas seguintes regiões do Azure.
- Leste da Austrália
- Sudeste do Brasil
- Sul da França
- Centro-Oeste da Alemanha
- Norte da Suíça
- EAU Central
- Norte dos EAU
- Centro-Oeste dos EUA
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, é possível usar o Azure Monitor para dividir as transações pela dimensão da API.
Cargas de trabalho e padrões de uso típicos de metadados pesados incluem:
- Serviços Web/aplicativos
- Tarefas do DevOps
- Trabalhos de indexação/em lotes
- Áreas de trabalho virtuais com diretórios domésticos ou outras cargas de trabalho que interagem principalmente com muitos arquivos pequenos, diretórios ou identificadores
Os diagramas a seguir ilustram resultados em potencial.
Reduzir latência de metadados
Ao armazenar em cache caminhos de arquivo e diretório 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 pesadas de metadados em escala.
Aumentar IOPS disponível
O cache de metadados pode aumentar a IOPS disponível em mais de 60% para cargas de trabalho pesadas de metadados em escala.
Aumentar a taxa de transferência de rede
O cache de metadados pode aumentar a taxa de transferência de rede em mais de 60% para cargas de trabalho pesadas de metadados em escala.
Próximas etapas
- Verificar o status do SMB Multichannel
- Confira a documentação do Windows para SMB Multichannel