Prestanda för virtuella datorer och diskar

Gäller för: ✔️ Virtuella Linux-datorer ✔️ Med virtuella Windows-datorer ✔️ – flexibla skalningsuppsättningar ✔️ Enhetliga skalningsuppsättningar

Den här artikeln beskriver diskprestanda och hur det fungerar när du kombinerar Azure Virtual Machines- och Azure-diskar. Den beskriver också hur du kan diagnostisera flaskhalsar för disk-I/O och de ändringar du kan göra för att optimera prestanda.

Hur fungerar diskprestanda?

Virtuella Azure-datorer har indata-/utdataåtgärder per sekund (IOPS) och prestandagränser för dataflöde baserat på typen och storleken på den virtuella datorn. OS-diskar och datadiskar kan anslutas till virtuella datorer. Diskarna har sina egna IOPS- och dataflödesgränser.

Programmets prestanda begränsas när det begär mer IOPS eller dataflöde än vad som tilldelas för de virtuella datorerna eller de anslutna diskarna. När gränsen har nåtts får programmet suboptimala prestanda. Detta kan få negativa konsekvenser, till exempel längre svarstider. Nu ska vi gå igenom några exempel för att förtydliga det här konceptet. För att göra de här exemplen enkla att följa tittar vi bara på IOPS. Men samma logik gäller för dataflödet.

Disk-I/O-tak

Installationen:

  • Standard_D8s_v3
    • Ej iops: 12 800
  • E30 OS-disk
    • IOPS: 500
  • Två E30-datadiskar × 2
    • IOPS: 500

Diagram som visar tak på disknivå.

Programmet som körs på den virtuella datorn gör en begäran som kräver 10 000 IOPS till den virtuella datorn. Alla tillåts av den virtuella datorn eftersom den Standard_D8s_v3 virtuella datorn kan köra upp till 12 800 IOPS.

De 10 000 IOPS-begäranden delas upp i tre olika begäranden till de olika diskarna:

  • 1 000 IOPS begärs till operativsystemdisken.
  • 4 500 IOPS begärs till varje datadisk.

Alla anslutna diskar är E30-diskar och kan bara hantera 500 IOPS. De svarar alltså tillbaka med 500 IOPS vardera. Programmets prestanda begränsas av de anslutna diskarna och kan bara bearbeta 1 500 IOPS. Programmet kan fungera med högsta prestanda på 10 000 IOPS om bättre presterande diskar används, till exempel Premium SSD P30-diskar.

I/O-begränsning för virtuell dator

Installationen:

  • Standard_D8s_v3
    • Ej iops: 12 800
  • P30 OS-disk
    • IOPS: 5 000
  • Två P30-datadiskar × 2
    • IOPS: 5 000

Diagram som visar nivåtak för virtuella datorer.

Programmet som körs på den virtuella datorn gör en begäran som kräver 15 000 IOPS. Tyvärr etableras den Standard_D8s_v3 virtuella datorn bara för att hantera 12 800 IOPS. Programmet begränsas av gränserna för den virtuella datorn och måste allokera de tilldelade 12 800 IOPS.

Dessa 12 800 begärda IOPS delas upp i tre olika begäranden till de olika diskarna:

  • 4 267 IOPS begärs till operativsystemdisken.
  • 4 266 IOPS begärs till varje datadisk.

Alla anslutna diskar är P30-diskar som kan hantera 5 000 IOPS. Så de svarar tillbaka med sina begärda belopp.

Ej anslutna virtuella datorer jämfört med cachelagrade gränser

Virtuella datorer som är aktiverade för både premiumlagring och cachelagring av premiumlagring har två olika gränser för lagringsbandbredd. Låt oss titta på den Standard_D8s_v3 virtuella datorn som ett exempel. Här är dokumentationen om Dsv3-serien och Standard_D8s_v3:

Diagram som visar specifikationerna för D s v 3.

  • Det maximala dataflödet för oåtkomlig disk är den maximala standardgränsen för lagring som den virtuella datorn kan hantera.
  • Den maximala gränsen för cachelagrat lagringsdataflöde är en separat gräns när du aktiverar cachelagring av värd.

Cachelagring av värdar fungerar genom att föra lagringen närmare den virtuella datorn som kan skrivas eller läsas för snabbt. Mängden lagringsutrymme som är tillgängligt för den virtuella datorn för cachelagring av värdar finns i dokumentationen. Du kan till exempel se Standard_D8s_v3 levereras med 200 GiB cachelagring.

Du kan aktivera cachelagring av värd när du skapar din virtuella dator och ansluter diskar. Du kan också aktivera och inaktivera cachelagring av värdar på dina diskar på en befintlig virtuell dator. Som standard har cachekompatibla datadiskar skrivskyddad cachelagring aktiverat. Cachekompatibla OS-diskar har läs-/skrivcachelagring aktiverat.

Skärmbild som visar cachelagring av värd.

Du kan justera värdcachelagringen så att den matchar dina arbetsbelastningskrav för varje disk. Du kan ange att din värdcachelagring ska vara:

  • Skrivskyddad: För arbetsbelastningar som bara utför läsåtgärder
  • Läs/skriv: För arbetsbelastningar som gör en balans mellan läs- och skrivåtgärder

Om din arbetsbelastning inte följer något av dessa mönster rekommenderar vi inte att du använder cachelagring av värdar.

