Sanal makine ve disk performansı

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Windows VM'leri ✔️ Esnek ölçek kümeleri ✔️ Tekdüzen ölçek kümeleri

Bu makale, Azure Sanal Makineler ve Azure disklerini birleştirdiğinizde disk performansının ve nasıl çalıştığının netleştirilmesine yardımcı olur. Ayrıca disk GÇ'niz için performans sorunlarını nasıl tanılayabileceğiniz ve performansı iyileştirmek için yapabileceğiniz değişiklikleri de açıklar.

Disk performansı nasıl çalışır?

Azure sanal makinelerinin (VM) sanal makine türüne ve boyutuna bağlı olarak saniye başına giriş/çıkış işlemleri (IOPS) ve aktarım hızı performansı sınırları vardır. İşletim sistemi diskleri ve veri diskleri sanal makinelere eklenebilir. Diskler kendi IOPS aktarım hızı sınırlarına sahiptir.

Disk ayırma ve performans

Bant genişliği ve saniye başına G/Ç işlemlerinin (IOPS) Azure'daki bir VM'ye bağlı disklere götürebileceği üç yol vardır. Aşağıdaki diyagramda bu yolların gerçek zamanlı ayırması gösterilmiştir.

Aşağıdaki diyagramda, diskler için gerçek zamanlı bant genişliği tahsisi ve saniye başına G/Ç işlemleri (IOPS), G/Ç'nin izleyebileceği üç yol ile birlikte gösterilmektedir.

Bant genişliği ve IOPS ayırmasını gösteren üç düzeyli sağlama sisteminin diyagramı.

İlk G/Ç yolu, önbelleğe alınmamış yönetilen disk yoludur. I/O işlemleri, yönetilen disk kullanırken ve ana bilgisayar önbelleğini none olarak ayarladığınızda bu yolu kullanır. Bu yolu kullanan G/Ç işlemleri, önce disk seviyesinde sağlama, sonra da IOPS ve aktarım hızı için VM ağ seviyesinde sağlama temelinde çalışır.

İkinci G/Ç yolu, önbelleğe alınmış yönetilen disk yoludur. Önbelleğe alınmış yönetilen disk Girdi/Çıktı (G/Ç), VM'ye yakın bir SSD kullanır. Bu SSD'nin kendi sağlanan IOPS'si ve aktarım hızı vardır ve diyagramda "SSD düzeyinde sağlama" olarak görünür.

Önbelleğe alınmış bir yönetilen disk bir okuma başlattığında, istek önce verilerin sunucu SSD'sinde olup olmadığını denetler. Veriler mevcut değilse, önbellekte bir kayıp oluşur. Ardından G/Ç, SSD düzeyinde sağlama, disk düzeyi sağlama ve ardından IOPS ve aktarım hızı için VM ağ düzeyinde sağlama temelinde çalışır.

Sunucu SSD,sunucu SSD'sinde bulunan önbelleğe alınmış G/Ç'de okuma işlemi başlattığında önbellek isabeti gerçekleşir. Ardından G/Ç, SSD düzeyinde sağlamayı temel alarak çalışır. Önbelleğe alınmış yönetilen diskin her zaman bir önbellek eksikliği yolunu izleyerek başlatıldığını yazar. SSD düzeyi, disk düzeyi ve VM ağ düzeyinde provisioning işlemi gerçekleştirirler.

Üçüncü yol Yerel/Geçici disk içindir. Yalnızca Yerel/Geçici diskleri destekleyen VM'lerde kullanılabilir. Bu yolu kullanan bir G/Ç işlemi, IOPS ve aktarım hızı için SSD düzeyinde tahsis temelinde çalışır.

Aşağıdaki diyagramda bu sınırlamaların bir örneği gösterilmiştir. Sistem, ssd ve ağ düzeylerindeki sınırlar nedeniyle bir Standard_D2s_v3 VM'nin önbelleğe alınmış olsun veya olmasın P30 diskinin 5.000 IOPS potansiyeline ulaşmasını engeller.

Standard_D2s_v3 örnek tahsisi içeren üç seviyeli sağlama sisteminin diyagramı.

