Bagikan melalui


Performa mesin virtual dan disk

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.

Diagram sistem provisi tiga tingkat yang menunjukkan bandwidth dan alokasi IOPS.

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.

Diagram sistem penyediaan tiga tingkat dengan alokasi contoh Standard_D2s_v3.

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

Diagram menunjukkan pembatasan pada tingkat disk.

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

Diagram yang menunjukkan pembatasan tingkat mesin virtual.

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. Bagan yang menunjukkan spesifikasi remote Dsv3.

  • Data disk "Di-cache" di bawah tab Penyimpanan Lokal adalah batas terpisah saat Anda mengaktifkan penembolokan host. Bagan yang menunjukkan spesifikasi lokal Dsv3.

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.

Cuplikan layar menunjukkan caching host.

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.

Diagram menunjukkan host baca yang menyimpan hasil baca yang berhasil.

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.

Diagram yang menunjukkan kegagalan baca cache host baca.

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.

Diagram memperlihatkan penulisan penembolokan host baca.

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.

Diagram menunjukkan penulisan cache host bacaan/tulisan.

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

Diagram yang menunjukkan contoh caching host.

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

Diagram menunjukkan contoh caching host dengan penyimpanan jarak jauh.

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.