Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo descreve as propriedades que você pode ajustar para obter um melhor desempenho ao usar o PowerShell para trabalhar com o Data Lake Storage Gen1.
Observação
Recomendamos que utilize o módulo Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo Az PowerShell, veja Migrar o Azure PowerShell de AzureRM para Az.
Propriedades relacionadas ao desempenho
| Propriedade | Predefinido | Descrição |
|---|---|---|
| PerFileThreadCount | 10 | Este parâmetro permite que você escolha o número de threads paralelos para carregar ou baixar cada arquivo. Esse número representa o máximo de threads que podem ser alocados por arquivo, mas você pode obter menos threads dependendo do seu cenário (por exemplo, se você estiver carregando um arquivo de 1 KB, obterá um thread mesmo se pedir 20 threads). |
| ConcurrentFileCount | 10 | Este parâmetro é especificamente para carregar ou baixar pastas. Este parâmetro determina o número de arquivos simultâneos que podem ser carregados ou baixados. Esse número representa o número máximo de arquivos simultâneos que podem ser carregados ou baixados ao mesmo tempo, mas você pode obter menos simultaneidade dependendo do seu cenário (por exemplo, se você estiver carregando dois arquivos, você receberá dois uploads de arquivos simultâneos, mesmo se você pedir 15). |
Exemplo:
Este comando baixa arquivos do Data Lake Storage Gen1 para a unidade local do usuário usando 20 threads por arquivo e 100 arquivos simultâneos.
Export-AzDataLakeStoreItem -AccountName "Data Lake Storage Gen1 account name" `
-PerFileThreadCount 20 `
-ConcurrentFileCount 100 `
-Path /Powershell/100GB `
-Destination C:\Performance\ `
-Force `
-Recurse
Como determinar valores de propriedade
A próxima pergunta que você pode ter é como determinar qual valor fornecer para as propriedades relacionadas ao desempenho. Eis algumas orientações que poderá utilizar.
Etapa 1: Determinar a contagem total de threads - Comece calculando a contagem total de threads a ser usada. Como diretriz geral, você deve usar seis threads para cada núcleo físico.
Total thread count = total physical cores * 6Exemplo:
Supondo que você esteja executando os comandos do PowerShell de uma VM D14 que tenha 16 núcleos
Total thread count = 16 cores * 6 = 96 threadsPasso 2: Calcular PerFileThreadCount - Calculamos nosso PerFileThreadCount com base no tamanho dos arquivos. Para arquivos menores que 2,5 GB, não há necessidade de alterar esse parâmetro porque o padrão de 10 é suficiente. Para arquivos maiores que 2,5 GB, você deve usar 10 threads como base para os primeiros 2,5 GB e adicionar 1 thread para cada aumento adicional de 256 MB no tamanho do arquivo. Se você estiver copiando uma pasta com uma grande variedade de tamanhos de arquivo, considere agrupá-los em tamanhos de arquivo semelhantes. Ter tamanhos de arquivo diferentes pode causar um desempenho não ideal. Se não for possível agrupar tamanhos de arquivo semelhantes, você deve definir PerFileThreadCount com base no maior tamanho de arquivo.
PerFileThreadCount = 10 threads for the first 2.5 GB + 1 thread for each additional 256 MB increase in file sizeExemplo:
Supondo que você tenha 100 arquivos que variam de 1 GB a 10 GB, usamos os 10 GB como o maior tamanho de arquivo para equação, que seria como o seguinte.
PerFileThreadCount = 10 + ((10 GB - 2.5 GB) / 256 MB) = 40 threadsEtapa 3: Calcular ConcurrentFilecount - Use a contagem total de threads e PerFileThreadCount para calcular ConcurrentFileCount com base na seguinte equação:
Total thread count = PerFileThreadCount * ConcurrentFileCountExemplo:
Com base nos valores de exemplo que temos vindo a utilizar
96 = 40 * ConcurrentFileCountAssim, ConcurrentFileCount é 2.4, que podemos arredondar para 2.
Afinação adicional
Pode ser necessário fazer mais ajustes porque há uma variedade de tamanhos de arquivo com que lidar. O cálculo anterior funciona bem se todos ou a maioria dos arquivos forem maiores e mais próximos do intervalo de 10 GB. Se, em vez disso, houver muitos tamanhos de arquivos diferentes com muitos arquivos sendo menores, então você pode reduzir PerFileThreadCount. Ao reduzir o PerFileThreadCount, podemos aumentar ConcurrentFileCount. Então, se assumirmos que a maioria dos nossos arquivos são menores na faixa de 5 GB, podemos refazer nosso cálculo:
PerFileThreadCount = 10 + ((5 GB - 2.5 GB) / 256 MB) = 20
Assim, ConcurrentFileCount torna-se 96/20, que é 4.8, arredondado para 4.
Você pode continuar a ajustar essas configurações alterando o PerFileThreadCount para cima e para baixo, dependendo da distribuição dos tamanhos dos arquivos.
Limitação
O número de arquivos é menor que ConcurrentFileCount: Se o número de arquivos que você está carregando for menor do que o ConcurrentFileCount que você calculou, então você deve reduzir ConcurrentFileCount para ser igual ao número de arquivos. Você pode usar quaisquer threads restantes para aumentar PerFileThreadCount.
Demasiados threads: Se aumentar demasiado a contagem de threads sem aumentar o tamanho do cluster, corre o risco de ter um desempenho degradado. Pode haver problemas de contenção durante a alternância de contexto na CPU.
Simultaneidade insuficiente: Se a simultaneidade não for suficiente, o cluster pode ser muito pequeno. Você pode aumentar o número de nós em seu cluster, o que lhe dá mais simultaneidade.
Erros de limitação: Poderá ver erros de limitação se a concorrência for demasiado elevada. Se você estiver vendo erros de limitação, você deve reduzir a simultaneidade ou entrar em contato conosco.