Använda virtuella datorer för oanvänd kapacitet med Batch-arbetsbelastningar

Azure Batch erbjuder virtuella datorer för oanvänd kapacitet (VM) för att minska kostnaden för Batch-arbetsbelastningar. Virtuella datorer med oanvänd kapacitet möjliggör nya typer av Batch-arbetsbelastningar genom att en stor mängd beräkningskraft kan användas till en låg kostnad.

Virtuella datorer för oanvänd kapacitet drar nytta av överskottskapacitet i Azure. När du anger virtuella datorer för oanvänd kapacitet i dina pooler kan Azure Batch använda det här överskottet när det är tillgängligt.

Kompromissen med att använda virtuella datorer med oanvänd kapacitet är att de virtuella datorerna kanske inte alltid är tillgängliga, eller att de kan bli förhindrade när som helst, beroende på tillgänglig kapacitet. Därför är virtuella datorer med oanvänd kapacitet lämpligast för batch- och asynkrona bearbetningsarbetsbelastningar där slutförandetiden för jobbet är flexibel och arbetet distribueras över många virtuella datorer.

Virtuella spotdatorer erbjuds till ett lägre pris jämfört med dedikerade virtuella datorer. Mer information om priser finns i Batch-priser.

Skillnader mellan virtuella datorer med oanvänd kapacitet och låg prioritet

Batch erbjuder två typer av virtuella datorer med låg kostnad:

  • Virtuella datorer med oanvänd kapacitet, ett modernt Azure-erbjudande som även är tillgängligt som virtuella datorer med en instans eller Virtual Machine Scale Sets.
  • Lågprioriterade virtuella datorer, ett äldre erbjudande som endast är tillgängligt via Azure Batch.

Vilken typ av nod du får beror på batchkontots poolallokeringsläge, som kan anges när kontot skapas. Batch-konton som använder poolallokeringsläget för användarprenumeration får alltid virtuella datorer med oanvänd kapacitet. Batch-konton som använder batchhanterat poolallokeringsläge får alltid lågprioriterade virtuella datorer.

Varning

Virtuella datorer med låg prioritet dras tillbaka efter den 30 september 2025. Migrera till virtuella datorer för oanvänd kapacitet i Batch innan dess.

Virtuella Azure Spot-datorer och batch-lågprioriterade virtuella datorer är liknande men har några skillnader i beteende.

Virtuella Spot-datorer Lågprioriterade virtuella datorer
Batch-konton som stöds Batch-konton för användarprenumeration Batchhanterade Batch-konton
Konfigurationer för Batch-pooler som stöds Konfiguration av virtuell dator Konfiguration av virtuell dator och molntjänstkonfiguration (inaktuell)
Tillgängliga regioner Alla regioner som stöder virtuella datorer med oanvänd kapacitet Alla regioner utom Microsoft Azure China 21Vianet
Kundberättigande Inte tillgängligt för vissa typer av prenumerationserbjudande. Läs mer om begränsningar för oanvänd kapacitet. Tillgängligt för alla Batch-kunder
Möjliga orsaker till avlägsning Kapacitet Kapacitet
Prismodell Variabelrabatter i förhållande till standardpriser för virtuella datorer Fasta rabatter i förhållande till standardpriser för virtuella datorer
Kvotmodell Omfattas av kärnkvoter för din prenumeration Omfattas av kärnkvoter för ditt Batch-konto
Serviceavtal för tillgänglighet Inga Inga

Batch-stöd för virtuella datorer med oanvänd kapacitet

Azure Batch har flera funktioner som gör det enkelt att använda och dra nytta av virtuella datorer med oanvänd kapacitet:

  • Batch-pooler kan innehålla både dedikerade virtuella datorer och virtuella datorer för oanvänd kapacitet. Antalet av varje typ av virtuell dator kan anges när en pool skapas, eller ändras när som helst för en befintlig pool, med hjälp av den explicita storleksändringsåtgärden eller med autoskalning. Jobb- och uppgiftsöverföringen kan vara oförändrade, oavsett vm-typerna i poolen. Du kan också konfigurera en pool för att helt använda virtuella datorer med oanvänd kapacitet för att köra jobb så billigt som möjligt, men starta dedikerade virtuella datorer om kapaciteten sjunker under ett minimitröskelvärde för att hålla jobben igång.
  • Batch-pooler söker automatiskt efter målantalet virtuella datorer för oanvänd kapacitet. Om virtuella datorer är förinställda eller otillgängliga försöker Batch ersätta den förlorade kapaciteten och återgå till målet.
  • När aktiviteter avbryts identifierar Batch och kör automatiskt aktiviteter igen.
  • Virtuella datorer med oanvänd kapacitet har en separat vCPU-kvot som skiljer sig från den för dedikerade virtuella datorer. Kvoten för virtuella datorer med oanvänd kapacitet är högre än kvoten för dedikerade virtuella datorer, eftersom virtuella datorer med oanvänd kapacitet kostar mindre. Mer information finns i Batch-tjänstkvoter och -gränser.

