Sdílet prostřednictvím


Pokyny k ladění výkonu pro použití PowerShellu s Azure Data Lake Storage Gen1

Tento článek popisuje vlastnosti, které můžete ladit, abyste získali lepší výkon při práci s Data Lake Storage Gen1 pomocí PowerShellu.

Poznámka

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Vlastnost Výchozí Description
PerFileThreadCount 10 Pomocí tohoto parametru můžete zvolit počet paralelních vláken pro nahrávání nebo stahování jednotlivých souborů. Toto číslo představuje maximální počet vláken, která lze přidělit na soubor, ale v závislosti na vašem scénáři můžete získat méně vláken (například pokud nahráváte soubor o velikosti 1 kB, získáte jedno vlákno, i když požádáte o 20 vláken).
ConcurrentFileCount 10 Tento parametr je určený zejména pro nahrávání nebo stahování složek. Tento parametr určuje počet souborů, které lze souběžně nahrávat nebo stahovat. Toto číslo představuje maximální počet souběžných souborů, které se dají nahrát nebo stáhnout najednou, ale v závislosti na vašem scénáři můžete dosáhnout nižší souběžnosti (například pokud nahráváte dva soubory, získáte dva souběžné nahrávání souborů, i když požádáte o 15).

Příklad:

Tento příkaz stáhne soubory z Data Lake Storage Gen1 na místní jednotku uživatele pomocí 20 vláken na soubor a 100 souběžných souborů.

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

Jak určit hodnoty vlastností

Další otázkou, kterou můžete mít, je, jak určit, jakou hodnotu zadat pro vlastnosti související s výkonem. Tady je několik rad, kterými se můžete řídit.

  • Krok 1: Určení celkového počtu vláken – Začněte výpočtem celkového počtu vláken, který chcete použít. Obecně byste měli pro každé fyzické jádro použít šest vláken.

    Total thread count = total physical cores * 6

    Příklad:

    Předpokládejme, že spouštíte příkazy prostředí PowerShell z virtuálního počítače D14, který má 16 jader.

    Total thread count = 16 cores * 6 = 96 threads

  • Krok 2: Výpočet hodnoty PerFileThreadCount – Vypočítáme hodnotu PerFileThreadCount na základě velikosti souborů. U souborů menších než 2,5 GB není nutné tento parametr měnit, protože výchozí hodnota 10 stačí. Pro soubory větší než 2,5 GB byste měli použít 10 vláken jako základ pro prvních 2,5 GB a přidat 1 vlákno pro každé další 256 MB zvětšení velikosti souboru. Pokud kopírujete složku se soubory velmi rozdílných velikostí, zvažte jejich seskupení podle podobných velikostí. Velmi rozdílné velikosti souborů mohou způsobit, že výkon nebude optimální. Pokud není možné seskupit soubory podle podobných velikostí, měli byste hodnotu PerFileThreadCount nastavit podle největší velikosti souboru.

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

    Příklad:

    Za předpokladu, že máte 100 souborů v rozsahu od 1 GB do 10 GB, použijeme 10 GB jako největší velikost souboru pro rovnici, což by vypadalo takto.

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

  • Krok 3: Výpočet concurrentFilecount – pomocí celkového počtu vláken a hodnoty PerFileThreadCount můžete vypočítat ConcurrentFileCount na základě následující rovnice:

    Total thread count = PerFileThreadCount * ConcurrentFileCount

    Příklad:

    Podle ukázkových hodnot, které používáme:

    96 = 40 * ConcurrentFileCount

    Takže hodnota ConcurrentFileCount je 2.4, což můžeme zaokrouhlit na 2.

Další ladění

Možná budete vyžadovat další ladění, protože existuje velká škála velikostí souborů, se kterými můžete pracovat. Předchozí výpočet funguje dobře, pokud jsou všechny soubory nebo většina souborů větší a blíže k 10GB rozsahu. Pokud ale bude existovat mnoho různých velikostí souborů a mnoho jich bude menších, mohli byste hodnotu PerFileThreadCount snížit. Díky snížení hodnoty PerFileThreadCount můžeme zvýšit hodnotu ConcurrentFileCount. Pokud tedy předpokládáme, že většina našich souborů je menší v rozsahu 5 GB, můžeme výpočet znovu provést:

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

Takže ConcurrentFileCount se stane 96/20, což je 4,8, zaokrouhleno na 4.

Tato nastavení můžete dále ladit zvýšením nebo snížením hodnoty PerFileThreadCount v závislosti na rozložení velikostí souborů.

Omezení

  • Počet souborů je menší než hodnota ConcurrentFileCount: Pokud je počet souborů, které nahráváte, menší než hodnota ConcurrentFileCount, kterou jste vypočítali, měli byste snížit hodnotu ConcurrentFileCount tak, aby se rovnala počtu souborů. Zbývající vlákna můžete použít ke zvýšení hodnoty PerFileThreadCount.

  • Příliš mnoho vláken: Pokud příliš zvýšíte počet vláken a nezvětšíte velikost clusteru, riskujete tím snížení výkonu. Může docházet ke kolizím při přepínání kontextu na procesoru.

  • Nedostatečná souběžnost: Pokud souběžnost není dostatečná, může to být způsobeno malou velikostí clusteru. Můžete zvýšit počet uzlů v clusteru, což vám dává větší souběžnost.

  • Chyby omezování: Pokud je souběžnost příliš vysoká, může docházet k chybám omezování. Pokud dochází k chybám omezování, měli byste buď snížit souběžnost, nebo nás kontaktovat.

Další kroky