Dela via


Prestanda för virtuella datorer och diskar

Gäller för: ✔️ Virtuella Linux-datorer ✔️ 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 (VM) har indata-/utdataåtgärder per sekund (IOPS) och prestandagränser för dataflöde baserat på vm-typ och storlek. OS-diskar och datadiskar kan anslutas till Virtual Machines. Diskarna har sina egna IOPS- och dataflödesgränser.

Diskallokering och prestanda

Det finns tre vägar som bandbredd och I/O-operationer per sekund (IOPS) kan ta till diskar som är anslutna till en VM i Azure. Följande diagram visar realtidsallokering av dessa sökvägar.

Följande diagram visar realtidsallokering av bandbredd och I/O-åtgärder per sekund (IOPS) för diskar, med tre sökvägar som I/O kan ta.

Diagram över ett etableringssystem på tre nivåer som visar bandbredd och IOPS-allokering.

Den första I/O-sökvägen är den o-cachade sökvägen för hanterade diskar. I/O-åtgärder använder denna sökväg när du använder en hanterad disk och konfigurerar värdcachning till none. I/O-åtgärder som använder den här sökvägen körs baserat på etablering på disknivå och sedan etablering på virtuell dator på nätverksnivå för IOPS och dataflöde.

Den andra I/O-vägen är den cachelagrade hanterade diskvägen. I/O för cachelagrad hanterad disk använder en SSD nära den virtuella datorn. Denna SSD har sina egna provisionerade IOPS och genomflöde, och det visas som "SSD-nivå provisionering" i diagrammet.

När en cachelagrad hanterad disk initierar en läsning kontrollerar begäran först om data finns i serverns SSD. Om data inte finns sker en cachemiss. Sedan körs I/O baserat på etablering på SSD-nivå, etablering på disknivå och sedan etablering på vm-nätverksnivå för IOPS och dataflöde.

När server-SSD initierar läsningar på cachelagrat I/O som finns på serverns SSD uppstår en cacheträff. I/O körs sedan baserat på provisionering på SSD-nivå. Skrivningar som en cachelagrad hanterad disk initierar följer alltid sökvägen till en cachelagrad miss. De går igenom konfiguration på SSD-nivå, disknivå och nätverksnivå för virtuella datorer.

Den tredje sökvägen är för den lokala/temporära disken. Den är bara tillgänglig på virtuella datorer som stöder lokala/temporära diskar. En I/O-åtgärd som använder den här sökvägen körs baserat på SSD-nivåetablering för IOPS och dataflöde.

Följande diagram visar ett exempel på dessa begränsningar. Systemet förhindrar att en Standard_D2s_v3 virtuell dator uppnår 5 000 IOPS-potentialen för en P30-disk, oavsett om den cachelagras eller inte, på grund av begränsningar på SSD- och nätverksnivå.

Diagram över etableringssystemet på tre nivåer med en Standard_D2s_v3 exempelallokering.

Azure använder en prioriterad nätverkskanal för disktrafik. Disktrafik har företräde framför nätverkstrafik med låg prioritet. Den här prioriteringen hjälper diskar att upprätthålla sina förväntade prestanda om det uppstår nätverkskonkurrering.

På samma sätt hanterar Azure Storage resurskonkurreringar och andra problem i bakgrunden med automatisk belastningsutjämning. Azure Storage allokerar nödvändiga resurser när du skapar en disk och tillämpar proaktiv och reaktiv balansering av resurser för att hantera trafiknivån. Det här beteendet säkerställer ytterligare att diskar kan upprätthålla sina förväntade IOPS- och dataflödesmål. Använd mått på VM-nivå och disknivå för att spåra prestanda och konfigurera aviseringar efter behov.

Disk-I/O-begränsning

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 genomflödet.

Installation:

  • Standard_D8s_v3
    • Okäschade IOPS: 12 800
  • E30 OS-disk
    • IOPS: 500
  • Två E30-datadiskar × 2
    • IOPS: 500

Diagram som visar begränsning 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

Installation:

  • Standard_D8s_v3
    • Okäschade IOPS: 12 800
  • P30 OS-disk
    • IOPS: 5 000
  • Två P30-datadiskar × 2
    • IOPS: 5 000

Diagram som visar begränsning på virtuell datornivå.

Programmet som körs på den virtuella datorn gör en begäran som kräver 15 000 IOPS. Tyvärr är den virtuella datorn Standard_D8s_v3 bara etablerad 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:

  • Ocachead diskdata i Fjärrlagring är de standard maximala lagringsgränser som den virtuella maskinen kan hantera. Diagram som visar fjärrspecifikationer för Dsv3.

  • "Cachelagrade diskdata under fliken Lokal lagring är separata gränser när du aktiverar värdcachelagring." Diagram som visar lokala specifikationer för Dsv3.

Cachelagring på värdar fungerar genom att föra lagringen närmare den virtuella datorn som snabbt kan skrivas till eller läsas från. 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. Cachekompatibla datadiskar har som standard inte 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 arbetslaster som innebä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 ser vi vad som händer med I/O-begäranden när inställningen för värdcachelagring är inställd på Skrivskyddad.

Installation:

  • Standard_D8s_v3
    • Cachelagrad IOPS: 16 000
    • Okäschade IOPS: 12 800
  • P30-datadisk
    • IOPS: 5 000
    • Cachelagring av värd: Endast läsning

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 cacheträff vid läsvärdshantering.

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

Diagram som visar en cachemiss vid läsvärdscachelagring.

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 ogränsade gräns och den cachelagrade gränsen.

Diagram som visar cachelagringsskrivning för en läshost.

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.

Installation:

  • Standard_D8s_v3
    • Cachelagrad IOPS: 16 000
    • Okäschade 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 endast läsning. Det är skrivningarna som skiljer sig när det gäller cachelagring av läs- och skrivprocesser. 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 sker fördröjt 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 fördröjd till disken räknas den mot den ocachade I/O.

Diagram som visar värd-cachelagring av skrivning vid 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.

Installation:

  • Standard_D8s_v3
    • Cachelagrad IOPS: 16 000
    • Okäschade 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. Skrivoperationer skrivs sedan efterhand till de anslutna diskarna.

Kombinerade icke-cachelagrade och cachelagrade gränser

En virtuell dators cachelagrade gränser är åtskilda från dess icke-cachelagrade 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-prestanda för den cachelagrade gränsen plus den ogränsade 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 virtuella datorn Standard_D8s_v3 och premiumdiskar.

Installation:

  • Standard_D8s_v3
    • Cachelagrad IOPS: 16 000
    • Okäschade 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 till 5 000 IOPS till vardera 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. Ingen begränsning sker.