Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive le proprietà che è possibile ottimizzare per ottenere prestazioni migliori usando PowerShell per lavorare con Data Lake Storage Gen1.
Annotazioni
È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
Proprietà correlate alle prestazioni
| Proprietà | Impostazione predefinita | Descrizione |
|---|---|---|
| PerFileThreadCount | 10 | Questo parametro consente di scegliere il numero di thread paralleli per il caricamento o il download di ogni file. Questo numero rappresenta il numero massimo di thread che possono essere allocati per ogni file, ma è possibile ottenere un minor numero di thread a seconda dello scenario, ad esempio se si carica un file da 1 KB, si ottiene un thread anche se si richiedono 20 thread. |
| ConcurrentFileCount | 10 | Questo parametro è specifico per il caricamento o il download di cartelle. Questo parametro determina il numero di file simultanei che possono essere caricati o scaricati. Questo numero rappresenta il numero massimo di file simultanei che possono essere caricati o scaricati contemporaneamente, ma è possibile ottenere meno concorrenza a seconda dello scenario(ad esempio, se si caricano due file, si ottengono due caricamenti simultanei anche se si richiede 15). |
Esempio:
Questo comando scarica i file da Data Lake Storage Gen1 all'unità locale dell'utente usando 20 thread per file e 100 file simultanei.
Export-AzDataLakeStoreItem -AccountName "Data Lake Storage Gen1 account name" `
-PerFileThreadCount 20 `
-ConcurrentFileCount 100 `
-Path /Powershell/100GB `
-Destination C:\Performance\ `
-Force `
-Recurse
Come determinare i valori delle proprietà
La domanda successiva che si potrebbe avere è come determinare quale valore fornire per le proprietà correlate alle prestazioni. Ecco alcune linee guida che è possibile usare.
Passaggio 1: determinare il numero totale di thread : iniziare calcolando il numero totale di thread da usare. Come linea guida generale, è consigliabile usare sei thread per ogni core fisico.
Total thread count = total physical cores * 6Esempio:
Supponendo di eseguire i comandi di PowerShell da una macchina virtuale D14 con 16 core
Total thread count = 16 cores * 6 = 96 threadsPassaggio 2: Calcolare PerFileThreadCount : viene calcolato il Valore PerFileThreadCount in base alle dimensioni dei file. Per i file di dimensioni inferiori a 2,5 GB, non è necessario modificare questo parametro perché il valore predefinito di 10 è sufficiente. Per i file di dimensioni superiori a 2,5 GB, è consigliabile usare 10 thread come base per il primo 2,5 GB e aggiungere 1 thread per ogni aumento di 256 MB di dimensioni del file. Se si copia una cartella con un'ampia gamma di dimensioni dei file, è consigliabile raggrupparle in dimensioni di file simili. La presenza di dimensioni di file diverse può causare prestazioni non ottimali. Se non è possibile raggruppare dimensioni di file simili, è necessario impostare PerFileThreadCount in base alle dimensioni massime del file.
PerFileThreadCount = 10 threads for the first 2.5 GB + 1 thread for each additional 256 MB increase in file sizeEsempio:
Supponendo di avere 100 file compresi tra 1 GB e 10 GB, si usano i 10 GB come dimensione massima del file per l'equazione, come illustrato di seguito.
PerFileThreadCount = 10 + ((10 GB - 2.5 GB) / 256 MB) = 40 threadsPassaggio 3: Calcolare ConcurrentFilecount : usare il numero totale di thread e PerFileThreadCount per calcolare ConcurrentFileCount in base all'equazione seguente:
Total thread count = PerFileThreadCount * ConcurrentFileCountEsempio:
In base ai valori di esempio usati
96 = 40 * ConcurrentFileCountQuindi, ConcurrentFileCount è 2.4, che possiamo arrotondare a 2.
Ulteriore ottimizzazione
È possibile che sia necessaria un'ulteriore ottimizzazione perché è disponibile un intervallo di dimensioni del file da usare. Il calcolo precedente funziona bene se tutti o la maggior parte dei file sono più grandi e più vicini all'intervallo di 10 GB. Se invece ci sono molte dimensioni di file diverse con molti file più piccoli, è possibile ridurre PerFileThreadCount. Riducendo PerFileThreadCount, è possibile aumentare ConcurrentFileCount. Pertanto, se si presuppone che la maggior parte dei file sia più piccola nell'intervallo di 5 GB, è possibile ripetere il calcolo:
PerFileThreadCount = 10 + ((5 GB - 2.5 GB) / 256 MB) = 20
Quindi, ConcurrentFileCount diventa 96/20, ovvero 4,8, arrotondato a 4.
È possibile continuare a ottimizzare queste impostazioni modificando PerFileThreadCount in base alla distribuzione delle dimensioni del file.
Limitazione
Il numero di file è minore di ConcurrentFileCount: se il numero di file che si sta caricando è minore di ConcurrentFileCount calcolato, è necessario ridurre ConcurrentFileCount in modo che sia uguale al numero di file. È possibile usare tutti i thread rimanenti per aumentare PerFileThreadCount.
Troppi thread: se si aumenta il numero di thread troppo senza aumentare le dimensioni del cluster, si rischia di ridurre le prestazioni. Possono verificarsi problemi di contesa durante il cambio di contesto sulla CPU.
Concorrenza insufficiente: se la concorrenza non è sufficiente, il cluster potrebbe essere troppo piccolo. È possibile aumentare il numero di nodi nel cluster, che offre maggiore concorrenza.
Errori di limitazione: se la concorrenza è troppo elevata, potrebbero verificarsi errori di limitazione. Se vengono visualizzati errori di limitazione, è consigliabile ridurre la concorrenza o contattare Microsoft.