Panduan penyetelan kinerja untuk menggunakan PowerShell dengan Azure Data Lake Storage Gen1
Artikel ini menjelaskan properti yang bisa Anda selaraskan untuk mendapatkan performa yang lebih baik saat menggunakan PowerShell untuk bekerja dengan Data Lake Storage Gen1.
Catatan
Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.
Properti terkait performa
Properti | Default | Deskripsi |
---|---|---|
PerFileThreadCount | 10 | Parameter ini memungkinkan Anda memilih jumlah utas paralel untuk mengunggah atau mengunduh setiap file. Angka ini menunjukkan utas maks yang dapat dialokasikan per file, tetapi Anda mungkin mendapatkan lebih sedikit utas tergantung pada skenario (misalnya, jika Anda mengunggah file 1-KB, Anda mendapatkan satu utas meskipun Anda meminta 20 utas). |
ConcurrentFileCount | 10 | Parameter ini khusus untuk mengunggah atau mengunduh folder. Parameter ini menentukan jumlah file konkuren yang dapat diunggah atau diunduh. Angka ini menunjukkan jumlah maksimum file konkuren yang dapat diunggah atau diunduh secara bersamaan, tetapi Anda mungkin mendapatkan lebih sedikit konkurensi tergantung pada skenario (misalnya, jika Anda mengunggah dua file, Anda mendapatkan dua unggahan file bersamaan meskipun Anda meminta 15). |
Contoh:
Perintah ini mengunduh file dari Data Lake Storage Gen1 ke drive lokal pengguna menggunakan 20 utas per file dan 100 file bersamaan.
Export-AzDataLakeStoreItem -AccountName "Data Lake Storage Gen1 account name" `
-PerFileThreadCount 20 `
-ConcurrentFileCount 100 `
-Path /Powershell/100GB `
-Destination C:\Performance\ `
-Force `
-Recurse
Cara menentukan nilai properti
Pertanyaan berikutnya yang mungkin Anda miliki adalah bagaimana menentukan nilai apa yang akan ditentukan untuk properti terkait performa. Berikut adalah beberapa panduan yang dapat Anda gunakan.
Langkah 1: Tentukan jumlah total utas - Mulai dengan menghitung jumlah total utas yang akan digunakan. Sebagai pedoman umum, Anda harus menggunakan enam utas untuk setiap inti fisik.
Total thread count = total physical cores * 6
Contoh:
Berasumsi Anda menjalankan perintah PowerShell dari D14 VM yang memiliki 16 inti
Total thread count = 16 cores * 6 = 96 threads
Langkah 2: Hitung PerFileThreadCount - Kita menghitung PerFileThreadCount berdasarkan ukuran file. Untuk file yang lebih kecil dari 2,5 GB, tidak perlu mengubah parameter ini karena default 10 sudah mencukupi. Untuk file yang lebih besar dari 2,5 GB, Anda harus menggunakan 10 utas sebagai basis untuk 2,5 GB pertama dan menambahkan 1 utas untuk setiap peningkatan ukuran file 256-MB tambahan. Jika Anda menyalin folder dengan berbagai ukuran file, pertimbangkan untuk mengelompokkannya ke dalam ukuran file yang sama. Memiliki ukuran file yang berbeda dapat menyebabkan performa tidak optimal. Jika tidak memungkinkan untuk mengelompokkan ukuran file serupa, Anda harus mengatur PerFileThreadCount berdasarkan ukuran file terbesar.
PerFileThreadCount = 10 threads for the first 2.5 GB + 1 thread for each additional 256 MB increase in file size
Contoh:
Dengan asumsi Anda memiliki 100 file mulai dari 1 GB hingga 10 GB, kita menggunakan 10 GB sebagai ukuran file terbesar untuk persamaan, yang akan dibaca seperti berikut ini.
PerFileThreadCount = 10 + ((10 GB - 2.5 GB) / 256 MB) = 40 threads
Langkah 3: Hitung ConcurrentFilecount - Gunakan jumlah total utas dan PerFileThreadCount untuk menghitung ConcurrentFileCount berdasarkan persamaan berikut:
Total thread count = PerFileThreadCount * ConcurrentFileCount
Contoh:
Berdasarkan nilai contoh yang telah kita gunakan
96 = 40 * ConcurrentFileCount
Jadi, ConcurrentFileCount adalah 2.4, yang kita dapat bulatkan ke 2.
Penyetelan lebih lanjut
Anda mungkin memerlukan penyetelan lebih lanjut karena ada berbagai ukuran file untuk dikerjakan. Penghitungan sebelumnya berfungsi dengan baik jika semua atau sebagian besar file lebih besar dan lebih mendekati kisaran 10-GB. Jika sebaliknya, ada banyak ukuran file yang berbeda dengan banyak file yang lebih kecil, maka Anda dapat mengurangi PerFileThreadCount. Dengan mengurangi PerFileThreadCount, kita dapat meningkatkan ConcurrentFileCount. Jadi, jika kita berasumsi bahwa sebagian besar file kita lebih kecil dalam kisaran 5-GB, kita dapat mengulangi penghitungan:
PerFileThreadCount = 10 + ((5 GB - 2.5 GB) / 256 MB) = 20
Jadi, ConcurrentFileCount menjadi 96/20, yaitu 4,8, dibulatkan ke 4.
Anda dapat terus menyetel pengaturan ini dengan mengubah PerFileThreadCount naik atau turun tergantung pada distribusi ukuran file Anda.
Batasan
Jumlah file kurang dari ConcurrentFileCount: Jika jumlah file yang Anda unggah lebih kecil dari ConcurrentFileCount yang dihitung, maka Anda harus mengurangi ConcurrentFileCount agar sama dengan jumlah file. Anda dapat menggunakan sisa utas untuk meningkatkan PerFileThreadCount.
Terlalu banyak utas: Jika Anda terlalu banyak meningkatkan jumlah utas tanpa meningkatkan ukuran kluster, Anda berisiko mengalami penurunan performa. Mungkin ada masalah ketidaksesuaian saat mengalihkan konteks pada CPU.
Konkurensi tidak mencukupi: Jika konkurensinya tidak mencukupi, maka kluster Anda mungkin terlalu kecil. Anda dapat meningkatkan jumlah simpul di kluster, yang memberi Anda lebih banyak konkurensi.
Kesalahan pembatasan: Anda mungkin melihat kesalahan pembatasan jika konkurensi terlalu tinggi. Jika Anda melihat kesalahan pembatasan, Anda harus mengurangi konkurensi atau menghubungi kami.