Azure Data Lake Storage Gen1 で PowerShell を使用するためのパフォーマンス チューニング ガイダンスPerformance tuning guidance for using PowerShell with Azure Data Lake Storage Gen1

この記事では、PowerShell を使用して Azure Data Lake Storage Gen1 を操作する際のパフォーマンスを改善するために調整できるプロパティについて説明します。This article lists the properties that can be tuned to get a better performance while using PowerShell to work with Azure Data Lake Storage Gen1:

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. インストール手順については、Azure PowerShell のインストール を参照してください。For installation instructions, see Install Azure PowerShell.

プロパティProperty 既定値Default 説明Description
PerFileThreadCountPerFileThreadCount 1010 このパラメーターを使用すると、各ファイルをアップロードまたはダウンロードする場合の並列スレッドの数を選択できます。This parameter enables you to choose the number of parallel threads for uploading or downloading each file. この数値は、1 ファイルに割り当てることができる最大スレッド数を表しますが、シナリオに応じてスレッドが少なくなる場合があります (たとえば、1 KB のファイルをアップロードする場合、20 個のスレッドを要求してもスレッドは 1 つになります)。This number represents the max threads that can be allocated per file, but you may get fewer threads depending on your scenario (for example, if you are uploading a 1-KB file, you get one thread even if you ask for 20 threads).
ConcurrentFileCountConcurrentFileCount 1010 このパラメーターは、ファイルのアップロードまたはダウンロード専用です。This parameter is specifically for uploading or downloading folders. このパラメーターによって、同時にアップロードまたはダウンロードできるファイルの数が決まります。This parameter determines the number of concurrent files that can be uploaded or downloaded. この数値は、一度にアップロードまたはダウンロードできるコンカレント ファイルの最大数を表しますが、シナリオに応じてコンカレンシーの数が少なくなる場合があります (たとえば、2 つのファイルをアップロードしている場合、15 を要求しても同時に行われるファイルのアップロードは 2 つになります)。This number represents the maximum number of concurrent files that can be uploaded or downloaded at one time, but you may get less concurrency depending on your scenario (for example, if you are uploading two files, you get two concurrent files uploads even if you ask for 15).

Example

次のコマンドは、1 ファイルにつき 20 個のスレッドと、100 個の同時実行ファイルを使用して、ファイルを Data Lake Storage Gen1 からユーザーのローカル ドライブにダウンロードします。This command downloads files from Data Lake Storage Gen1 to the user's local drive using 20 threads per file and 100 concurrent files.

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

これらのプロパティの値を決める方法How do I determine the value for these properties?

次の考慮事項は、パフォーマンスに関連するプロパティに指定する値を決める方法です。The next question you might have is how to determine what value to provide for the performance-related properties. 使用できるガイダンスがいくつかあります。Here's some guidance that you can use.

  • 手順 1:合計スレッド数を決める - まず、使用する合計スレッド数を計算する必要があります。Step 1: Determine the total thread count - You should start by calculating the total thread count to use. 一般的なガイドラインとして、各物理コアに 6 個のスレッドを使用する必要があります。As a general guideline, you should use six threads for each physical core.

      Total thread count = total physical cores * 6
    

    Example

    16 コアが搭載された D14 VM から PowerShell コマンドを実行しているとします。Assuming you are running the PowerShell commands from a D14 VM that has 16 cores

      Total thread count = 16 cores * 6 = 96 threads
    
  • 手順 2:PerFileThreadCount を計算する - ファイルのサイズに基づいて PerFileThreadCount を計算します。Step 2: Calculate PerFileThreadCount - We calculate our PerFileThreadCount based on the size of the files. 2.5 GB 未満のファイルの場合、既定値の 10 で十分なため、このパラメーターを変更する必要はありません。For files smaller than 2.5 GB, there is no need to change this parameter because the default of 10 is sufficient. 2.5 GB を超えるファイルの場合、最初の 2.5 GB に基準として 10 個のスレッドを使用し、ファイル サイズが 256 MB 増加するたびにスレッドを 1 つ追加する必要があります。For files larger than 2.5 GB, you should use 10 threads as the base for the first 2.5 GB and add 1 thread for each additional 256-MB increase in file size. コピーするフォルダーにさまざまなファイル サイズが含まれている場合は、似たようなファイル サイズに分類することを検討してください。If you are copying a folder with a large range of file sizes, consider grouping them into similar file sizes. 異なるファイル サイズがあると、最適なパフォーマンスを得られない可能性があります。Having dissimilar file sizes may cause non-optimal performance. 似たようなファイル サイズをグループ化できない場合は、最も大きいファイル サイズに基づいて PerFileThreadCount を設定する必要があります。If that's not possible to group similar file sizes, you should set PerFileThreadCount based on the largest file size.

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

    Example

    1 GB から 10 GB までさまざまなファイルが 100 個あると仮定して、式には最大ファイル サイズとして 10 GB を使用します。式は次のようになります。Assuming you have 100 files ranging from 1 GB to 10 GB, we use the 10 GB as the largest file size for equation, which would read like the following.

      PerFileThreadCount = 10 + ((10 GB - 2.5 GB) / 256 MB) = 40 threads
    
  • 手順 3:ConcurrentFilecount を計算する - 合計スレッド数と PerFileThreadCount を使用して、次の式に基づいて ConcurrentFileCount を計算します。Step 3: Calculate ConcurrentFilecount - Use the total thread count and PerFileThreadCount to calculate ConcurrentFileCount based on the following equation:

      Total thread count = PerFileThreadCount * ConcurrentFileCount
    

    Example

    ここまでに使用してきた例の値に基づきます。Based on the example values we have been using

      96 = 40 * ConcurrentFileCount
    

    結果として、ConcurrentFileCount2.4 になります。これは、2 に丸めることができます。So, ConcurrentFileCount is 2.4, which we can round off to 2.