Azure, disk trafiği için öncelikli bir ağ kanalı kullanır. Disk trafiği düşük öncelikli ağ trafiğine göre önceliklidir. Bu öncelik belirleme, ağ çekişmesi olduğunda disklerin beklenen performanslarını korumalarına yardımcı olur.

Benzer şekilde, Azure Depolama otomatik yük dengeleme ile arka planda kaynak çekişmeleri ve diğer sorunları işler. Azure Depolama, disk oluşturduğunuzda gerekli kaynakları ayırır ve trafik düzeyini işlemek için kaynakların proaktif ve reaktif dengelemesini uygular. Bu davranış, disklerin beklenen IOPS ve aktarım hızı hedeflerini sürdürebilmesini de sağlar. Performansı izlemek ve gerektiği gibi uyarılar ayarlamak için VM düzeyinde ve disk düzeyinde ölçümler kullanın.

Disk GÇ eşlemesi

Uygulamanızın performansı, sanal makineler veya bağlı diskler için ayrılandan daha fazla IOPS veya aktarım hızı istediğinde sınırlanır. Eşlendiğinde, uygulama en iyi olmayan performansla karşılaşır. Bu da artan gecikme süresine gibi olumsuz sonuçlara yol açabilir. Şimdi bu kavramı netleştirmek için birkaç örnek inceleyelim. Bu örnekleri izlemeyi kolaylaştırmak için yalnızca IOPS'ye bakacağız. Bununla birlikte, aynı mantık aktarım hızı için de geçerlidir.

Kurulum:

  • Standard_D8s_v3
    • Kazınmamış IOPS: 12.800
  • E30 işletim sistemi diski
    • IOPS: 500
  • İki E30 veri diski × 2
    • IOPS: 500

Disk düzeyi sınırlamayı gösteren diyagram.

Sanal makinede çalışan uygulama, sanal makineye 10.000 IOPS gerektiren bir istekte bulunur. Standard_D8s_v3 sanal makinesi en fazla 12.800 IOPS yürütebileceğinden, bunların tümüne VM tarafından izin verilir.

10.000 IOPS isteği, farklı disklere yönelik üç farklı isteğe ayrılır:

  • İşletim sistemi diskine 1.000 IOPS istenir.
  • Her veri diskine 4.500 IOPS istenir.

Tüm bağlı diskler E30 diskleridir ve yalnızca 500 IOPS işleyebilir. Bu nedenle, her biri 500 IOPS ile yanıt veriyor. Uygulamanın performansı bağlı diskler tarafından sınırlandırılır ve sadece 1.500 IOPS işleyebilir. Premium SSD P30 diskleri gibi daha iyi performanslı diskler kullanılırsa uygulama 10.000 IOPS'de en yüksek performansta çalışabilir.

Sanal makine GÇ sınırlandırması

Kurulum:

  • Standard_D8s_v3
    • Kazınmamış IOPS: 12.800
  • P30 işletim sistemi diski
    • IOPS: 5.000
  • İki P30 veri diski × 2
    • IOPS: 5.000

Sanal makine düzeyi sınırlamayı gösteren diyagram.

Sanal makinede çalışan uygulama 15.000 IOPS gerektiren bir istekte bulunur. Ne yazık ki, Standard_D8s_v3 sanal makinesi yalnızca 12.800 IOPS işlemek için sağlanır. Uygulama sanal makine sınırlarıyla sınırlıdır ve tahsis edilen 12.800 IOPS'yi kullanması gerekir.

İstenen 12.800 IOPS, farklı disklere yönelik üç farklı isteğe ayrılır:

  • İşletim sistemi diskine 4.267 IOPS istenir.
  • Her veri diskine 4.266 IOPS istenir.

Tüm bağlı diskler, 5.000 IOPS işleyebilen P30 disklerdir. Bu nedenle, istedikleri miktarları belirterek yanıt verirler.

Sanal makine kazınmamış ve önbelleğe alınmış sınırlar karşılaştırması

