Share via


Prestaties van virtuele machine en schijf

Van toepassing op: ✔️ Virtuele Linux-machines voor Windows-VM's ✔️ ✔️ Flexibele schaalsets Uniform-schaalsets ✔️

Dit artikel helpt de schijfprestaties te verduidelijken en hoe deze werkt wanneer u Azure Virtual Machines en Azure-schijven combineert. Ook wordt beschreven hoe u knelpunten voor uw schijf-IO kunt diagnosticeren en welke wijzigingen u kunt aanbrengen om te optimaliseren voor prestaties.

Hoe werken schijfprestaties?

Virtuele Azure-machines hebben invoer-/uitvoerbewerkingen per seconde (IOPS) en doorvoerprestatieslimieten op basis van het type en de grootte van de virtuele machine. Besturingssysteemschijven en gegevensschijven kunnen worden gekoppeld aan virtuele machines. De schijven hebben hun eigen IOPS- en doorvoerlimieten.

De prestaties van uw toepassing worden beperkt wanneer er meer IOPS of doorvoer wordt aangevraagd dan is toegewezen aan de virtuele machines of gekoppelde schijven. Indien beperkt, ervaart de toepassing suboptimale prestaties. Dit kan negatieve gevolgen hebben, zoals een verhoogde latentie. Laten we een paar voorbeelden bekijken om dit concept te verduidelijken. Om deze voorbeelden eenvoudig te volgen, kijken we alleen naar IOPS. Maar dezelfde logica is van toepassing op doorvoer.

Io-limieten voor schijf

Setup:

  • Standard_D8s_v3
    • IOPS zonder cache: 12.800
  • E30-besturingssysteemschijf
    • IOPS: 500
  • Twee E30-gegevensschijven × 2
    • IOPS: 500

Diagram met het beperken van schijfniveau.

De toepassing die op de virtuele machine wordt uitgevoerd, doet een aanvraag waarvoor 10.000 IOPS zijn vereist voor de virtuele machine. Alle vm's zijn toegestaan omdat de Standard_D8s_v3 virtuele machine maximaal 12.800 IOPS kan uitvoeren.

De 10.000 IOPS-aanvragen worden onderverdeeld in drie verschillende aanvragen voor de verschillende schijven:

  • 1000 IOPS worden aangevraagd op de besturingssysteemschijf.
  • Voor elke gegevensschijf worden 4500 IOPS aangevraagd.

Alle gekoppelde schijven zijn E30-schijven en kunnen slechts 500 IOPS verwerken. Ze reageren dus met elk 500 IOPS. De prestaties van de toepassing worden beperkt door de gekoppelde schijven en kunnen slechts 1500 IOPS verwerken. De toepassing kan werken met piekprestaties bij 10.000 IOPS als er betere prestaties worden gebruikt, zoals Premium SSD P30-schijven.

IO-limieten voor virtuele machines

Setup:

  • Standard_D8s_v3
    • IOPS zonder cache: 12.800
  • P30-besturingssysteemschijf
    • IOPS: 5.000
  • Twee P30-gegevensschijven × 2
    • IOPS: 5.000

Diagram met limieten op niveau van virtuele machines.

De toepassing die op de virtuele machine wordt uitgevoerd, doet een aanvraag waarvoor 15.000 IOPS zijn vereist. Helaas is de Standard_D8s_v3 virtuele machine alleen ingericht voor het verwerken van 12.800 IOPS. De toepassing wordt beperkt door de limieten van de virtuele machine en moet de toegewezen 12.800 IOPS toewijzen.

Deze aangevraagde 12.800 IOPS worden onderverdeeld in drie verschillende aanvragen voor de verschillende schijven:

  • 4.267 IOPS worden aangevraagd op de besturingssysteemschijf.
  • 4.266 IOPS worden aangevraagd voor elke gegevensschijf.

Alle gekoppelde schijven zijn P30-schijven die 5000 IOPS kunnen verwerken. Ze reageren dus terug met hun aangevraagde bedragen.

Limieten voor niet in cache opgeslagen virtuele machine versus in cache

