Dela via


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 hjälper dig att förtydliga diskprestanda och hur det fungerar när du kombinerar Virtuella Azure-datorer 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å den virtuella datorns typ och storlek. 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. Låt oss gå igenom ett par exempel för att klargöra 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. Därför svarar de 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-tak 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 tak på virtuell datornivå.

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 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 cachelagrad virtuell dator jämfört med cachelagrade gränser

Virtuella datorer som är aktiverade för både Premium Storage- och Premium Storage-cachelagring har två olika gränser för lagringsbandbredd. Nu ska vi 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äns för lagring som den virtuella datorn kan hantera.
  • Gränsen för maximalt cachelagrat dataflöde för lagring ä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ärd 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 värdcachelagring 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 endast 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 värdcachelagring.

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ärden är inställd på 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 cacheminnet 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 en läsvärds cachelagringsläsning.

När en läsning utförs och önskade data inte är tillgängliga i cacheminnet vidarebefordras läsbegäran till disken. Sedan ytan disken till 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 skrivningen 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 fullständig. 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 cachelagring av skrivvärden för läsning/skrivning.

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ärd 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 icke-cachelagrade och cachelagrade gränser

En virtuell dators cachelagrade gränser är åtskilda från dess icke-anslutna gränser. Det innebär att du kan aktivera värdcachelagring 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 gränsen som inte har kopplats.

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 är uppdelad som 5 000 IOPS till var och en av de anslutna diskarna. Tre diskar använder värdcachelagring och två diskar använder inte värdcachelagring.

  • Eftersom de tre diskar som använder värdcachelagring ligger inom de cachelagrade gränserna på 16 000, slutförs dessa begäranden. Ingen begränsning av lagringsprestanda inträffar.
  • Eftersom de två diskar som inte använder värdcachelagring ligger inom de ej angivna gränserna på 12 800, slutförs även dessa begäranden. Inget tak inträffar.