Oke, jadi pertama-tama, izinkan saya untuk mengatakan bahwa saya bukan orang operasi, tetapi seorang pengembang. Jadi saya akan pergi ke sedikit tanah yang tidak dikenal di sini, jadi tolong tahan dengan saya.
Saya ingin menggunakan Mesin Virtual Azure untuk mengekstraksi file XML 50 GB dari file zip 1,9 GB. Jadi saya telah menguji ukuran instance mana pada Azure yang harus saya gunakan untuk mendapatkan kinerja yang baik sementara tidak membayar lebih dari yang saya butuhkan.
Namun, kinerja disk Azure VM tidak luar biasa, dan saya ingin tahu apakah saya yang melakukan sesuatu yang salah, atau jika hasil saya adalah yang dapat diharapkan.
Pertama-tama, dengan apa saya telah menguji? Saya memiliki aplikasi .NET konsol khusus yang tidak melakukan apa pun selain mengambil file zip sebagai argumen dan segera mulai mengekstraksi file zip ke direktori yang sama dengan file zip tersebut. Sementara ekstraksi sedang berlangsung, aplikasi menghitung berapa megabita aplikasi telah menulis ke file target per detik dan mengeluarkannya.
Pada mesin pengembangan lokal saya, saya mendapatkan kinerja yang cukup baik dengan aplikasi ini, 160-210 MB / s ditulis. Jadi seluruh proses ekstraksi memakan waktu sekitar 8 menit. Spesifikasi mesin lokal saya adalah Intel Core i7 950, 3 GHz, 4 core (8 logis), 12 GB RAM, Samsung SSD 830 seri 250 GB.
Oke, jadi saya mulai menguji berbagai ukuran instance, dan inilah hasilnya.
- Pada contoh A4 dengan Windows Server 2012 Datacenter R2 (8 core, 14 GB RAM) dengan RAID bergaris dari 4 disk virtual menggunakan akun penyimpanan yang sama, tanpa caching host, saya mendapatkan stabil 30-35 MB / s, yang berarti keseluruhan ekstraksi membutuhkan waktu 24 menit dan 48 detik. Saya juga mencoba mengaktifkan caching host, tetapi tidak benar-benar membuat perbedaan.
- Pada contoh D4 dengan Windows Server 2012 Datacenter (8 core, 28 GB RAM, 500 GB disk SSD lokal) saya mendapatkan kinerja yang sangat bagus (150+ MB / s) untuk menit-menit pertama, dan kemudian memvariasikan kinerja dengan puncak pada 200 MB / s dan lembah pada 9 MB / s. Kinerja rata-rata adalah antara 70 dan 100 MB / s. Ekstraksi membutuhkan waktu 9 menit 40 detik.
- Pada contoh D3 dengan Windows Server 2012 Datacenter (4 core, 14 GB RAM, 250 GB disk SSD lokal) saya mendapatkan kinerja yang sangat bagus (150+ MB / s) pada menit pertama, tetapi kemudian kinerja menurun menjadi stabil 20-40 MB / s, membuat proses ekstraksi membutuhkan waktu 21 menit dan 49 detik.
Pada contoh D2 dan D1, kinerja disk lebih buruk daripada pada D3.
Dan ini benar-benar mengejutkan saya. Bagaimana disk SSD lokal berkinerja sangat buruk, seperti halnya pada D1, D2 dan D3? Dan apakah ada yang tahu mengapa kinerja disk sangat berbeda antara D1 ke D4? Apakah ini masalah memori? Ketika saya melihat task manager saat ekstraksi sedang berlangsung, penggunaan memori meledak. Saya menduga itu karena Windows adalah caching data tertulis, tetapi ketika kehabisan memori, ia harus menyiram data ke disk. Ketika ini terjadi, kinerja disk menurun. Tapi ini tidak terjadi pada mesin lokal saya, jadi mengapa cache agresif seperti ini diperlukan pada VM ini?
Saya tahu ada perbedaan antara mesin lokal saya dan mesin virtual yang dihosting di Azure, tetapi apakah kinerja disk yang saya alami benar-benar diharapkan?
(Awalnya saya memposting pertanyaan saya di Stackoverflow , karena saya menduga itu adalah aplikasi saya yang menjadi penyebabnya. Tapi saya tidak begitu yakin lagi)