Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: ✔️ VM Linux ✔️ VM Windows ✔️ Pengaturan skala fleksibel ✔️ Pengaturan skala seragam
Artikel ini membantu mengklarifikasi performa disk dan cara kerjanya saat Anda menggabungkan Azure Virtual Machines dan disk Azure. Ini juga menjelaskan bagaimana Anda dapat mendiagnosis hambatan pada IO disk Anda dan perubahan yang dapat Anda lakukan untuk mengoptimalkan kinerja.
Bagaimana kinerja disk bekerja?
Mesin virtual (VM) Azure memiliki batas performa operasi masukan/keluaran per detik (IOPS) dan batas throughput berdasarkan jenis dan ukuran VM. Disk OS dan disk data dapat dipasang pada mesin virtual. Disk memiliki batas IOPS dan throughput masing-masing.
Alokasi disk dan kinerja
Ada tiga rute yang dapat diambil oleh bandwidth dan operasi I/O per detik (IOPS) ke disk yang terpasang pada VM di Azure. Diagram berikut menggambarkan alokasi real time jalur ini.
Diagram berikut menggambarkan alokasi waktu nyata untuk bandwidth dan operasi I/O per detik (IOPS) pada disk, dengan tiga jalur yang dapat diambil oleh I/O.
Jalur I/O pertama adalah jalur disk yang dikelola tanpa cache. Operasi I/O menggunakan path ini ketika Anda memakai disk terkelola dan mengatur penyimpanan sementara host ke none. Operasi I/O yang menggunakan jalur ini berjalan berdasarkan provisi tingkat disk lalu provisi tingkat jaringan VM untuk IOPS dan throughput.
Jalur I/O kedua adalah jalur disk terkelola yang di-cache. I/O disk terkelola yang di-cache menggunakan SSD yang dekat dengan VM. SSD ini memiliki IOPS dan throughput yang ditentukan sendiri, dan hal tersebut tampak sebagai "provisioning tingkat SSD" dalam diagram.
Ketika sebuah disk terkelola yang tersimpan dalam cache memulai proses pembacaan, permintaan tersebut pertama-tama memeriksa untuk melihat apakah data tersebut berada di SSD server. Jika data tidak ada, terjadi cache miss. Kemudian I/O berjalan berdasarkan provisi tingkat SSD, provisi tingkat disk, lalu provisi tingkat jaringan VM untuk IOPS dan throughput.
Ketika SSD server melakukan pembacaan pada I/O cache yang ada di SSD server, terjadi hit cache. I/O kemudian berjalan berdasarkan penyediaan di tingkat SSD. Menulis bahwa inisiasi disk terkelola yang di-cache selalu mengikuti jalur cache miss. Mereka melalui penyediaan pada tingkat SSD, disk, dan jaringan pada tingkat VM.
Jalur ketiga adalah untuk disk Local/Temp. Ini hanya tersedia di VM yang mendukung disk Lokal/Sementara . Operasi I/O yang menggunakan jalur ini berjalan berdasarkan penyediaan tingkat SSD untuk IOPS dan throughput.
Diagram berikut menggambarkan contoh batasan ini. Sistem mencegah VM Standard_D2s_v3 untuk mencapai potensi 5.000 IOPS dari disk P30, baik jika menggunakan cache atau tidak, karena batasan pada tingkat SSD dan jaringan.
Azure menggunakan saluran jaringan yang diprioritaskan untuk lalu lintas disk. Lalu lintas disk lebih diutamakan daripada lalu lintas jaringan prioritas rendah. Prioritas ini membantu disk mempertahankan performa yang diharapkan jika ada persaingan jaringan.
Demikian pula, Azure Storage menangani persaingan sumber daya dan masalah lain di latar belakang dengan penyeimbangan beban otomatis. Azure Storage mengalokasikan sumber daya yang diperlukan ketika Anda membuat disk, dan menerapkan keseimbangan sumber daya secara proaktif dan reaktif untuk menangani tingkat lalu lintas. Perilaku ini lebih lanjut memastikan bahwa disk dapat mempertahankan target IOPS dan throughput yang diharapkan. Gunakan metrik tingkat VM dan tingkat disk untuk melacak performa dan menyiapkan pemberitahuan sesuai kebutuhan.
Pembatasan IO Disk
Kinerja aplikasi Anda akan dibatasi ketika meminta lebih banyak IOPS atau throughput daripada yang dialokasikan untuk mesin virtual atau disk yang terpasang. Ketika dibatasi, aplikasi mengalami kinerja yang kurang optimal. Hal ini dapat menyebabkan konsekuensi negatif seperti peningkatan keterlambatan. Mari kita bahas beberapa contoh untuk memperjelas konsep ini. Untuk membuat contoh-contoh ini mudah diikuti, kita hanya akan melihat pada IOPS. Namun, logika yang sama berlaku untuk throughput.
Setup:
- Standard_D8s_v3
- IOPS yang tidak di-cache: 12.800
- Disk E30 OS
- IOPS: 500
- Dua disk data E30 × 2
- IOPS: 500
Aplikasi yang berjalan pada komputer virtual membuat permintaan yang memerlukan 10.000 IOPS ke komputer virtual. Semua ini diizinkan oleh VM karena mesin virtual Standard_D8s_v3 dapat menjalankan hingga 12.800 IOPS.
Permintaan 10.000 IOPS tersebut dipecah menjadi tiga permintaan berbeda ke berbagai disk.
- 1,000 IOPS diminta ke disk sistem operasi.
- 4.500 IOPS diminta untuk setiap disk data.
Semua disk terpasang adalah disk E30 dan hanya dapat menangani 500 IOPS. Jadi, mereka merespons kembali dengan 500 IOPS masing-masing. Kinerja aplikasi dibatasi oleh disk yang terpasang, dan hanya dapat memproses 1.500 IOPS. Aplikasi dapat beroperasi pada kinerja puncak di 10.000 IOPS jika menggunakan disk dengan performa lebih baik, seperti disk Premium SSD P30.
Pembatasan IO komputer virtual
Setup:
- Standard_D8s_v3
- IOPS yang tidak di-cache: 12.800
- Disk OS P30
- IOPS: 5.000
- Dua disk data P30 × 2
- IOPS: 5.000
Aplikasi yang berjalan di mesin virtual mengajukan permintaan yang membutuhkan 15,000 IOPS. Sayangnya, mesin virtual Standard_D8s_v3 hanya disediakan untuk menangani 12.800 IOPS. Aplikasi dibatasi oleh batasan mesin virtual dan harus mengalokasikan 12.800 IOPS yang telah dialokasikan.
Permintaan IOPS sebesar 12,800 tersebut dibagi menjadi tiga permintaan berbeda ke disk-disk yang berbeda.
- 4.267 IOPS diminta ke disk sistem operasi.
- 4.266 IOPS diminta ke setiap disk data.
Semua disk yang terpasang adalah disk P30 yang dapat menangani 5.000 IOPS. Jadi, mereka merespons kembali dengan jumlah yang diminta.
Komputer virtual tidak di-cache vs batas cache
Mesin virtual yang diaktifkan untuk penyimpanan premium dan caching penyimpanan premium memiliki dua batasan bandwidth penyimpanan yang berbeda. Mari kita lihat komputer virtual Standard_D8s_v3 sebagai contoh. Berikut adalah dokumentasi tentang seri Dsv3 dan Standard_D8s_v3:
Data disk "Uncached" di bawah Remote Storage adalah batas maksimum penyimpanan default yang dapat ditangani oleh mesin virtual.
Data disk "Di-cache" di bawah tab Penyimpanan Lokal adalah batas terpisah saat Anda mengaktifkan penembolokan host.
Host caching bekerja dengan cara mendekatkan penyimpanan ke VM sehingga dapat ditulis atau dibaca dengan cepat. Jumlah penyimpanan yang tersedia untuk VM untuk caching host terdapat dalam dokumentasi. Misalnya, Anda dapat melihat Standard_D8s_v3 dilengkapi dengan penyimpanan cache 200 GiB.
Anda dapat mengaktifkan caching host saat Anda membuat mesin virtual dan memasang disk. Anda juga dapat mengaktifkan dan menonaktifkan penembolokan host pada disk Anda pada VM yang ada. Secara default, disk data yang mendukung cache tidak memiliki cache yang diaktifkan. Disk OS yang mendukung cache memiliki caching baca/tulis yang diaktifkan.
Anda dapat menyesuaikan penembolokan host agar sesuai dengan persyaratan beban kerja Anda untuk setiap disk. Anda dapat mengatur cache host Anda menjadi:
- Read-only: Untuk beban kerja yang hanya melakukan operasi pembacaan
- Baca/tulis: Untuk beban kerja yang seimbang antara operasi baca dan tulis
Jika beban kerja Anda tidak mengikuti salah satu pola ini, kami tidak merekomendasikan Anda untuk menggunakan host caching.
Mari kita lihat beberapa contoh pengaturan cache host yang berbeda untuk melihat bagaimana hal itu mempengaruhi aliran data dan kinerja. Dalam contoh pertama ini, kita melihat apa yang terjadi dengan permintaan IO ketika pengaturan caching host disetel ke Read-only.
Setup:
- Standard_D8s_v3
- IOPS yang di-cache: 16.000
- IOPS yang tidak di-cache: 12.800
- Data disk P30
- IOPS: 5.000
- Penembolokan host: Baca-saja
Ketika pembacaan dilakukan dan data yang diinginkan tersedia di cache, cache mengembalikan data yang diminta. Tidak perlu membaca dari disk. Pembacaan ini dihitung terhadap batas yang di-cache untuk VM.
Ketika pembacaan dilakukan dan data yang diinginkan tidak tersedia dalam cache, permintaan pembacaan diteruskan ke disk. Kemudian disk mengarahkannya ke cache dan VM. Bacaan ini dihitung terhadap batas tidak dalam cache dan batas dalam cache VM.
Ketika penulisan dilakukan, tulisan harus ditulis ke cache dan disk sebelum dianggap selesai. Penulisan ini dihitung terhadap batas tidak di-cache VM dan batas yang di-cache VM.
Selanjutnya, mari kita lihat apa yang terjadi dengan permintaan IO ketika pengaturan cache host disetel ke Read/write.
Setup:
- Standard_D8s_v3
- IOPS yang di-cache: 16.000
- IOPS yang tidak di-cache: 12.800
- Disk dengan data P30
- IOPS: 5.000
- Penyimpanan sementara host: Baca/tulis
Pembacaan ditangani dengan cara yang sama seperti hanya-baca. Penulisan adalah satu-satunya hal yang berbeda dengan pengaturan cache baca/tulis. Saat penulisan dengan cache host diatur ke Baca/tulis, penulisan hanya perlu dituliskan ke cache host untuk dianggap selesai. Penulisan kemudian dilakukan dengan perlahan ke disk ketika cache dibersihkan secara berkala. Pelanggan juga dapat memaksa flush dengan memberikan perintah f/sync atau fua . Ini berarti bahwa sebuah penulisan dihitung sebagai cached IO ketika ditulis ke dalam cache. Ketika ditulis ke disk dengan malas, itu dihitung sebagai IO yang tidak di-cache.
Mari kita lanjutkan dengan komputer virtual Standard_D8s_v3 kita. Kecuali kali ini, kami mengaktifkan caching host pada disk. Ini membuat batas IOPS VM menjadi 16.000 IOPS. Terlampir pada VM adalah tiga disk P30 yang mendasari, di mana masing-masing dapat menangani 5.000 IOPS.
Setup:
- Standard_D8s_v3
- IOPS yang di-cache: 16.000
- IOPS yang tidak di-cache: 12.800
- Disk P30 OS
- IOPS: 5.000
- Penembolokan host: Baca/tulis
- Dua disk data P30 × 2
- IOPS: 5.000
- Penembolokan host: Baca/tulis
Aplikasi ini menggunakan mesin virtual Standard_D8s_v3 dengan caching diaktifkan. Ini membuat permintaan untuk 16.000 IOPS. Permintaan selesai begitu mereka dibaca atau ditulis ke dalam cache. Data kemudian ditulis secara perlahan ke Disk yang terpasang.
Batas gabungan yang tidak di-cache dan di-cache
Batas yang di-cache dari mesin virtual terpisah dari batas yang tidak di-cache. Ini berarti Anda dapat mengaktifkan caching host pada disk yang terpasang pada VM, tetapi tidak mengaktifkan caching host pada disk lainnya. Konfigurasi ini memungkinkan mesin virtual Anda mendapatkan total IO penyimpanan dari batas yang di-cache ditambah batas yang tidak di-cache.
Mari kita lihat sebuah contoh untuk membantu Anda memahami bagaimana batasan-batasan ini bekerja bersama. Kami melanjutkan dengan komputer virtual Standard_D8s_v3 dan konfigurasi disk premium yang terpasang.
Setup:
- Standard_D8s_v3
- IOPS yang di-cache: 16.000
- IOPS yang tidak di-cache: 12.800
- Disk P30 OS
- IOPS: 5.000
- Penembolokan host: Baca/tulis
- Dua disk data P30 × 2
- IOPS: 5.000
- Penembolokan host: Baca/tulis
- Dua disk data P30 × 2
- IOPS: 5.000
- Host caching: Dinonaktifkan
Dalam hal ini, aplikasi yang berjalan pada mesin virtual Standard_D8s_v3 membuat permintaan untuk 25.000 IOPS. Permintaan dibagi menjadi masing-masing 5.000 IOPS ke setiap disk yang terpasang. Tiga disk menggunakan cache host dan dua disk tidak memakai cache host.
- Karena ketiga disk yang menggunakan cache host berada dalam batas cache sebesar 16.000, permintaan tersebut berhasil diselesaikan. Tidak ada pembatasan kinerja penyimpanan yang terjadi.
- Karena dua disk yang tidak menggunakan penembolokan host berada dalam batas 12.800 yang tidak di-cache, permintaan tersebut juga berhasil diselesaikan. Tidak ada pembatasan yang terjadi.