閱讀英文

共用方式為


搭配 Azure Data Lake Storage Gen1 使用 PowerShell 的效能微調指引

本文說明您可以在使用 PowerShell 處理 Data Lake Storage Gen1 時微調以取得更佳效能的屬性。

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

財產 預設 說明
每檔線程數 10 此參數可讓您選擇要上傳或下載每個檔案的平行線程數目。 此數目代表每個檔案可配置的線程上限,但視您的案例而定,您可能會得到較少的線程(例如,如果您要上傳 1 KB 檔案,即使您要求 20 個線程,也會得到一個線程)。
ConcurrentFileCount 10 此參數特別用於上傳或下載資料夾。 此參數決定可以上傳或下載的並行檔案數目。 此數目代表可以一次上傳或下載的並行檔案數目上限,但視您的案例而定,您可能會獲得較少的並行存取權(例如,如果您要上傳兩個檔案,即使您要求 15,您還是會收到兩個並行檔案上傳)。

範例︰

此命令會使用每個檔案 20 個線程和 100 個並行檔案,將檔案從 Data Lake Storage Gen1 下載到使用者的本機磁碟驅動器。

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

如何判斷屬性值

下一個問題是如何判斷要為效能相關的屬性提供哪些值。 以下是一些您可以使用的指引。

  • 步驟 1:判斷線程總數 - 從計算要使用的線程計數總計開始。 作為一般指導方針,您應該針對每個實體核心使用六個線程。

    Total thread count = total physical cores * 6

    範例︰

    假設您正在從具有 16 個核心的 D14 VM 執行 PowerShell 命令

    Total thread count = 16 cores * 6 = 96 threads

  • 步驟 2:計算 PerFileThreadCount - 我們會根據檔案的大小來計算 PerFileThreadCount。 對於小於 2.5 GB 的檔案,不需要變更此參數,因為預設值為 10 就已足夠。 對於大於 2.5 GB 的檔案,您應該使用 10 個線程作為前 2.5 GB 的基底,併為檔案大小增加每個額外 256 MB 新增 1 個線程。 如果您要複製具有大量檔案大小的資料夾,請考慮將它們分組為類似的檔案大小。 擁有不同的檔案大小可能會導致非最佳效能。 如果無法將類似的檔案大小分組,您應該根據最大的檔案大小來設定 PerFileThreadCount。

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

    範例︰

    假設您有 100 個檔案,範圍從 1 GB 到 10 GB,我們會使用 10 GB 作為方程式的最大檔案大小,如下所示。

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

  • 步驟 3:計算 ConcurrentFileCount - 使用總線程數和 PerFileThreadCount,根據下列方程式計算 ConcurrentFileCount:

    Total thread count = PerFileThreadCount * ConcurrentFileCount

    範例︰

    根據我們所使用的範例值

    96 = 40 * ConcurrentFileCount

    因此,ConcurrentFileCount2.4,我們可以捨入至 2

進一步微調

您可能需要進一步調整,因為要處理各種不同的檔案大小。 如果所有檔案或大部分檔案都較大且接近 10 GB 範圍,則上述計算效果良好。 如果相反地,有許多不同的檔案大小,且許多檔案較小,則您可以減少 PerFileThreadCount。 藉由減少 PerFileThreadCount,我們可以增加 ConcurrentFileCount。 因此,如果我們假設大部分的檔案在 5 GB 範圍內較小,我們可以重做計算:

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

因此,ConcurrentFileCount 會變成 96/20,也就是 4.8,四捨五入為 4

您可以根據檔案大小的分佈,上下調整 perFileThreadCount 來進一步調整這些設定。

限度

  • 檔案數目小於 ConcurrentFileCount:如果您要上傳的檔案數目小於您所計算的 ConcurrentFileCount,則您應該減少 concurrentFileCount 等於檔案數目。 您可以使用任何剩餘的執行緒來增加 perFileThreadCount

  • 太多線程:如果您增加線程計數太多,而不會增加叢集大小,則會執行效能降低的風險。 在CPU上切換上下文時,可能會發生爭用問題。

  • 並行存取不足:如果並行不足,則叢集可能太小。 您可以增加叢集中的節點數目,這可提供您更多的並行存取。

  • 限流錯誤:如果您的並行度過高,您可能會看到限流錯誤。 如果您看到限流錯誤,您應該減少併發量或與我們聯絡。

後續步驟