Virtuele machines die zijn ingeschakeld voor zowel Premium Storage als Premium Storage Caching, hebben twee verschillende opslagbandbreedtelimieten. Laten we eens kijken naar de Standard_D8s_v3 virtuele machine als voorbeeld. Hier volgt de documentatie over de Dsv3-serie en de Standard_D8s_v3:

Grafiek met D s v 3-specificaties.

  • De maximale schijfdoorvoer zonder cache is de standaardlimiet voor de opslaglimiet die door de virtuele machine kan worden verwerkt.
  • De maximale opslagdoorvoerlimiet in de cache is een afzonderlijke limiet wanneer u hostcaching inschakelt.

Hostcaching werkt door opslag dichter bij de VIRTUELE machine te brengen die snel kan worden geschreven of gelezen. De hoeveelheid opslagruimte die beschikbaar is voor de VIRTUELE machine voor hostcaching, vindt u in de documentatie. U kunt bijvoorbeeld zien dat de Standard_D8s_v3 wordt geleverd met 200 GiB van cacheopslag.

U kunt hostcaching inschakelen wanneer u uw virtuele machine maakt en schijven koppelt. U kunt hostcache ook in- en uitschakelen op uw schijven op een bestaande VIRTUELE machine. Gegevensschijven die geschikt zijn voor cache, hebben standaard alleen-lezencaching ingeschakeld. Besturingssysteemschijven die geschikt zijn voor cache, hebben lees-/schrijfcache ingeschakeld.

Schermopname van hostcaching.

U kunt de hostcache aanpassen aan uw workloadvereisten voor elke schijf. U kunt de cache van uw host instellen op:

  • Alleen-lezen: voor workloads die alleen leesbewerkingen uitvoeren
  • Lezen/schrijven: voor workloads die een balans tussen lees- en schrijfbewerkingen uitvoeren

Als uw workload geen van deze patronen volgt, raden we u niet aan om hostcaching te gebruiken.

Laten we een paar voorbeelden bekijken van verschillende instellingen voor de hostcache om te zien hoe dit van invloed is op de gegevensstroom en prestaties. In dit eerste voorbeeld bekijken we wat er gebeurt met IO-aanvragen wanneer de instelling voor hostcaching is ingesteld op Alleen-lezen.

Setup:

  • Standard_D8s_v3
    • IOPS in cache: 16.000
    • IOPS zonder cache: 12.800
  • P30-gegevensschijf
    • IOPS: 5.000
    • Hostcaching: alleen-lezen

Wanneer een leesbewerking wordt uitgevoerd en de gewenste gegevens beschikbaar zijn in de cache, retourneert de cache de aangevraagde gegevens. Er is geen noodzaak om van de schijf te lezen. Deze leesbewerking wordt geteld naar de limieten voor de cache van de virtuele machine.

Diagram met een leesbewerking voor het opslaan in cache van een leeshost.

Wanneer een leesbewerking wordt uitgevoerd en de gewenste gegevens niet beschikbaar zijn in de cache, wordt de leesaanvraag doorgegeven aan de schijf. Vervolgens wordt deze op de schijf weergegeven in zowel de cache als de virtuele machine. Deze leesbewerking wordt geteld voor zowel de niet-cachelimiet van de virtuele machine als de limiet voor de cache van de virtuele machine.

Diagram met een leeshostcache voor leesmachtiging.

Wanneer een schrijfbewerking wordt uitgevoerd, moet de schrijfbewerking worden geschreven naar zowel de cache als de schijf voordat deze als voltooid wordt beschouwd. Deze schrijfbewerking wordt geteld naar de niet-cachelimiet van de virtuele machine en de limiet voor de cache van de virtuele machine.

Diagram met een leeshost voor het opslaan van schrijfbewerkingen in cache.

Laten we nu eens kijken wat er gebeurt met IO-aanvragen wanneer de instelling voor de hostcache is ingesteld op Lezen/schrijven.

Setup:

  • Standard_D8s_v3
    • IOPS in cache: 16.000
    • IOPS zonder cache: 12.800
  • P30-gegevensschijf
    • IOPS: 5.000
    • Hostcaching: lezen/schrijven