さらなる調整Further tuning

作業対象のファイル サイズがさまざまであるため、さらなる調整が必要になる場合があります。You might require further tuning because there is a range of file sizes to work with. 上記の計算は、すべてのファイルまたはほとんどのファイルが 10 GB を超えているか 10 GB に近い場合に適しています。The preceding calculation works well if all or most of the files are larger and closer to the 10-GB range. そうではなく、多くのファイルがもっと小さく、ファイル サイズが多様な場合は、PerFileThreadCount を小さくすることができます。If instead, there are many different files sizes with many files being smaller, then you could reduce PerFileThreadCount. PerFileThreadCount を小さくすると、ConcurrentFileCount を大きくすることができます。By reducing the PerFileThreadCount, we can increase ConcurrentFileCount. そのため、ファイルの大半が 5 GB より小さいと想定した場合、次のように計算をやり直すことができます。So, if we assume that most of our files are smaller in the 5-GB range, we can redo our calculation:

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

結果として、ConcurrentFileCount は 96/20 (つまり 4.8) になり、4 に丸められます。So, ConcurrentFileCount becomes 96/20, which is 4.8, rounded off to 4.

ファイル サイズの分布に応じて PerFileThreadCount を増減することで、引き続きこれらの設定を調整できます。You can continue to tune these settings by changing the PerFileThreadCount up and down depending on the distribution of your file sizes.

制限事項Limitation

  • ファイルの数が ConcurrentFileCount より少ない:アップロードしているファイルの数が、計算した ConcurrentFileCount より小さい場合、ファイル数と等しくなるように ConcurrentFileCount を小さくする必要があります。Number of files is less than ConcurrentFileCount: If the number of files you are uploading is smaller than the ConcurrentFileCount that you calculated, then you should reduce ConcurrentFileCount to be equal to the number of files. 残りのスレッドすべてを使用して、PerFileThreadCount を大きくすることができます。You can use any remaining threads to increase PerFileThreadCount.

  • スレッドが多すぎる:クラスターのサイズを大きくせずにスレッド数を増やしすぎると、パフォーマンスの低下というリスクがあります。Too many threads: If you increase thread count too much without increasing your cluster size, you run the risk of degraded performance. CPU でのコンテキスト切り替え時に競合の問題が発生する可能性があります。There can be contention issues when context-switching on the CPU.

  • コンカレンシーが不十分:コンカレンシーが十分でない場合、クラスターが小さすぎる可能性があります。Insufficient concurrency: If the concurrency is not sufficient, then your cluster may be too small. クラスター内のノード数を増やすことで、コンカレンシーを増加させることができます。You can increase the number of nodes in your cluster, which gives you more concurrency.

  • 調整エラー:コンカレンシーがあまりに多くなると、調整エラーが表示される場合があります。Throttling errors: You may see throttling errors if your concurrency is too high. 調整エラーが表示される場合は、コンカレンシーを減らすか、Microsoft にお問い合わせください。If you are seeing throttling errors, you should either reduce the concurrency or contact us.

次の手順Next steps