Share via


Spot-VM's gebruiken met Batch-workloads

Azure Batch biedt spot-VM's (virtuele machines) om de kosten van Batch-workloads te verlagen. Spot-VM's maken nieuwe typen Batch-workloads mogelijk door een grote hoeveelheid rekenkracht in te schakelen voor een lage kosten.

Spot-VM's profiteren van overtollige capaciteit in Azure. Wanneer u spot-VM's in uw pools opgeeft, kan Azure Batch dit overschot gebruiken, indien beschikbaar.

Het nadeel voor het gebruik van spot-VM's is dat deze VM's mogelijk niet altijd beschikbaar zijn of dat ze op elk gewenst moment worden vervlekt, afhankelijk van de beschikbare capaciteit. Daarom zijn spot-VM's het meest geschikt voor batch- en asynchrone verwerkingsworkloads waarbij de voltooiingstijd van de taak flexibel is en het werk over veel VM's wordt verdeeld.

Spot-VM's worden aangeboden tegen een gereduceerde prijs vergeleken met toegewezen VM's. Zie Batch-prijzen voor meer informatie over prijzen.

Verschillen tussen spot- en VM's met lage prioriteit

Batch biedt twee typen goedkope, vooraf in aanmerking komende VM's:

Het type knooppunt dat u krijgt, is afhankelijk van de pooltoewijzingsmodus van uw Batch-account, die kan worden ingesteld tijdens het maken van het account. Batch-accounts die gebruikmaken van de toewijzingsmodus van de gebruikersabonnementsgroep , krijgen altijd spot-VM's. Batch-accounts die gebruikmaken van de door Batch beheerde pooltoewijzingsmodus, krijgen altijd VM's met lage prioriteit.

Waarschuwing

VM's met lage prioriteit worden na 30 september 2025 buiten gebruik gesteld. Migreer vóór die tijd naar spot-VM's in Batch .

Azure Spot-VM's en Batch-VM's met lage prioriteit zijn vergelijkbaar, maar hebben een paar verschillen in gedrag.

Spot-VM's Virtuele machines met lage prioriteit
Ondersteunde Batch-accounts Batch-accounts voor gebruikersabonnementen Batch-beheerde Batch-accounts
Ondersteunde Batch-poolconfiguraties Configuratie van virtuele machine Configuratie van virtuele machines en cloudserviceconfiguratie (afgeschaft)
Beschikbare regio's Alle regio's die spot-VM's ondersteunen Alle regio's, met uitzondering van Microsoft Azure beheerd door 21Vianet
Geschiktheid van de klant Niet beschikbaar voor sommige abonnementsaanbiedingstypen. Meer informatie over spot-beperkingen. Beschikbaar voor alle Batch-klanten
Mogelijke redenen voor verwijdering Capaciteit Capaciteit
Prijsmodel Variabele kortingen ten opzichte van standaard-VM-prijzen Vaste kortingen ten opzichte van standaard-VM-prijzen
Quotummodel Afhankelijk van kernquota voor uw abonnement Onderhevig aan kernquota voor uw Batch-account
SLA voor beschikbaarheid Geen Geen

Batch-ondersteuning voor spot-VM's

Azure Batch biedt verschillende mogelijkheden waarmee u eenvoudig spot-VM's kunt gebruiken en profiteren:

  • Batch-pools kunnen zowel toegewezen VM's als spot-VM's bevatten. Het aantal van elk type VIRTUELE machine kan worden opgegeven wanneer een pool wordt gemaakt of op elk gewenst moment voor een bestaande pool wordt gewijzigd met behulp van de expliciete groottebewerking of door automatische schaalaanpassing te gebruiken. Taak- en taakinzending kunnen ongewijzigd blijven, ongeacht de VM-typen in de pool. U kunt ook een pool configureren om spot-VM's volledig te gebruiken om taken zo goedkoop mogelijk uit te voeren, maar stel toegewezen VM's in als de capaciteit onder een minimumdrempel daalt, om taken actief te houden.
  • Batch-pools zoeken automatisch het doelaantal spot-VM's. Als VM's worden geprempt of niet beschikbaar zijn, probeert Batch de verloren capaciteit te vervangen en terug te keren naar het doel.
  • Wanneer taken worden onderbroken, detecteert Batch taken en voert deze automatisch opnieuw uit om opnieuw uit te voeren.
  • Spot-VM's hebben een afzonderlijk vCPU-quotum dat verschilt van het quotum voor toegewezen VM's. Het quotum voor spot-VM's is hoger dan het quotum voor toegewezen VM's, omdat spot-VM's minder kosten. Zie Quota en limieten voor Batch-services voor meer informatie.

Overwegingen en use cases