Hem premium depolama hem de premium depolama önbelleği için etkinleştirilen sanal makinelerin iki farklı depolama bant genişliği sınırı vardır. Şimdi örnek olarak Standard_D8s_v3 sanal makinesine bakalım. Dsv3 serisi ve Standard_D8s_v3 belgeleri aşağıdadır:

  • Önbelleğe Alınmamış disk verileri, Uzak Depolama'nın altındaki sanal makinenin işleyebileceği varsayılan depolama üst sınırıdır. Dsv3 uzaktan özelliklerini gösteren grafik.

  • Ana bilgisayar önbelleğini etkinleştirdiğinizde, Yerel Depolama sekmesinin altındaki "Önbelleğe alınmış" disk verileri ayrı sınırlardır. Dsv3 yerel belirtimlerini gösteren grafik.

Ana bilgisayar önbelleğe alma, depolamayı hızlı bir şekilde yazılabilen veya okunabilen VM'ye yaklaştırarak çalışır. VM'nin ev sahibi önbelleğe alma için kullanabileceği depolama alanı miktarı belgelerde yer almaktadır. Örneğin, Standard_D8s_v3 200 GiB önbellek depolama alanıyla birlikte geldiğini görebilirsiniz.

Sanal makinenizi oluştururken ve disk eklerken konak önbelleğini etkinleştirebilirsiniz. Mevcut bir VM'de diskleriniz için ana bilgisayar önbelleklemesini açıp kapatabilirsiniz. Varsayılan olarak, önbellek özellikli veri disklerinde önbelleğe alma etkin değildir. Önbellek özellikli işletim sistemi disklerinde okuma/yazma önbelleği etkindir.

Konak önbelleğe almayı gösteren ekran görüntüsü.

Konak önbelleğini her disk için iş yükü gereksinimlerinize uyacak şekilde ayarlayabilirsiniz. Ana bilgisayar önbelleğinizi şu şekilde ayarlayabilirsiniz:

  • Yalnızca-okuma: Yalnızca okuma işlemleri gerçekleştiren iş yükleri için
  • Okuma/yazma: Okuma ve yazma işlemlerini dengeleyen iş yükleri için

İş yükünüz bu desenlerden herhangi birini izlemiyorsa konak önbelleğe alma kullanmanızı önermeyiz.

Veri akışını ve performansı nasıl etkilediğini görmek için birkaç farklı konak önbelleği ayarı örneğini inceleyelim. Bu ilk örnekte, konak önbelleğe alma ayarı Salt okunur olarak ayarlandığında G/Ç isteklerinde neler olduğunu görüyoruz.

Kurulum:

  • Standard_D8s_v3
    • Önbelleğe Alınmış IOPS: 16.000
    • Kazınmamış IOPS: 12.800
  • P30 veri diski
    • IOPS: 5.000
    • Konak önbelleğe alma: Salt okunur

Bir okuma gerçekleştirildiğinde ve istenen veriler önbellekte kullanılabilir olduğunda, önbellek istenen verileri döndürür. Diskten okumanız gerekmez. Bu okuma, VM'nin önbelleğe alınan sınırlarına göre sayılır.

Okuma isabetini önbelleğe alan okuma konağını gösteren diyagram.

Bir okuma işlemi gerçekleştirildiğinde ve istenen veriler önbellekte kullanılamadığında , okuma isteği diske iletilir. Ardından disk bunu hem önbelleğe hem de VM'ye gösterir. Bu okuma hem VM'nin önbelleğe alınmamış sınırına hem de VM'nin önbelleğe alınmış sınırına doğru sayılır.

Okuma konağı önbelleğe alma okuma yanıtını gösteren diyagram.

Yazma işlemi gerçekleştirildiğinde, yazma işleminin tamamlandı olarak kabul edilmesi için önce hem önbelleğe hem de diske yazılması gerekir. Bu yazma, VM'nin önbelleklenmemiş sınırına ve VM'nin önbelleğe alınmış sınırına doğru sayılır.

Read host'un yazma önbellekleme işlemini gösteren diyagram.

Önce ana bilgisayar önbelleği ayarı Okuma/yazma olarak ayarlandığında GÇ isteklerinde neler olduğuna bakalım.

Kurulum:

  • Standard_D8s_v3
    • Önbelleğe Alınmış IOPS: 16.000
    • Kazınmamış IOPS: 12.800
  • P30 veri diski
    • IOPS: 5.000
    • Ana bilgisayar önbelleğe alma: Okuma/yazma