Nu ska vi gå igenom några exempel på olika inställningar för värdcachen för att se hur det påverkar dataflödet och prestandan. I det här första exemplet ska vi titta på vad som händer med I/O-begäranden när inställningen för cachelagring av värd har angetts till Skrivskyddad.

Installationen:

  • Standard_D8s_v3
    • Cachelagrad IOPS: 16 000
    • Ej iops: 12 800
  • P30-datadisk
    • IOPS: 5 000
    • Cachelagring av värd: Skrivskyddad

När en läsning utförs och önskade data är tillgängliga i cacheminnet returnerar cachen begärda data. Du behöver inte läsa från disken. Den här läsningen räknas mot den virtuella datorns cachelagrade gränser.

Diagram som visar lästräff för läsning av cachelagring av värd.

När en läsning utförs och önskade data inte är tillgängliga i cacheminnet vidarebefordras läsbegäran till disken. Sedan visas disken i både cacheminnet och den virtuella datorn. Den här läsningen räknas mot både den virtuella datorns gräns som inte har angetts och den virtuella datorns cachelagrade gräns.

Diagram som visar läsvärdcachelagring, läsmiss.

När en skrivning utförs måste skrivning skrivas till både cacheminnet och disken innan den anses vara klar. Den här skrivningen räknas mot den virtuella datorns gräns som inte har angetts och den virtuella datorns cachelagrade gräns.

Diagram som visar en skrivning av cachelagring av läsvärdar.

Nu ska vi titta på vad som händer med I/O-begäranden när inställningen för värdcachen är inställd på Läs/skriv.

Installationen:

  • Standard_D8s_v3
    • Cachelagrad IOPS: 16 000
    • Ej iops: 12 800
  • P30-datadisk
    • IOPS: 5 000
    • Cachelagring av värd: Läsa/skriva

En läsning hanteras på samma sätt som en skrivskyddad. Skrivningar är det enda som skiljer sig från cachelagring av läsning/skrivning. När skrivning med värdcachelagring är inställt på Läs/skriv behöver skrivningen endast skrivas till värdcachen för att anses vara slutförd. Skrivningen skrivs sedan lazily till disken när cachen töms regelbundet. Kunder kan dessutom framtvinga en tömning genom att utfärda ett f/sync- eller fua-kommando. Det innebär att en skrivning räknas mot cachelagrad I/O när den skrivs till cachen. När den skrivs lazily till disken räknas den mot den oanvända I/O.

Diagram som visar skrivning av cachelagring av läs-/skrivvärden.

Låt oss fortsätta med vår Standard_D8s_v3 virtuella dator. Förutom den här gången aktiverar vi cachelagring av värdar på diskarna. Detta gör att den virtuella datorns IOPS-gräns är 16 000 IOPS. Anslutna till den virtuella datorn är tre underliggande P30-diskar som kan hantera 5 000 IOPS vardera.

Installationen:

  • Standard_D8s_v3
    • Cachelagrad IOPS: 16 000
    • Ej iops: 12 800
  • P30 OS-disk
    • IOPS: 5 000
    • Cachelagring av värd: Läsa/skriva
  • Två P30-datadiskar × 2
    • IOPS: 5 000
    • Cachelagring av värd: Läsa/skriva

Diagram som visar ett exempel på cachelagring av värd.

Programmet använder en Standard_D8s_v3 virtuell dator med cachelagring aktiverat. Den skickar en begäran om 16 000 IOPS. Begärandena slutförs så snart de har lästs eller skrivits till cacheminnet. Skrivningar skrivs sedan lazily till de anslutna diskarna.

Kombinerade ej anslutna och cachelagrade gränser

En virtuell dators cachelagrade gränser är åtskilda från dess oåtkomliga gränser. Det innebär att du kan aktivera cachelagring av värdar på diskar som är anslutna till en virtuell dator utan att aktivera värdcachelagring på andra diskar. Med den här konfigurationen kan dina virtuella datorer få en total lagrings-I/O för den cachelagrade gränsen plus den ej anslutna gränsen.

Nu ska vi gå igenom ett exempel som hjälper dig att förstå hur dessa gränser fungerar tillsammans. Vi fortsätter med konfigurationen för den Standard_D8s_v3 virtuella datorn och premiumdiskar.

Installationen:

  • Standard_D8s_v3
    • Cachelagrad IOPS: 16 000
    • Ej iops: 12 800
  • P30 OS-disk
    • IOPS: 5 000
    • Cachelagring av värd: Läsa/skriva
  • Två P30-datadiskar × 2
    • IOPS: 5 000
    • Cachelagring av värd: Läsa/skriva
  • Två P30-datadiskar × 2
    • IOPS: 5 000
    • Cachelagring av värd: Inaktiverad

Diagram som visar ett exempel på cachelagring av värd med fjärrlagring.

I det här fallet skickar programmet som körs på en Standard_D8s_v3 virtuell dator en begäran om 25 000 IOPS. Begäran delas upp som 5 000 IOPS till var och en av de anslutna diskarna. Tre diskar använder cachelagring av värdar och två diskar använder inte värdcachelagring.

  • Eftersom de tre diskarna som använder värdcachelagring ligger inom de cachelagrade gränserna på 16 000 slutförs dessa begäranden. Inget tak för lagringsprestanda inträffar.
  • Eftersom de två diskarna som inte använder värdcachelagring ligger inom gränserna för 12 800, slutförs även dessa begäranden. Inget tak inträffar.