Veel Batch-workloads zijn geschikt voor spot-VM's. Overweeg spot-VM's te gebruiken wanneer taken worden onderverdeeld in veel parallelle taken of wanneer u veel taken hebt die zijn uitgeschaald en gedistribueerd over veel VM's.

Enkele voorbeelden van gebruiksvoorbeelden voor batchverwerking die geschikt zijn voor spot-VM's zijn:

  • Ontwikkeling en testen: met name als grootschalige oplossingen worden ontwikkeld, kunnen aanzienlijke besparingen worden gerealiseerd. Alle soorten tests kunnen voordeel hebben, maar grootschalige belastingstests en regressietests zijn uitstekende toepassingen.
  • Aanvulling op capaciteit op aanvraag: Spot-VM's kunnen worden gebruikt om reguliere toegewezen VM's aan te vullen. Wanneer deze beschikbaar zijn, kunnen taken sneller worden geschaald en dus sneller worden voltooid voor lagere kosten; indien niet beschikbaar, blijft de basislijn van toegewezen VM's beschikbaar.
  • Flexibele uitvoeringstijd voor taken: als er flexibiliteit is in de tijd dat taken moeten worden voltooid, kunnen potentiële dalingen in capaciteit worden getolereerd. Met de toevoeging van spot-VM's worden taken echter vaak sneller uitgevoerd en voor lagere kosten.

Batch-pools kunnen op een aantal manieren worden geconfigureerd voor het gebruik van spot-VM's:

  • Een pool kan alleen spot-VM's gebruiken. In dit geval herstelt Batch alle vooraf geïmplementeerde capaciteit wanneer deze beschikbaar is. Deze configuratie is de goedkoopste manier om taken uit te voeren.
  • Spot-VM's kunnen worden gebruikt met een vaste basislijn van toegewezen VM's. Het vaste aantal toegewezen VM's zorgt ervoor dat er altijd wat capaciteit is om de voortgang van een taak te behouden.
  • Een pool kan gebruikmaken van een dynamische mix van toegewezen en spot-VM's, zodat de goedkopere spot-VM's alleen worden gebruikt wanneer ze beschikbaar zijn, maar de volledig geprijsde toegewezen VM's zo nodig omhoog schalen. Deze configuratie houdt een minimale hoeveelheid capaciteit beschikbaar om taken verder te laten verlopen.

Houd rekening met de volgende procedures bij het plannen van uw gebruik van Spot-VM's:

  • Om het gebruik van overtollige capaciteit in Azure te maximaliseren, kunnen geschikte taken worden uitgeschaald.
  • Af en toe zijn VM's mogelijk niet beschikbaar of worden ze geprempt, wat leidt tot verminderde capaciteit voor taken en kan leiden tot onderbrekingen en opnieuw uitvoeren van taken.
  • Taken met kortere uitvoeringstijden werken meestal het beste met spot-VM's. Taken met langere taken kunnen meer worden beïnvloed als ze worden onderbroken. Als langlopende taken controlepunten implementeren om de voortgang op te slaan terwijl ze worden uitgevoerd, kan dit effect worden verminderd.
  • Langlopende MPI-taken die gebruikmaken van meerdere VM's zijn niet geschikt voor spot-VM's, omdat een vooraf geïmplementeerde VM kan leiden tot de hele taak die opnieuw moet worden uitgevoerd.
  • Spot-knooppunten kunnen als onbruikbaar worden gemarkeerd als NSG-regels (netwerkbeveiligingsgroep) onjuist zijn geconfigureerd.

Pools maken en beheren met spot-VM's

Een Batch-pool kan zowel toegewezen als spot-VM's bevatten (ook wel rekenknooppunten genoemd). U kunt het doelaantal rekenknooppunten instellen voor zowel toegewezen als spot-VM's. Het doelaantal knooppunten geeft het aantal VIRTUELE machines op dat u in de pool wilt hebben.

In het volgende voorbeeld wordt een pool gemaakt met behulp van virtuele Azure-machines, in dit geval Linux-VM's, met als doel vijf toegewezen VM's en 20 spot-VM's:

ImageReference imageRef = new ImageReference(
    publisher: "Canonical",
    offer: "UbuntuServer",
    sku: "20.04-LTS",
    version: "latest");

// Create the pool
VirtualMachineConfiguration virtualMachineConfiguration =
    new VirtualMachineConfiguration("batch.node.ubuntu 20.04", imageRef);

pool = batchClient.PoolOperations.CreatePool(
    poolId: "vmpool",
    targetDedicatedComputeNodes: 5,
    targetLowPriorityComputeNodes: 20,
    virtualMachineSize: "Standard_D2_v2",
    virtualMachineConfiguration: virtualMachineConfiguration);

U kunt het huidige aantal knooppunten voor toegewezen en spot-VM's ophalen:

