Inzicht in de prestatiekenmerken van schijven

Voltooid

De prestaties van toepassingen zijn vaak afhankelijk van hoe snel de toepassing gegevens kan lezen en schrijven. Als u de prestaties van toepassingen wilt verbeteren, moet u eerst begrijpen hoe de prestaties worden gemeten. Begrijp vervolgens de instellingen en keuzes die van invloed zijn op deze instellingen.

Kenmerken van schijfprestaties

Als u het juiste schijftype wilt kiezen, is het belangrijk dat u de prestatie-indicatoren begrijpt. De volgende indicatoren geven de prestaties aan:

  • IOPS (invoer-/uitvoerbewerkingen per seconde): het aantal aanvragen dat uw toepassing in één seconde naar de schijven verzendt, heeft rechtstreeks invloed op de prestaties van uw toepassing. Sommige toepassingen, zoals retailwebsites, hebben hoge IOPS nodig om alle kleine en willekeurige I/O-aanvragen (input/output) te beheren die snel moeten worden verwerkt om de site responsief te houden. Schijven met hogere prestaties hebben hogere IOPS-waarden.
  • Doorvoer: Doorvoer is de hoeveelheid gegevens die uw toepassing in een bepaald interval naar de schijven verzendt. Doorvoer wordt ook wel gegevensoverdrachtsnelheid genoemd en wordt gemeten in MB/s. Als uw toepassing I/O's met grote hoeveelheden gegevens uitvoert, is er een hoge doorvoer vereist. Schijven met hogere prestaties hebben een hogere doorvoer.
  • Latentie: Latentie geeft de tijd aan die uw app nodig heeft om een aanvraag naar de schijf te verzenden en een antwoord te ontvangen. Latentie stelt een limiet in voor effectieve IOPS. Als uw schijf bijvoorbeeld 5000 IOPS kan verwerken, maar elke bewerking 10 ms duurt, wordt uw app beperkt tot 100 bewerkingen per seconde vanwege de verwerkingstijd. De latentie is aanzienlijk verbeterd als u ReadOnly-hostcaching inschakelt.

IOPS versus doorvoer

Doorvoer en IOPS hebben een directe relatie. Het wijzigen van de ene is rechtstreeks van invloed op de andere. Als u een theoretische limiet voor doorvoer wilt ophalen, kunt u de volgende formule gebruiken: IOPS × I/O-grootte = doorvoer. Het is belangrijk om beide waarden te overwegen wanneer u uw toepassing plant.

Voor Ultra-schijven en Premium SSD v2 beheerde schijven werkt het iets anders omdat u onafhankelijk de schijfgrootte, IOPS en doorvoer kunt aanpassen. Aanpassingen aan IOPS of doorvoer voor Ultra-schijven en Premium SSD v2 beheerde schijven kunnen tijdens runtime worden uitgevoerd zonder de schijf los te koppelen van de virtuele machine (VM).

Ultra disk IOPS

Ultraschijven ondersteunen IOPS-limieten van 300 IOPS/GiB, tot maximaal 160.000 IOPS per schijf. Als u de doel-IOPS voor de schijf wilt bereiken, moet u ervoor zorgen dat de geselecteerde schijf-IOPS kleiner is dan de IOPS-limiet voor vm's.

De huidige maximumlimiet voor IOPS voor één VIRTUELE machine in algemeen beschikbare grootten is 160.000. Ultraschijven met grotere IOPS kunnen worden gebruikt als gedeelde schijven ter ondersteuning van meerdere VM's.

De minimaal gegarandeerde IOPS per schijf zijn 1 IOPS/GiB, met een totale basislijn minimaal 100 IOPS. Als u bijvoorbeeld een ultraschijf van 4 GiB hebt ingericht, is de minimale IOPS voor die schijf 100, in plaats van vier.

Ultraschijfdoorvoer

De doorvoerlimiet van één ultraschijf is 256 KiB/s voor elke ingerichte IOPS, tot maximaal 4000 MB/s per schijf (waarbij MB/s = 10^6 Bytes per seconde). De minimale gegarandeerde doorvoer per schijf is 4KiB/s voor elke ingerichte IOPS, met een algemene basislijn minimaal 1 MB/s.

Premium SSD v2 IOPS

