Virtuele machines met lage prioriteit met Batch gebruiken
Azure Batch biedt virtuele machines (VM's) met lage prioriteit om de kosten van Batch-workloads te verlagen. VM's met lage prioriteit maken nieuwe typen Batch-workloads mogelijk doordat een grote hoeveelheid rekenkracht kan worden gebruikt tegen zeer lage kosten.
VM's met lage prioriteit profiteren van overtollige capaciteit in Azure. Wanneer u VM's met lage prioriteit in uw pools opgeeft, Azure Batch deze overtollige gebruiken, indien beschikbaar.
De afweging voor het gebruik van VM's met lage prioriteit is dat deze VM's mogelijk niet altijd beschikbaar zijn om te worden toegewezen, of op elk moment kunnen worden vereend, afhankelijk van de beschikbare capaciteit. Daarom zijn VM's met lage prioriteit het meest geschikt voor batch- en asynchrone verwerkingsworkloads waarbij de voltooiingstijd van de taak flexibel is en het werk wordt verdeeld over veel VM's.
VM's met lage prioriteit worden aangeboden tegen een aanzienlijk lagere prijs in vergelijking met toegewezen VM's. Zie Batch-prijzen voor prijsinformatie.
Notitie
Spot-VM's zijn nu beschikbaar voor VM's met één exemplaar en VM-schaalsets. Spot-VM's zijn een ontwikkeling van VM's met lage prioriteit, maar verschillen in die prijs en er kan een optionele maximumprijs worden ingesteld bij het toewijzen van spot-VM's.
Azure Batch-pools gaan in de toekomst spot-VM's ondersteunen, met nieuwe versies van de Batch-API's en -hulpprogramma's. Nadat ondersteuning voor spot-VM's beschikbaar is, worden VM's met lage prioriteit afgeschaft, hoewel ze nog minstens 12 maanden worden ondersteund met behulp van huidige API's en hulpprogrammaversies, zodat er voldoende tijd is voor migratie naar spot-VM's.
Spot-VM's worden alleen ondersteund voor VM-configuratiegroepen. Als u spot-VM's wilt gebruiken, moeten Cloud Services configuratiegroepen worden gemigreerd naar VM-configuratiegroepen.
Batchondersteuning voor VM's met lage prioriteit
Azure Batch biedt verschillende mogelijkheden die het eenvoudig maken om VM's met lage prioriteit te gebruiken en te gebruiken:
- Batchgroepen kunnen zowel toegewezen VM's als VM's met lage prioriteit bevatten. Het aantal van elk type VM kan worden opgegeven wanneer een pool wordt gemaakt of op elk moment worden gewijzigd voor een bestaande pool, met behulp van de bewerking voor expliciete het wijzigen van de omvang of met behulp van automatisch schalen. Het indienen van taken en taken kan ongewijzigd blijven, ongeacht de VM-typen in de pool. U kunt een pool ook configureren om volledig gebruik te maken van VM's met lage prioriteit om taken zo goedkoop mogelijk uit te voeren, maar speciale VM's maken als de capaciteit onder een minimumdrempel komt, om taken actief te houden.
- Batchgroepen zoeken automatisch naar het doelaantal VM's met lage prioriteit. Als VM's al dan 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 worden deze automatisch opnieuw in dequequen uitgevoerd.
- VM's met lage prioriteit hebben een afzonderlijk vCPU-quotum dat verschilt van het quotum voor toegewezen VM's. Het quotum voor VM's met lage prioriteit is hoger dan het quotum voor toegewezen VM's, omdat VM's met lage prioriteit minder kosten. Zie Quota en limieten voor Batch-service voor meer informatie.
Notitie
VM's met lage prioriteit worden momenteel niet ondersteund voor Batch-accounts die zijn gemaakt in de modus gebruikersabonnement.
Overwegingen en gebruiksgevallen
Veel Batch-workloads zijn geschikt voor VM's met lage prioriteit. U kunt ze gebruiken wanneer taken worden onderverdeeld in veel parallelle taken of wanneer u veel taken hebt die worden uitgeschaald en verdeeld over veel virtuele VM's.
Enkele voorbeelden van batchverwerkingsgebruiksvoorbeelden die geschikt zijn voor het gebruik van VM's met lage prioriteit zijn:
- Ontwikkeling en testen: Met name als er grootschalige oplossingen worden ontwikkeld, kunnen aanzienlijke besparingen worden gerealiseerd. Alle soorten tests kunnen profiteren, maar grootschalige belastingstests en regressietests zijn uitstekende toepassingen.
- Aanvullende capaciteit op aanvraag: VM's met lage prioriteit kunnen worden gebruikt als aanvulling op reguliere toegewezen VM's. Indien beschikbaar, kunnen taken sneller worden geschaald en dus sneller worden voltooid tegen lagere kosten; als deze niet beschikbaar is, blijft de basislijn van toegewezen VM's beschikbaar.
- Flexibele uitvoeringstijd van taken: als er flexibiliteit is in de tijd die taken moeten worden voltooid, kunnen potentiële capaciteitsdalingen worden getolereerd; Met de toevoeging van VM-taken met lage prioriteit worden taken echter vaak sneller en tegen lagere kosten uitgevoerd.
Batch-pools kunnen op een aantal manieren worden geconfigureerd voor het gebruik van VM's met lage prioriteit:
- Een pool kan alleen VM's met lage prioriteit gebruiken. In dit geval herstelt Batch alle capaciteit die is vereenzaakt wanneer deze beschikbaar is. Deze configuratie is de goedkoopste manier om taken uit te voeren.
- VM's met lage prioriteit kunnen worden gebruikt in combinatie met een vaste basislijn van toegewezen VM's. Het vaste aantal toegewezen VM's zorgt ervoor dat er altijd enige capaciteit is om de voortgang van een taak te behouden.
- Een pool kan een dynamische combinatie van toegewezen VM's met lage prioriteit gebruiken, zodat de goedkopere VM's met lage prioriteit alleen worden gebruikt wanneer ze beschikbaar zijn, maar de volledige VM's worden opgeschaald wanneer dat nodig is. Deze configuratie behoudt een minimale hoeveelheid capaciteit die beschikbaar is om de taken te laten door blijven gaan.
Houd rekening met het volgende bij het plannen van het gebruik van VM's met lage prioriteit:
- Om het gebruik van overtollige capaciteit in Azure te maximaliseren, kunnen geschikte taken worden uitschalen.
- Soms zijn VM's mogelijk niet beschikbaar of zijn ze verdrongen, wat leidt tot verminderde capaciteit voor taken en kan leiden tot taakonderbrekingen en opnieuw uitvoeren.
- Taken met kortere uitvoeringstijden werken meestal het beste met VM's met lage prioriteit. Taken met langere taken kunnen meer worden beïnvloed als ze worden onderbroken. Als langlopende taken controlepunten implementeren om de voortgang te besparen tijdens het uitvoeren, kan deze impact worden verminderd.
- Langlopende MPI-taken die gebruikmaken van meerdere VM's zijn niet geschikt voor het gebruik van VM's met lage prioriteit, omdat één vooraf gebruikte VM ertoe kan leiden dat de hele taak opnieuw moet worden uitgevoerd.
- Knooppunten met lage prioriteit kunnen worden gemarkeerd als onbruikbaar als NSG-regels (netwerkbeveiligingsgroep) onjuist zijn geconfigureerd.
Pools maken en beheren met VM's met lage prioriteit
Een Batch-pool kan zowel toegewezen VM's als VM's met lage prioriteit bevatten (ook wel rekenknooppunten genoemd). U kunt het doelaantal rekenknooppunten instellen voor toegewezen VM's en VM's met lage prioriteit. Het doelaantal knooppunten geeft het aantal VM's aan dat u in de pool wilt hebben.
Als u bijvoorbeeld een pool wilt maken met behulp van virtuele Azure-machines (in dit geval Linux-VM's) met als doel 5 toegewezen VM's en 20 VM's met lage prioriteit:
ImageReference imageRef = new ImageReference(
publisher: "Canonical",
offer: "UbuntuServer",
sku: "16.04-LTS",
version: "latest");
// Create the pool
VirtualMachineConfiguration virtualMachineConfiguration =
new VirtualMachineConfiguration("batch.node.ubuntu 16.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 VM's en VM's met lage prioriteit krijgen:
int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;
Poolknooppunten hebben een eigenschap om aan te geven of het knooppunt een toegewezen VM is of een VM met lage prioriteit:
bool? isNodeDedicated = poolNode.IsDedicated;
VM's kunnen af en toe worden vermeerd. Als dit gebeurt, worden taken die werden uitgevoerd op de VM's met het vervallen knooppunt, opnieuw in dequequen uitgevoerd.
Voor virtuele-machineconfiguratiepools doet Batch ook het volgende:
- De status van de VM's die zijn verpeerd, is bijgewerkt naar Preempted.
- De VM wordt verwijderd, wat leidt tot verlies van gegevens die lokaal op de VM zijn opgeslagen.
- Een lijstknooppuntenbewerking op de pool retourneerde nog steeds de daarvoor in gebruik genomen knooppunten.
- De pool probeert voortdurend het doelaantal beschikbare knooppunten met lage prioriteit te bereiken. Wanneer er een vervangende capaciteit wordt gevonden, behouden de knooppunten hun ID's, maar worden ze opnieuw geinialiseerd door de staten Maken en Starten te door te nemen voordat ze beschikbaar zijn voor taakplanning.
- Toe-eigeningstellingen zijn beschikbaar als metrische gegevens in de Azure Portal.
Pools met VM's met lage prioriteit schalen
Net als bij pools die uitsluitend bestaan uit toegewezen VM's, is het mogelijk om een pool met VM's met lage prioriteit te schalen door de methode Resize aan te roepen of door automatisch schalen te gebruiken.
De bewerking voor het aanpassen van de pool heeft een tweede optionele parameter die de waarde van targetLowPriorityNodes bij werkt:
pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);
De formule voor automatisch schalen van de pool ondersteunt VM's met lage prioriteit als volgt:
- U kunt de waarde van de door de service gedefinieerde variabele op$TargetLowPriorityNodes.
- U kunt de waarde van de door de service gedefinieerde variabele $CurrentLowPriorityNodes.
- U kunt de waarde van de door de service gedefinieerde variabele $PreemptedNodeCount. Deze variabele retourneert het aantal knooppunten met de status Preempted en stelt u in staat om het aantal toegewezen knooppunten omhoog of omlaag te schalen, afhankelijk van het aantal bestaande knooppunten dat niet beschikbaar is.
Taken en taken configureren
Voor jobs en taken is weinig aanvullende configuratie vereist voor knooppunten met lage prioriteit. Houd rekening met het volgende:
- De eigenschap JobManagerTask van een taak heeft de eigenschap AllowLowPriorityNode. Wanneer deze eigenschap true is, kan de jobbeheertaak worden gepland op een toegewezen of een knooppunt met lage prioriteit. Als deze niet waar is, wordt de jobbeheertaak 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 lage prioriteit of op een toegewezen knooppunt.
Metrische gegevens voor VM's met lage prioriteit weergeven
Nieuwe metrische gegevens zijn beschikbaar in de Azure Portal voor knooppunten met lage prioriteit. Deze metrische gegevens zijn:
- Low-Priority aantal knooppunt
- Low-Priority aantal kernen
- Aantal vooraf geprempte knooppunt
Deze metrische gegevens weergeven in de Azure Portal
- Ga in Azure Portal naar uw Batch-account.
- Selecteer Metrische gegevens in de sectie Bewaking.
- Selecteer de metrische gegevens die u wilt in de lijst Metrische gegevens.
Volgende stappen
- Meer informatie over de Werkstroom van de batch-service en primaire resources als pools, knooppunten, jobs en taken.
- Meer informatie over de Batch-API's en -hulpprogramma's die beschikbaar zijn voor het bouwen van Batch-oplossingen.
- Begin met het plannen van de overstap van VM's met lage prioriteit naar spot-VM's. Als u virtuele machines met lage prioriteit gebruikt met Cloud Services-configuratiegroepen (die zijn afgeschaft),moet u in plaats daarvan migreren naar virtuele-machineconfiguratiegroepen.