int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;

Poolknooppunten hebben een eigenschap om aan te geven of het knooppunt een toegewezen of spot-VM is:

bool? isNodeDedicated = poolNode.IsDedicated;

Spot-VM's kunnen af en toe worden vervlekt. Wanneer er voorrang wordt uitgevoerd, worden taken die worden uitgevoerd op de virtuele machines van het voorbeëdigde knooppunt opnieuw in de wachtrij gebracht en opnieuw uitgevoerd wanneer de capaciteit wordt geretourneerd.

Voor virtuele-machineconfiguratiegroepen voert Batch ook het volgende gedrag uit:

  • De vooraf geïmplementeerde VM's hebben hun status bijgewerkt naar Preempted.
  • De VIRTUELE machine wordt effectief verwijderd, wat leidt tot verlies van gegevens die lokaal op de VIRTUELE machine zijn opgeslagen.
  • Een bewerking met lijstknooppunten in de pool retourneert nog steeds de vooraf geïmplementeerde knooppunten.
  • De pool probeert voortdurend het doelaantal beschikbare Spot-knooppunten te bereiken. Wanneer er vervangingscapaciteit wordt gevonden, behouden de knooppunten hun id's, maar worden opnieuw geïnitialiseerd, waarbij de status Maken en Starten wordt doorlopen voordat ze beschikbaar zijn voor taakplanning.
  • Het aantal pre-mptionen is beschikbaar als een metrische waarde in Azure Portal.

Pools schalen die spot-VM's bevatten

Net als bij pools die uitsluitend bestaan uit toegewezen VM's, is het mogelijk om een pool met spot-VM's te schalen door de Resize methode aan te roepen of door automatische schaalaanpassing te gebruiken.

De bewerking voor het wijzigen van het formaat van de pool maakt gebruik van een tweede optionele parameter waarmee de waarde van targetLowPriorityNodes:

pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);

De formule voor automatische schaalaanpassing van pools ondersteunt spot-VM's als volgt:

  • U kunt de waarde van de door de service gedefinieerde variabele $TargetLowPriorityNodesophalen of instellen.
  • U kunt de waarde van de door de service gedefinieerde variabele $CurrentLowPriorityNodesophalen.
  • U kunt de waarde van de door de service gedefinieerde variabele $PreemptedNodeCountophalen. Deze variabele retourneert het aantal knooppunten met de status vooraf en stelt u in staat om het aantal toegewezen knooppunten omhoog of omlaag te schalen, afhankelijk van het aantal voorbeëdigde knooppunten dat niet beschikbaar is.

Taken en taken configureren

Voor taken en taken is mogelijk een extra configuratie vereist voor spot-knooppunten:

  • De JobManagerTask eigenschap van een taak heeft een AllowLowPriorityNode eigenschap. Wanneer deze eigenschap waar is, kan de taak jobbeheer worden gepland op een toegewezen of spot-knooppunt. Als deze onwaar is, wordt de taak jobbeheer alleen gepland op een toegewezen knooppunt.
  • De AZ_BATCH_NODE_IS_DEDICATED omgevingsvariabele is beschikbaar voor een taaktoepassing, zodat deze kan bepalen of deze wordt uitgevoerd op een spot of op een toegewezen knooppunt.

Metrische gegevens voor spot-VM's weergeven

Er zijn nieuwe metrische gegevens beschikbaar in Azure Portal voor Spot-knooppunten. Deze metrische gegevens zijn:

  • Aantal knooppunten met lage prioriteit
  • Aantal kerngeheugens met lage prioriteit
  • Aantal vooraf geïmplementeerde knooppunten

Ga als volgt te werk om deze metrische gegevens weer te geven in Azure Portal:

  1. Ga in Azure Portal naar uw Batch-account.
  2. Selecteer Metrische gegevens in de sectie Bewaking .
  3. Selecteer de gewenste metrische gegevens in de lijst met metrische gegevens .

Beperkingen

  • Spot-VM's in Batch bieden geen ondersteuning voor het instellen van een maximumprijs en bieden geen ondersteuning voor op prijs gebaseerde verwijderingen. Ze kunnen alleen om capaciteitsredenen worden verwijderd.
  • Spot-VM's zijn alleen beschikbaar voor configuratiegroepen voor virtuele machines en niet voor cloudserviceconfiguratiegroepen, die zijn afgeschaft.
  • Spot-VM's zijn niet beschikbaar voor sommige clouds, VM-grootten en abonnementsaanbiedingstypen. Meer informatie over beperkingen voor spot-VM's.
  • Op dit moment worden tijdelijke besturingssysteemschijven niet ondersteund met spot-VM's vanwege het door de service beheerde verwijderingsbeleid van Stop-Deallocate.

Volgende stappen