Överväganden och användningsfall

Många Batch-arbetsbelastningar passar bra för virtuella datorer med oanvänd kapacitet. Överväg att använda virtuella datorer för oanvänd kapacitet när jobb delas upp i många parallella uppgifter, eller när du har många jobb som skalas ut och distribueras över många virtuella datorer.

Några exempel på användningsfall för batchbearbetning som passar bra för virtuella datorer med oanvänd kapacitet är:

  • Utveckling och testning: I synnerhet om storskaliga lösningar utvecklas kan betydande besparingar realiseras. Alla typer av tester kan vara till nytta, men storskalig belastningstestning och regressionstestning är bra användningsområden.
  • Tillägg av kapacitet på begäran: Virtuella spotdatorer kan användas för att komplettera vanliga dedikerade virtuella datorer. När det är tillgängligt kan jobb skalas och därför slutföras snabbare för lägre kostnad. När de inte är tillgängliga förblir baslinjen för dedikerade virtuella datorer tillgänglig.
  • Flexibel körningstid för jobb: Om det finns flexibilitet i den tid som jobben måste slutföras kan potentiella kapacitetsfall tolereras. Men med tillägg av virtuella datorer för oanvänd kapacitet körs jobb ofta snabbare och till en lägre kostnad.

Batch-pooler kan konfigureras för att använda virtuella datorer för oanvänd kapacitet på några olika sätt:

  • En pool kan bara använda virtuella datorer för oanvänd kapacitet. I det här fallet återställer Batch eventuell förinstallerad kapacitet när den är tillgänglig. Den här konfigurationen är det billigaste sättet att köra jobb.
  • Virtuella datorer med oanvänd kapacitet kan användas med en fast baslinje för dedikerade virtuella datorer. Det fasta antalet dedikerade virtuella datorer säkerställer att det alltid finns viss kapacitet för att fortsätta ett jobb.
  • En pool kan använda en dynamisk blandning av dedikerade och virtuella datorer med oanvänd kapacitet, så att de billigare virtuella datorerna för oanvänd kapacitet endast används när de är tillgängliga, men de dedikerade virtuella datorerna med full pris skalas upp vid behov. Den här konfigurationen håller en minsta mängd kapacitet tillgänglig så att jobben fortsätter.

Tänk på följande när du planerar att använda virtuella datorer för oanvänd kapacitet:

  • För att maximera användningen av överskottskapacitet i Azure kan lämpliga jobb skalas ut.
  • Ibland kanske virtuella datorer inte är tillgängliga eller förhindras, vilket resulterar i minskad kapacitet för jobb och kan leda till aktivitetsavbrott och omkörningar.
  • Uppgifter med kortare körningstider brukar fungera bäst med virtuella datorer med oanvänd kapacitet. Jobb med längre aktiviteter kan påverkas mer om de avbryts. Om långvariga uppgifter implementerar kontrollpunkter för att spara förlopp när de körs kan den här effekten minskas.
  • Tidskrävande MPI-jobb som använder flera virtuella datorer passar inte bra för virtuella datorer med oanvänd kapacitet, eftersom en förinstallerad virtuell dator kan leda till att hela jobbet måste köras igen.
  • Skalningsnoder för oanvändbara platser kan markeras som oanvändbara om NSG-regler (nätverkssäkerhetsgrupp) har konfigurerats felaktigt.

Skapa och hantera pooler med virtuella datorer för oanvänd kapacitet

En Batch-pool kan innehålla både dedikerade och virtuella datorer för oanvänd kapacitet (kallas även beräkningsnoder). Du kan ange målantalet beräkningsnoder för både dedikerade och virtuella datorer för oanvänd kapacitet. Målantalet noder anger antalet virtuella datorer som du vill ha i poolen.

I följande exempel skapas en pool med hjälp av virtuella Azure-datorer, i det här fallet virtuella Linux-datorer, med målet 5 dedikerade virtuella datorer och 20 virtuella datorer för oanvänd kapacitet:

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);