Alle Premium SSD v2-schijven hebben een basislijn-IOPS van 3000 die gratis is. Na 6 GiB kan de maximale IOPS die een schijf heeft verhoogd met een snelheid van 500 per GiB, tot 80.000 IOPS. Een 8 GiB-schijf kan dus maximaal 4.000 IOPS hebben en een 10 GiB kan maximaal 5000 IOPS hebben. Als u 80.000 IOPS wilt instellen op een schijf, moet die schijf ten minste 160 GiBs bevatten. Door uw IOPS groter te maken dan 3000, wordt de prijs van uw schijf verhoogd.

Premium SSD v2-doorvoer

Alle Premium SSD v2-schijven hebben een basisdoorvoer van 125 MB/s die gratis zijn. Na 6 GiB neemt de maximale doorvoer die kan worden ingesteld met 0,25 MB/s per ingestelde IOPS toe. Als een schijf 3000 IOPS heeft, is de maximale doorvoer die deze kan instellen 750 MB/s. Als u de doorvoer voor deze schijf hoger wilt maken dan 750 MB/s, moet de IOPS worden verhoogd. Als u bijvoorbeeld de IOPS hebt verhoogd tot 4000, is de maximale doorvoer die kan worden ingesteld 1000. 1200 MB/s is de maximale doorvoer die wordt ondersteund voor schijven met 5.000 IOPS of meer. Door uw doorvoer te verhogen tot meer dan 125 MB/s, wordt de prijs van uw schijf verhoogd.

I/O-limieten voor virtuele machines

Nu u weet welke schijven beschikbaar zijn in Azure, moet u elk van uw VM's koppelen aan het juiste schijftype. VM's hebben hun eigen IOPS-limieten voor opslag, die van invloed kunnen zijn op de algehele toepassingsprestaties in combinatie met de IOPS van de schijf.

Als u de VM niet juist instelt voor de opslagprestaties die een toepassing nodig heeft, wordt de VM zelf een knelpunt.

Stel dat uw toepassing een aanvraag indient waarvoor 15.000 IOPS zijn vereist. U hebt een Standard_D8s_v3 VM ingericht, met één P30-besturingssysteemschijf en twee Premium SSD-gegevensschijven met P40 SKU. Elke gegevensschijf kan 7500 IOPS verwerken en uiteindelijk aan de vraag van de toepassingen voldoen. De VIRTUELE machine zelf heeft echter een maximumlimiet van 12.800 IOPS. Dit is de werkelijke IOPS die de toepassing krijgt. In de volgende afbeelding ziet u dit voorbeeld.

Diagram waarin uitvoerlimieten voor invoer van virtuele machines worden weergegeven.

Het scenario dat in het vorige voorbeeld wordt geïllustreerd, wordt vm-I/O-limieten genoemd. In dit scenario vraagt de toepassing een hoeveelheid doorvoer en IOPS aan die de schijf kan beheren, maar de VM kan niet aan deze vereisten voldoen.

U kunt de prestatieproblemen vaststellen die worden veroorzaakt door I/O-limieten voor vm's met behulp van de volgende metrische gegevens:

  • Verbruikt percentage verbruikte IOPS in cache van VM
  • Verbruikt percentage verbruikte bandbreedte in cache van VM
  • Verbruikt percentage van niet-in cache op vm's gebruikte IOPS
  • Verbruikt percentage verbruikte vm-bandbreedte zonder cache

I/O-limieten voor schijf

U kunt andere situaties tegenkomen waarin de opslagoplossing niet voldoet aan de toepassingsvereisten. Het knelpunt kan echter worden veroorzaakt als u de onjuiste prestatielaag voor de schijven selecteert.

Bekijk hetzelfde voorbeeld waarin voor de toepassing 15.000 IOPS van de VIRTUELE machine zijn vereist en u kiest de volgende installatie:

  • Standard D16s_v4 met 25.600 IOPS
  • P20-besturingssysteemschijf met 2.300 IOPS
  • Twee P30-gegevensschijven, elk met ondersteuning van 5.000 IOPS

In dit scenario is de vraag van de toepassing onderverdeeld in drie verschillende aanvragen:

  • 2.300 IOPS worden aangevraagd vanaf de besturingssysteemschijf
  • 5.000 IOPS worden aangevraagd op elke gegevensschijf

Het totale aantal IOPS dat door de VIRTUELE machine naar de toepassing wordt geretourneerd, is 12.300 als som van elke IOPS die wordt geleverd door het besturingssysteem en de gegevensschijven.

Dit scenario wordt schijf-I/O-limieten genoemd, wanneer de schijf zelf niet aan de toepassingsvereisten kan voldoen.

Diagram waarin de uitvoer van schijfinvoer wordt beperkt.

