Kinerja disk yang lambat di Mesin Virtual Azure

9

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)

René
sumber

Jawaban:

7

Agak terlambat ke pesta di sini, tetapi untuk apa itu layak "terpasang" SSD di Azure memiliki IOP mereka dicekik berdasarkan ukuran mesin. Itu tidak disebutkan dalam harga di mana pun tetapi saya mengangkat masalah ini sebagai tiket dengan dukungan teknis ketika mereka merujuk saya ke posting blog di bawah ini.

Lihat tautan ini: http://azure.microsoft.com/blog/2014/10/06/d-series-performance-expectations/

Richard Hauer
sumber
Info bagus, terima kasih Richard! Saya curiga itu ada hubungannya dengan pelambatan, tetapi pada saat itu saya tidak dapat menemukan informasi spesifik tentang itu. Posting blog itu menjawab pertanyaan saya.
René
azure limit disk io..what sih..aku beralih ke google cloud .. mereka tidak membatasi ini dan harga jauh lebih murah.
tyan
4

Mungkin itu tidak terkait dengan memori. Disk "fisik" pada Azure menggunakan apa yang disebut penyimpanan Blob dan itulah sebabnya kinerjanya tidak sama dengan di komputer lokal Anda bahkan dengan perangkat keras yang sama. Anda dapat menemukan informasi lebih lanjut tentang tautan ini . Ini tampaknya menjadi masalah umum bagi komunitas SQL Server yang sangat bergantung pada kinerja disk. Saya akan mengutip artikel yang saya temukan tentangnya

Pedoman Kinerja untuk SQL Server dalam Azure VMs whitepaper menyebutkan (pada halaman 15 dan 26) bahwa dalam Azure VMs, Storage Spaces dapat digunakan untuk meningkatkan kinerja penyimpanan untuk beban kerja SQL Server

Storage Spaces adalah fitur bawaan Windows Server 2012 yang memungkinkan Anda menggunakan beberapa disk fisik untuk membuat satu disk virtual tunggal, karenanya sebagai solusi untuk keterbatasan I / O disk VM itu sendiri. Mengutip lagi:

Dengan VM yang lebih besar yang mendukung banyak (hingga 16) disk fisik, peningkatan kinerja penyimpanan yang sangat signifikan dimungkinkan. Ini dapat mengaktifkan Azure sebagai platform yang layak untuk banyak beban kerja SQL yang akan terlalu dibatasi oleh kinerja I / O dari satu disk Azure.

Artikel ini akan menunjukkan kepada Anda langkah-langkah untuk membuat ruang penyimpanan.

Anda harus mencoba ini dulu. Mungkin Anda bahkan dapat menggunakan instance yang lebih kecil karena layanan penyimpanan adalah layanan terpisah dari instance itu sendiri.

Bruno Faria
sumber
Anda benar bahwa disk standar pada Azure benar-benar menggunakan Blob Storage, tapi saya tidak percaya itu yang terjadi pada disk SSD. Menurut informasi yang diberikan Microsoft saya, ini adalah disk SSD fisik lokal. Dan ketika itu terjadi, saya pikir itu aneh bahwa kinerjanya sangat berbeda antara ukuran instance D. Mengenai Spaces Penyimpanan: Saya menjelajahi ini dan melakukan beberapa tes, tapi sayangnya itu tidak benar-benar memberi saya keuntungan kinerja yang nyata. Pada akhirnya, saya sampai pada kesimpulan bahwa saya hanya harus menerima bahwa saya perlu menggunakan ukuran instance yang lebih besar untuk tugas ini.
René
1
@ René apakah Anda memiliki kesempatan untuk menguji Azure Storage Premium baru? Maaf telah membahas topik lama ini, tetapi saya cukup ingin tahu bagaimana kinerja penyimpanan baru ini di lingkungan Anda.
Bruno Faria
Maaf untuk keterlambatan jawaban saya. Tip hebat tentang Azure Storage Premium. Saya belum mencobanya karena belum tersedia di wilayah saya. Tapi aku akan mengawasinya. Terima kasih lagi!
René