Een leesbewerking wordt op dezelfde manier verwerkt als een alleen-lezen. Schrijfbewerkingen zijn het enige wat anders is met caching voor lezen/schrijven. Wanneer schrijven met hostcaching is ingesteld op Lezen/schrijven, hoeft de schrijfbewerking alleen naar de hostcache te worden geschreven om als voltooid te worden beschouwd. De schrijfbewerking wordt vervolgens lazily naar de schijf geschreven wanneer de cache periodiek wordt leeggemaakt. Klanten kunnen ook een leegmaken afdwingen door een f/sync- of fua-opdracht uit te geven. Dit betekent dat een schrijfbewerking wordt geteld voor io in de cache wanneer deze naar de cache wordt geschreven. Wanneer het lui naar de schijf wordt geschreven, wordt deze meegeteld bij de niet-cache-IO.

Diagram van het opslaan in cache van lees-/schrijfhosts.

Laten we doorgaan met onze Standard_D8s_v3 virtuele machine. Behalve deze keer schakelen we hostcaching in op de schijven. Hierdoor is de IOPS van de VM beperkt tot 16.000 IOPS. Gekoppeld aan de VIRTUELE machine zijn drie onderliggende P30-schijven die elk 5000 IOPS kunnen verwerken.

Setup:

  • Standard_D8s_v3
    • IOPS in cache: 16.000
    • IOPS zonder cache: 12.800
  • P30-besturingssysteemschijf
    • IOPS: 5.000
    • Hostcaching: lezen/schrijven
  • Twee P30-gegevensschijven × 2
    • IOPS: 5.000
    • Hostcaching: lezen/schrijven

Diagram met een voorbeeld van een hostcaching.

De toepassing maakt gebruik van een Standard_D8s_v3 virtuele machine waarvoor caching is ingeschakeld. Er wordt een aanvraag ingediend voor 16.000 IOPS. De aanvragen worden voltooid zodra ze naar de cache worden gelezen of geschreven. Schrijfbewerkingen worden vervolgens lui naar de gekoppelde schijven geschreven.

Gecombineerde limieten voor niet-cache en cache

De in de cache opgeslagen limieten van een virtuele machine zijn gescheiden van de niet-cachelimieten. Dit betekent dat u hostcaching kunt inschakelen op schijven die zijn gekoppeld aan een virtuele machine terwijl u hostcaching niet inschakelt op andere schijven. Met deze configuratie kunnen uw virtuele machines een totale opslag-IO van de limiet voor de cache ophalen plus de limiet voor niet-cache.

Laten we een voorbeeld bekijken om te begrijpen hoe deze limieten samenwerken. We gaan verder met de gekoppelde configuratie van de Standard_D8s_v3 virtuele machine en Premium-schijven.

Setup:

  • Standard_D8s_v3
    • IOPS in cache: 16.000
    • IOPS zonder cache: 12.800
  • P30-besturingssysteemschijf
    • IOPS: 5.000
    • Hostcaching: lezen/schrijven
  • Twee P30-gegevensschijven × 2
    • IOPS: 5.000
    • Hostcaching: lezen/schrijven
  • Twee P30-gegevensschijven × 2
    • IOPS: 5.000
    • Hostcaching: uitgeschakeld

Diagram met een voorbeeld van hostcaching met externe opslag.

In dit geval doet de toepassing die wordt uitgevoerd op een Standard_D8s_v3 virtuele machine een aanvraag voor 25.000 IOPS. De aanvraag wordt opgesplitst als 5000 IOPS voor elk van de gekoppelde schijven. Drie schijven maken gebruik van hostcaching en twee schijven maken geen gebruik van hostcache.

  • Omdat de drie schijven die gebruikmaken van hostcaching binnen de cachelimieten van 16.000 vallen, worden deze aanvragen voltooid. Er worden geen limieten voor opslagprestaties uitgevoerd.
  • Omdat de twee schijven die geen gebruik maken van hostcaching, binnen de niet-cachelimieten van 12.800 vallen, worden deze aanvragen ook voltooid. Er gebeurt geen limiet.