Richtlijnen voor het afstemmen van prestaties voor het gebruik van PowerShell met Azure Data Lake Storage Gen1
In dit artikel worden de eigenschappen beschreven die u kunt afstemmen om betere prestaties te krijgen wanneer u PowerShell gebruikt om te werken met Data Lake Storage Gen1.
Notitie
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Prestatiegerelateerde eigenschappen
Eigenschap | Standaard | Beschrijving |
---|---|---|
PerFileThreadCount | 10 | Met deze parameter kunt u het aantal parallelle threads voor het uploaden of downloaden van elk bestand kiezen. Dit aantal geeft het maximum aantal threads aan dat per bestand kan worden toegewezen, maar afhankelijk van uw scenario krijgt u mogelijk minder threads (als u bijvoorbeeld een bestand van 1 kB uploadt, krijgt u één thread, zelfs als u om 20 threads vraagt). |
ConcurrentFileCount | 10 | Deze parameter is specifiek bedoeld voor het uploaden en downloaden van mappen. De parameter bepaalt het aantal bestanden dat tegelijk kan worden geüpload of gedownload. Dit getal geeft het maximum aantal gelijktijdige bestanden aan dat tegelijk kan worden geüpload of gedownload, maar afhankelijk van uw scenario krijgt u mogelijk minder gelijktijdigheid (als u bijvoorbeeld twee bestanden uploadt, krijgt u twee gelijktijdige bestanden, zelfs als u om 15 bestanden vraagt). |
Voorbeeld:
Met deze opdracht worden bestanden gedownload van Data Lake Storage Gen1 naar het lokale station van de gebruiker met behulp van 20 threads per bestand en 100 gelijktijdige bestanden.
Export-AzDataLakeStoreItem -AccountName "Data Lake Storage Gen1 account name" `
-PerFileThreadCount 20 `
-ConcurrentFileCount 100 `
-Path /Powershell/100GB `
-Destination C:\Performance\ `
-Force `
-Recurse
Eigenschapswaarden bepalen
De volgende vraag die u mogelijk hebt, is hoe u kunt bepalen welke waarde moet worden geboden voor de prestatiegerelateerde eigenschappen. Hier volgen een aantal richtlijnen.
Stap 1: Bepaal het totale aantal threads : begin met het berekenen van het totale aantal threads dat moet worden gebruikt. Als algemene richtlijn moet u zes threads gebruiken voor elke fysieke kern.
Total thread count = total physical cores * 6
Voorbeeld:
We nemen hier aan dat u de PowerShell-opdrachten uitvoert vanaf een D14-VM met 16 kernen
Total thread count = 16 cores * 6 = 96 threads
Stap 2: PerFileThreadCount berekenen : we berekenen onze PerFileThreadCount op basis van de grootte van de bestanden. Voor bestanden die kleiner zijn dan 2,5 GB hoeft u deze parameter niet te wijzigen, omdat de standaardwaarde van 10 voldoende is. Voor bestanden die groter zijn dan 2,5 GB, moet u 10 threads gebruiken als basis voor de eerste 2,5 GB en 1 thread toevoegen voor elke extra 256 MB-toename in bestandsgrootte. Als u een map kopieert met bestanden van zeer verschillende groottes, kunt u overwegen ze op vergelijkbare grootte te sorteren. Grote verschillen in bestandsgroottes kunnen tot slechtere prestaties leiden. Als het niet mogelijk is om bestanden op grootte te sorteren, dient u de PerFileThreadCount in te stellen op basis van het grootste bestand.
PerFileThreadCount = 10 threads for the first 2.5 GB + 1 thread for each additional 256 MB increase in file size
Voorbeeld:
Ervan uitgaande dat u 100 bestanden hebt, variërend van 1 GB tot 10 GB, gebruiken we de 10 GB als de grootste bestandsgrootte voor de vergelijking, die er als volgt uitziet.
PerFileThreadCount = 10 + ((10 GB - 2.5 GB) / 256 MB) = 40 threads
Stap 3: ConcurrentFilecount berekenen : gebruik het totale aantal threads en PerFileThreadCount om ConcurrentFileCount te berekenen op basis van de volgende vergelijking:
Total thread count = PerFileThreadCount * ConcurrentFileCount
Voorbeeld:
We gaan uit van de gebruikte voorbeeldwaarden
96 = 40 * ConcurrentFileCount
De ConcurrentFileCount is 2,4, wat we kunnen afronden naar 2.
Verder afstemmen
Mogelijk is verder afstemmen nodig omdat u werkt met bestanden van uiteenlopende groottes. De voorgaande berekening werkt goed als alle of de meeste bestanden groter zijn en dichter bij het bereik van 10 GB liggen. Als het echter bestanden van zeer uiteenlopende groottes betreft, waarbij veel bestanden kleiner zijn, kunt u de PerFileThreadCount verlagen. Als we de PerFileThreadCount verlagen, kunnen we de ConcurrentFileCount verhogen. Dus als we ervan uitgaan dat de meeste bestanden kleiner zijn in het bereik van 5 GB, kunnen we de berekening opnieuw uitvoeren:
PerFileThreadCount = 10 + ((5 GB - 2.5 GB) / 256 MB) = 20
ConcurrentFileCount wordt dus 96/20, wat 4,8 is, afgerond op 4.
U kunt deze instellingen blijven aanpassen door de PerFileThreadCount te verhogen of te verlagen, afhankelijk van de verdeling van de bestandsgroottes.
Beperking
Het aantal bestanden is lager dan de ConcurrentFileCount: als het aantal bestanden dat u uploadt lager is dan de ConcurrentFileCount die u hebt berekend, dient u de ConcurrentFileCount te verlagen tot deze gelijk is met het aantal bestanden. U kunt eventuele overblijvende threads gebruiken om de PerFileThreadCount te verhogen.
Te veel threads: als u het aantal threads te veel verhoogt zonder dat u de grootte van uw cluster verhoogt, kan dit tot slechtere prestaties leiden. Er treden mogelijk conflicten op wanneer u van context wisselt op de CPU.
Onvoldoende gelijktijdigheid: als de gelijktijdigheid onvoldoende is, is uw cluster mogelijk te klein. U kunt het aantal knooppunten in uw cluster verhogen, waardoor u meer gelijktijdigheid krijgt.
Beperkingsfouten: er treden mogelijk beperkingsfouten op als uw gelijktijdigheid te hoog is. Als er beperkingsfouten optreden, dient u uw gelijktijdigheid te verkleinen of contact met ons op te nemen.