Udostępnij za pośrednictwem


Wskazówki dotyczące dostrajania wydajności dotyczące używania programu PowerShell z usługą Azure Data Lake Storage Gen1

W tym artykule opisano właściwości, które można dostosować, aby uzyskać lepszą wydajność podczas korzystania z programu PowerShell do pracy z usługą Data Lake Storage Gen1.

Uwaga

Zalecamy korzystanie z modułu Azure Az programu PowerShell do interakcji z platformą Azure. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Nieruchomość Wartość domyślna Opis
PerFileThreadCount 10 Ten parametr umożliwia wybranie liczby wątków równoległych do przekazywania lub pobierania każdego pliku. Ta liczba reprezentuje maksymalne wątki, które można przydzielić na plik, ale w zależności od scenariusza może być mniej wątków (na przykład jeśli przekazujesz plik 1 KB, otrzymasz jeden wątek, nawet jeśli poprosisz o 20 wątków).
LicznikRównoczesnychPlików 10 Ten parametr jest przeznaczony specjalnie do przekazywania lub pobierania folderów. Ten parametr określa liczbę współbieżnych plików, które można przekazać lub pobrać. Ta liczba reprezentuje maksymalną liczbę jednoczesnych operacji przesyłania lub pobierania plików, ale liczba ta może być mniejsza w zależności od sytuacji (na przykład, jeśli wysyłasz dwa pliki, otrzymujesz dwa jednoczesne przesyłania, nawet jeśli zażądano 15).

Przykład:

To polecenie pobiera pliki z usługi Data Lake Storage Gen1 do dysku lokalnego użytkownika przy użyciu 20 wątków na plik i 100 współbieżnych plików.

Export-AzDataLakeStoreItem -AccountName "Data Lake Storage Gen1 account name" `
    -PerFileThreadCount 20 `
	-ConcurrentFileCount 100 `
	-Path /Powershell/100GB `
	-Destination C:\Performance\ `
	-Force `
	-Recurse

Jak określić wartości właściwości

Następnym pytaniem, które może być konieczne, jest określenie, jaką wartość należy podać dla właściwości związanych z wydajnością. Oto kilka użytecznych wskazówek.

  • Krok 1. Określanie całkowitej liczby wątków — zacznij od obliczenia całkowitej liczby wątków do użycia. Zalecenie ogólne to używanie sześciu wątków dla każdego rdzenia fizycznego.

    Total thread count = total physical cores * 6

    Przykład:

    Zakładając, że uruchamiasz polecenia programu PowerShell z maszyny wirtualnej D14, która ma 16 rdzeni

    Total thread count = 16 cores * 6 = 96 threads

  • Krok 2. Obliczanie wartości PerFileThreadCount — obliczamy nasz element PerFileThreadCount na podstawie rozmiaru plików. W przypadku plików mniejszych niż 2,5 GB nie ma potrzeby zmiany tego parametru, ponieważ wartość domyślna 10 jest wystarczająca. W przypadku plików większych niż 2,5 GB należy użyć 10 wątków jako podstawy dla pierwszych 2,5 GB i dodać 1 wątek dla każdego dodatkowego 256 MB zwiększenia rozmiaru pliku. Jeśli kopiujesz folder z dużym zakresem rozmiarów plików, rozważ zgrupowanie ich w podobne rozmiary plików. Różne rozmiary plików mogą spowodować brak optymalnej wydajności. Jeśli nie można grupować podobnych rozmiarów plików, należy ustawić parametr PerFileThreadCount na podstawie największego rozmiaru pliku.

    PerFileThreadCount = 10 threads for the first 2.5 GB + 1 thread for each additional 256 MB increase in file size

    Przykład:

    Przy założeniu, że masz 100 plików z zakresu od 1 GB do 10 GB, użyjemy 10 GB jako największego rozmiaru pliku dla równania, co brzmi następująco.

    PerFileThreadCount = 10 + ((10 GB - 2.5 GB) / 256 MB) = 40 threads

  • Krok 3. Oblicz wartość ConcurrentFilecount — użyj łącznej liczby wątków i wartości PerFileThreadCount, aby obliczyć wartość ConcurrentFileCount na podstawie następującego równania:

    Total thread count = PerFileThreadCount * ConcurrentFileCount

    Przykład:

    Na podstawie przykładowych wartości, których używaliśmy

    96 = 40 * ConcurrentFileCount

    Dlatego parametr ConcurrentFileCount wynosi 2,4, co możemy zaokrąglić do 2.

Dalsze dostrajanie

Może być potrzebne dalsze dostrajanie, ponieważ pracujemy z różnymi rozmiarami plików. Powyższe obliczenie działa dobrze, jeśli wszystkie lub większość plików jest większa i bliżej zakresu 10 GB. Jeśli zamiast tego istnieje wiele plików o różnych rozmiarach, w tym wiele mniejszych plików, możesz zmniejszyć wartość PerFileThreadCount. Zmniejszając liczbę parametrów PerFileThreadCount, możemy zwiększyć wartość ConcurrentFileCount. Jeśli więc zakładamy, że większość naszych plików jest mniejsza w zakresie 5 GB, możemy ponownie wykonać obliczenia:

PerFileThreadCount = 10 + ((5 GB - 2.5 GB) / 256 MB) = 20

Dlatego parametr ConcurrentFileCount staje się 96/20, czyli 4,8, zaokrąglony do 4.

Możesz nadal dostroić te ustawienia, zmieniając element PerFileThreadCount w górę i w dół w zależności od rozkładu rozmiarów plików.

Ograniczenie

  • Liczba plików jest mniejsza niż ConcurrentFileCount: Jeśli liczba przekazywanych plików jest mniejsza niż obliczona wartość ConcurrentFileCount, należy zmniejszyć wartość ConcurrentFileCount, aby była równa liczbie plików. Można użyć pozostałych wątków do zwiększenia PerFileThreadCount.

  • Zbyt wiele wątków: Jeśli zbytnio zwiększysz liczbę wątków bez zwiększania rozmiaru klastra, istnieje ryzyko pogorszenia wydajności. Podczas przełączania kontekstu na procesorze mogą występować konflikty.

  • Niewystarczająca współbieżność: jeśli współbieżność nie jest wystarczająca, klaster może być zbyt mały. Możesz zwiększyć liczbę węzłów w klastrze, co zapewnia większą współbieżność.

  • Błędy throttlingu: Mogą wystąpić błędy throttlingu, jeśli współbieżność jest zbyt wysoka. Jeśli występują błędy ograniczania przepustowości, należy zmniejszyć współbieżność lub skontaktować się z nami.

Następne kroki