Gebruik de volgende metrische gegevens om I/O-limieten voor schijven vast te stellen:

  • Verbruikt percentage IOPS voor gegevensschijven
  • Percentage verbruikte bandbreedte van gegevensschijf
  • Verbruikt percentage IOPS van besturingssysteemschijf
  • Percentage verbruikte bandbreedte van besturingssysteemschijf

Schijfcaching

Een cache is een speciaal onderdeel dat gegevens opslaat, meestal in het geheugen, zodat de toepassing sneller toegang heeft tot de gegevens. De gegevens in een cache zijn vaak gegevens die eerder zijn gelezen of gegevens die het gevolg waren van een eerdere berekening. Het doel is dat toepassingen sneller toegang krijgen tot gegevens uit de cache dan vanaf de schijf. Schijfcache is niet beschikbaar op Ultra Disks en Premium SSD v2.

Caching maakt gebruik van gespecialiseerde en soms dure, tijdelijke opslag met snellere lees- en schrijfprestaties in vergelijking met permanente opslag. Omdat cacheopslag vaak beperkt is, moet u mogelijk bepalen welke gegevensbewerkingen het meest profiteren van caching. Maar zelfs wanneer de cache algemeen beschikbaar kan worden gemaakt, zoals in Azure, is het nog steeds belangrijk om de workloadpatronen van elke schijf te kennen voordat u besluit welk cachetype u wilt gebruiken.

Met leescaching wordt geprobeerd het ophalen van gegevens te versnellen. In plaats van uit permanente opslag te lezen, leest de toepassing de gegevens uit de snellere cache.

Het is belangrijk te weten dat lezen in cache helpt wanneer de wachtrij die u leest, voorspelbaar is, zoals een reeks opeenvolgende leesbewerkingen. Voor willekeurige I/O-gegevens waarin de gegevens die u gebruikt zich verspreidt over de opslag, is caching van weinig of geen voordeel en kan de schijfprestaties zelfs verminderen.

Met schrijfcaching wordt geprobeerd het schrijven van gegevens naar de permanente opslag te versnellen. Wanneer u een schrijfcache gebruikt, kan de app rekening houden met de gegevens die moeten worden opgeslagen.

Wanneer u schrijfcaching gebruikt, worden gegevens in de wachtrij geplaatst in een cache, wachtend op schrijven naar een schijf. U kunt zich voorstellen dat dit mechanisme een mogelijk risico vormt, zoals in het geval dat het systeem uitvalt als de gegevens in de cache nog niet zijn weggeschreven naar de opslag. Sommige systemen, zoals SQL Server, beheren de taak van het schrijven van gegevens in de cache naar permanente schijfopslag zelf.

Limieten voor virtuele machines in de cache en niet in de cache

We hebben geleerd hoe caching de prestaties voor het lezen of schrijven van gegevens op de schijf kan verbeteren. Laten we nu eens kijken hoe caching van invloed is op de prestaties van vm's.

De prestaties van de VIRTUELE machine zijn afhankelijk van de IOPS- en doorvoerlimieten die worden opgelegd op basis van de VM-grootte. Alle VM's in de Premium-laag hebben verschillende limieten voor IOPS en doorvoer op basis van configuraties in de cache en niet-cache. U kunt de prestaties van de VIRTUELE machine verbeteren om te voldoen aan de hogere vraag naar IOPS en doorvoer door caching van VM-hosts in te schakelen.

De volgende tabel bevat voorbeelden die het verschil in prestaties voor schijfdoorvoer en bandbreedte in de cache en de niet-cache aangeven.

Naam van VM-grootte Maximale doorvoer in cache en tijdelijke opslag: IOPS/MB/s (cachegrootte in GiB) Maximale IOPS/MB/s voor schijfdoorvoer zonder cache
Standard_D2s_v3 4,000/32 (50) 3,200/48
Standard_D4s_v3 8,000/64 (100) 6,400/96
Standard_D8s_v3 16,000/128 (200) 12,800/192
Standard_D64s_v3 128,000/1,024 (1,600) 80,000/1,200

Met hostcaching kunt u knelpuntscenario's voor VM's voorkomen.

In het eerdere voorbeeld van I/O-limieten voor vm's is voor de toepassing 15.000 IOPS vereist. Beide gegevensschijven kunnen deze vraag verwerken, maar de Standard_D8s_v3 VM kan slechts 12.800 IOPS bieden met de status Niet-cache.

Als u hostcaching configureert op de Standard_D8s_v3-VM, kunt u 16.000 IOPS in de cache krijgen. Dit is meer dan de vereisten van de toepassing.