이 문서에서는 PowerShell을 사용하여 Data Lake Storage Gen1을 사용하는 동안 성능 향상을 위해 조정할 수 있는 속성에 대해 설명합니다.
비고
Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치 를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법을 알아보려면 AzureRM에서 Az로 Azure PowerShell 마이그레이션을 참조하세요.
성능 관련 속성
| 재산 | 기본값 | 설명 |
|---|---|---|
| PerFileThreadCount | 10 | 이 매개 변수를 사용하면 각 파일을 업로드하거나 다운로드하기 위한 병렬 스레드 수를 선택할 수 있습니다. 이 숫자는 파일당 할당할 수 있는 최대 스레드를 나타내지만 시나리오에 따라 스레드 수가 적을 수 있습니다(예를 들어 1KB 파일을 업로드하는 경우 20개의 스레드를 요청하더라도 스레드를 하나 얻습니다). |
| 동시파일개수 | 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단계: 총 스레드 수 결정 - 사용할 총 스레드 수를 계산하여 시작합니다. 일반적인 지침에서는 각 물리적 코어에 대해 6개의 스레드를 사용해야 합니다.
Total thread count = total physical cores * 6본보기:
16개의 코어가 있는 D14 VM에서 PowerShell 명령을 실행한다고 가정합니다.
Total thread count = 16 cores * 6 = 96 threads2단계: PerFileThreadCount 계산 - 파일 크기에 따라 PerFileThreadCount를 계산합니다. 2.5GB보다 작은 파일의 경우 기본값 10으로 충분하므로 이 매개 변수를 변경할 필요가 없습니다. 2.5GB보다 큰 파일의 경우 처음 2.5GB의 기본으로 10개의 스레드를 사용하고 파일 크기가 256MB 증가할 때마다 1개의 스레드를 추가해야 합니다. 파일 크기가 큰 폴더를 복사하는 경우 비슷한 파일 크기로 그룹화해 보세요. 파일 크기가 서로 다른 경우 성능이 최적화되지 않을 수 있습니다. 유사한 파일 크기를 그룹화할 수 없는 경우 가장 큰 파일 크기에 따라 PerFileThreadCount를 설정해야 합니다.
PerFileThreadCount = 10 threads for the first 2.5 GB + 1 thread for each additional 256 MB increase in file size본보기:
1GB에서 10GB에 이르는 100개의 파일이 있다고 가정하면 수식에 가장 큰 파일 크기로 10GB를 사용합니다. 이 파일 크기는 다음과 같습니다.
PerFileThreadCount = 10 + ((10 GB - 2.5 GB) / 256 MB) = 40 threads3단계: ConcurrentFilecount 계산 - 총 스레드 수 및 PerFileThreadCount를 사용하여 다음 수식을 기반으로 ConcurrentFileCount를 계산합니다.
Total thread count = PerFileThreadCount * ConcurrentFileCount본보기:
사용 중인 예제 값에 따라
96 = 40 * ConcurrentFileCount따라서 ConcurrentFileCount는 2.4이며 2로 반올림할 수 있습니다.
추가 튜닝
작업할 파일 크기의 범위가 있으므로 추가 튜닝이 필요할 수 있습니다. 파일의 전체 또는 대부분이 10GB 범위에 가까울 경우 위의 계산이 잘 작동합니다. 파일 크기가 다양하고, 많은 파일의 크기가 더 작다면 PerFileThreadCount를 줄일 수 있습니다. PerFileThreadCount를 줄이면 ConcurrentFileCount를 늘릴 수 있습니다. 따라서 대부분의 파일이 5GB 범위에서 더 작다고 가정하면 계산을 다시 실행할 수 있습니다.
PerFileThreadCount = 10 + ((5 GB - 2.5 GB) / 256 MB) = 20
따라서 ConcurrentFileCount 는 4.8인 96/20이 되고 4로 반올림됩니다.
파일 크기의 분포에 따라 PerFileThreadCount 를 위아래로 변경하여 이러한 설정을 계속 조정할 수 있습니다.
제한 사항
파일 수가 ConcurrentFileCount보다 작습니다. 업로드하는 파일 수가 계산한 ConcurrentFileCount 보다 작은 경우 ConcurrentFileCount 를 파일 수와 동일하게 줄여야 합니다. 남은 스레드를 사용하여 PerFileThreadCount를 늘릴 수 있습니다.
너무 많은 스레드: 클러스터 크기를 늘리지 않고 스레드 수를 너무 많이 늘리면 성능이 저하될 위험이 있습니다. CPU에서 컨텍스트 전환을 할 때 경합 문제가 발생할 수 있습니다.
동시성 부족: 동시성이 충분하지 않으면 클러스터가 너무 작을 수 있습니다. 클러스터의 노드 수를 늘려 더 많은 동시성을 제공할 수 있습니다.
제한 오류: 동시성이 너무 높을 경우, 제한 오류가 발생할 수 있습니다. 제한 오류가 표시되는 경우 동시성을 줄이거나 저희에게 연락하시기 바랍니다.