Du kan hämta det aktuella antalet noder för både dedikerade och virtuella datorer med oanvänd kapacitet:

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

Poolnoder har en egenskap som anger om noden är en dedikerad virtuell dator eller virtuell dator för oanvänd kapacitet:

bool? isNodeDedicated = poolNode.IsDedicated;

Virtuella datorer för oanvänd kapacitet kan ibland förhindras. När preemption inträffar placeras uppgifter som kördes på de förinställda virtuella noddatorerna i kö igen och körs igen när kapaciteten returneras.

För konfigurationspooler för virtuella datorer utför Batch även följande beteenden:

  • De förinställda virtuella datorerna har sitt tillstånd uppdaterat till Preempted.
  • Den virtuella datorn tas bort effektivt, vilket leder till förlust av data som lagras lokalt på den virtuella datorn.
  • En listnodåtgärd i poolen returnerar fortfarande de förinställda noderna.
  • Poolen försöker kontinuerligt nå målantalet tillgängliga oanvända noder. När ersättningskapacitet hittas behåller noderna sina ID:n, men de initieras igen och går igenom skapande - och starttillstånd innan de är tillgängliga för schemaläggning av uppgifter.
  • Antal preemptioner är tillgängliga som ett mått i Azure Portal.

Skala pooler som innehåller virtuella datorer med oanvänd kapacitet

Precis som med pooler som enbart består av dedikerade virtuella datorer går det att skala en pool som innehåller virtuella datorer med oanvänd kapacitet genom att anropa Resize metoden eller med hjälp av autoskalning.

Åtgärden för att ändra storlek på poolen tar en andra valfri parameter som uppdaterar värdet targetLowPriorityNodesför :

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

Formeln för automatisk poolskalning stöder virtuella datorer med oanvänd kapacitet på följande sätt:

  • Du kan hämta eller ange värdet för den tjänstdefinierade variabeln $TargetLowPriorityNodes.
  • Du kan hämta värdet för den tjänstdefinierade variabeln $CurrentLowPriorityNodes.
  • Du kan hämta värdet för den tjänstdefinierade variabeln $PreemptedNodeCount. Den här variabeln returnerar antalet noder i förinställda tillstånd och gör att du kan skala upp eller ned antalet dedikerade noder, beroende på antalet fördefinierade noder som inte är tillgängliga.

Konfigurera jobb och uppgifter

Jobb och uppgifter kan kräva lite extra konfiguration för noder med oanvänd kapacitet:

  • Egenskapen JobManagerTask för ett jobb har en AllowLowPriorityNode egenskap. När den här egenskapen är sann kan jobbhanteraraktiviteten schemaläggas på antingen en dedikerad nod eller oanvänd nod. Om det är falskt schemaläggs jobbhanteraraktiviteten endast till en dedikerad nod.
  • MiljövariabelnAZ_BATCH_NODE_IS_DEDICATED är tillgänglig för ett aktivitetsprogram så att den kan avgöra om den körs på en plats eller på en dedikerad nod.

Visa mått för virtuella datorer med oanvänd kapacitet

Nya mått är tillgängliga i Azure Portal för oanvända noder. Dessa mått är:

  • Low-Priority antal noder
  • Low-Priority antal kärnor
  • Antal fördefinierade noder

Så här visar du dessa mått i Azure Portal:

  1. Navigera till ditt Batch-konto i Azure Portal.
  2. Välj Mått i avsnittet Övervakning .
  3. Välj de mått som du vill använda i listan Mått .

Begränsningar

  • Virtuella datorer med oanvänd kapacitet i Batch har inte stöd för att ange ett maxpris och stöder inte prisbaserade borttagningar. De kan bara avlägsnas av kapacitetsskäl.
  • Virtuella datorer med oanvänd kapacitet är bara tillgängliga för konfigurationspooler för virtuella datorer och inte för molntjänstkonfigurationspooler, som är inaktuella.
  • Virtuella datorer med oanvänd kapacitet är inte tillgängliga för vissa moln, VM-storlekar och prenumerationserbjudandetyper. Läs mer om begränsningar för virtuella datorer med oanvänd kapacitet.
  • För närvarande stöds inte tillfälliga OS-diskar med virtuella datorer med oanvänd kapacitet på grund av den tjänsthanterade borttagningsprincipen stop-deallocate.

Nästa steg