Okuma, salt okunur dosya ile aynı şekilde işlenir. Okuma/yazma önbelleğe almada farklı olan tek şey yazma işlemleridir. Konak önbelleğe alma okuma/yazma olarak ayarlandığında, yazma işleminin tamamlandığının kabul edilmesi için yalnızca konak önbelleğine yazılması gerekir. Daha sonra önbellek düzenli aralıklarla temizlendiğinde yazma işlemi diske tembelce yazılır. Müşteriler ayrıca f/sync veya fua komutunu vererek temizleme işlemini zorlayabilir. Bu, bir yazmanın önbelleğe yazıldığında önbelleğe alınmış GÇ olarak sayılacağı anlamına gelir. Diske tembelce yazıldığında, önbelleklenmemiş G/Ç'ye sayılır.

Okuma/yazma host önbelleğe alma yazma işlemini gösteren diyagram.

şimdi Standard_D8s_v3 sanal makinemizle devam edelim. Ancak bu kez, disklerde ana bilgisayar önbelleğe almayı etkinleştireceğiz. Bu, VM'nin IOPS sınırını 16.000 IOPS yapar. Sanal makineye (VM) eklenen, her birinin 5.000 IOPS işleyebildiği altta yatan üç P30 disk var.

Kurulum:

  • Standard_D8s_v3
    • Önbelleğe Alınmış IOPS: 16.000
    • Kazınmamış IOPS: 12.800
  • P30 işletim sistemi diski
    • IOPS: 5.000
    • Ana bilgisayar önbelleğe alma: Okuma/yazma
  • İki P30 veri diski × 2
    • IOPS: 5.000
    • Ana bilgisayar önbelleğe alma: Okuma/yazma

Konak önbelleğe alma örneğini gösteren diyagram.

Uygulama, önbelleğe alma özelliği etkinleştirilmiş Standard_D8s_v3 bir sanal makine kullanır. 16.000 IOPS isteğinde bulunur. İstekler, önbelleğe okunduklarında veya yazıldıklarında tamamlanır. Yazma işlemleri daha sonra bağlı disklere yavaşça yazılır.

Önbelleğe alınmamış ve önbelleğe alınmış birleşik sınırlar

Sanal makinenin önbelleğe alınan sınırları, önbelleğe alınmamış sınırlarından ayrıdır. Bu, diğer disklerde konak önbelleğe alma etkin değilken, bir VM'ye bağlı disklerde konak önbelleğe almayı etkinleştirebileceğiniz anlamına gelir. Bu yapılandırma, sanal makinelerinizin, önbelleğe alınan sınır ile önbelleğe alınmamış sınırın toplamının depolama GÇ değerini elde etmesine olanak tanır.

Şimdi bu sınırların birlikte nasıl çalıştığını anlamanıza yardımcı olacak bir örneği inceleyelim. Standard_D8s_v3 sanal makine ve premium diskler ekli yapılandırma ile devam ediyoruz.

Kurulum:

  • Standard_D8s_v3
    • Önbelleğe Alınmış IOPS: 16.000
    • Kazınmamış IOPS: 12.800
  • P30 işletim sistemi diski
    • IOPS: 5.000
    • Ana bilgisayar önbelleğe alma: Okuma/yazma
  • İki P30 veri diski × 2
    • IOPS: 5.000
    • Ana bilgisayar önbelleğe alma: Okuma/yazma
  • İki P30 veri diski × 2
    • IOPS: 5.000
    • Konak önbelleğe alma: Devre dışı

Uzak depolama ile konak önbelleğe alma örneğini gösteren diyagram.

Bu durumda, Standard_D8s_v3 bir sanal makinede çalışan uygulama 25.000 IOPS isteğinde bulunur. İstek, bağlı disklerin her birine 5.000 IOPS olarak dağıtılmıştır. Üç disk konak önbelleğe alma kullanır ve iki disk konak önbelleğe alma kullanmaz.

  • Ana bilgisayar önbelleğe alma kullanan üç disk, 16.000 önbellek sınırı içinde bulunduğundan, bu istekler başarıyla tamamlanır. Depolama performansı sınırlaması gerçekleşmez.
  • Ana bilgisayar önbelleği kullanmayan iki disk 12.800'e kadar olan önbelleksiz sınırlar içinde olduğundan, bu istekler de başarıyla tamamlanır. Hiçbir sınırlama gerçekleşmez.