Använda lågprioriterade virtuella datorer med Batch
Azure Batch erbjuder virtuella datorer med låg prioritet för att minska kostnaden för Batch-arbetsbelastningar. Virtuella datorer med låg prioritet gör det möjligt att använda nya typer av Batch-arbetsbelastningar genom att göra det möjligt att använda en stor mängd beräkningskraft till en mycket låg kostnad.
Virtuella datorer med låg prioritet utnyttjar överkapacitet i Azure. När du anger virtuella datorer med låg prioritet i dina pooler kan Azure Batch använda det här överskottet när det är tillgängligt.
Kompromissen med att använda lågprioriterade virtuella datorer är att de virtuella datorerna kanske inte alltid är tillgängliga att allokeras eller kan tas bort när som helst, beroende på tillgänglig kapacitet. Därför är lågprioriterade virtuella datorer mest lämpliga för batchbaserade och asynkrona bearbetningsarbetsbelastningar där jobbens slutförandetid är flexibel och arbetet distribueras över många virtuella datorer.
Virtuella datorer med låg prioritet erbjuds till ett betydligt lägre pris jämfört med dedikerade virtuella datorer. Prisinformation finns i Batch-priser.
Anteckning
Virtuella spot-datorer är nu tillgängliga för virtuella datorer med en instans och VM Scale Sets. Virtuella spot-datorer är en utveckling av lågprioriterade virtuella datorer, men de skiljer sig åt i att priserna kan variera och ett valfritt högsta pris kan anges när du allokerar virtuella spot-datorer.
Azure Batch-pooler kommer att börja stödja virtuella spot-datorer i framtiden, med nya versioner av Batch-API:erna och verktygen. När stöd för virtuella spot-datorer är tillgängligt kommer lågprioriterade virtuella datorer att bli inaktuella, även om de kommer att fortsätta att stödjas med hjälp av aktuella API:er och verktygsversioner i minst 12 månader, för att ge tillräckligt med tid för migrering till virtuella datorer för oskadd plats.
Virtuella spot-datorer stöds endast för konfigurationspooler för virtuella datorer. Om du vill använda virtuella datorer med Cloud Services måste alla konfigurationspooler för virtuella datorer migreras till konfigurationspooler för virtuella datorer.
Batch-stöd för lågprioriterade virtuella datorer
Azure Batch har flera funktioner som gör det enkelt att använda och dra nytta av virtuella datorer med låg prioritet:
- Batch-pooler kan innehålla både dedikerade virtuella datorer och lågprioriterade virtuella datorer. Antalet 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 explicit storleksändring eller automatisk skalning. Jobb- och uppgiftsinskickning kan vara oförändrade, oavsett vm-typer i poolen. Du kan också konfigurera en pool för att helt använda virtuella datorer med låg prioritet för att köra jobb så billigt som möjligt, men skapa dedikerade virtuella datorer om kapaciteten sjunker under ett minimitröskelvärde för att hålla jobb igång.
- Batch-pooler söker automatiskt efter målantalet för virtuella datorer med låg prioritet. Om de virtuella datorerna är avmålade eller otillgängliga försöker Batch att ersätta den förlorade kapaciteten och återgå till målet.
- När aktiviteter avbryts identifierar och kör Batch automatiskt aktiviteter i ett återköer för att köras igen.
- Virtuella datorer med låg prioritet har en separat vCPU-kvot som skiljer sig från den för dedikerade virtuella datorer. Kvoten för lågprioriterade virtuella datorer är högre än kvoten för dedikerade virtuella datorer, eftersom lågprioriterade virtuella datorer kostar mindre. Mer information finns i Batch-tjänstens kvoter och begränsningar.
Anteckning
Lågprioriterade virtuella datorer stöds för närvarande inte för Batch-konton som skapats i användarprenumerationsläge.
Överväganden och användningsfall
Många Batch-arbetsbelastningar passar bra för virtuella datorer med låg prioritet. Överväg att använda dem när jobb är indelade i många parallella uppgifter, eller när du har många jobb som skalas ut och distribueras på många virtuella datorer.
Några exempel på användningsfall för batchbearbetning som är väl lämpade för att använda lågprioriterade virtuella datorer är:
- Utveckling och testning: I synnerhet om storskaliga lösningar utvecklas kan betydande besparingar realiseras. Alla typer av testning kan vara till nytta, men storskalig belastningstestning och regressionstestning är bra användning.
- Komplettera kapacitet på begäran: Lågprioriterade virtuella datorer kan användas som komplement till vanliga dedikerade virtuella datorer. När det är tillgängligt kan jobb skalas och därför slutföras snabbare till lägre kostnad. När de inte är tillgängliga förblir baslinjen för dedikerade virtuella datorer tillgänglig.
- Flexibel jobbkörningstid: Om det finns flexibilitet i den tid som jobben måste slutföras kan potentiella kapacitetsfall tolereras. Men med tillägget av jobb för virtuella datorer med låg prioritet körs jobb ofta snabbare och till en lägre kostnad.
Batch-pooler kan konfigureras för att använda lågprioriterade virtuella datorer på några olika sätt:
- En pool kan bara använda lågprioriterade virtuella datorer. I det här fallet återställer Batch eventuellt avindelade kapaciteter när det är tillgängligt. Den här konfigurationen är det billigaste sättet att köra jobb.
- Lågprioriterade virtuella datorer kan användas tillsammans 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 ett jobb ska fortsätta att gå framåt.
- En pool kan använda en dynamisk blandning av dedikerade och lågprioriterade virtuella datorer, så att de billigare lågprioriterade virtuella datorerna endast används när de är tillgängliga, men de dedikerade virtuella datorerna med fullpris skalas upp när det behövs. Den här konfigurationen behåller en minsta mängd kapacitet som är tillgänglig för att jobben ska fortsätta att fortsätta.
Tänk på följande när du planerar din användning av lågprioriterade virtuella datorer:
- För att maximera användningen av överkapacitet i Azure kan lämpliga jobb skalas ut.
- Ibland kanske virtuella datorer inte är tillgängliga eller avbryts, 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 låg prioritet. Jobb med längre uppgifter kan påverkas mer om de avbryts. Om långvariga uppgifter implementerar kontrollpunkter för att spara förloppet när de körs kan den här effekten minskas.
- Långvariga MPI-jobb som använder flera virtuella datorer passar inte bra för att använda lågprioriterade virtuella datorer, eftersom en virtuell dator som körs i förväg kan leda till att hela jobbet måste köras igen.
- Noder med låg prioritet kan markeras som oanvändbara om regler för nätverkssäkerhetsgrupp (NSG) är felaktigt konfigurerade.
Skapa och hantera pooler med lågprioriterade virtuella datorer
En Batch-pool kan innehålla både dedikerade och lågprioriterade virtuella datorer (kallas även beräkningsnoder). Du kan ange målantalet beräkningsnoder för både dedikerade och lågprioriterade virtuella datorer. Målantalet noder anger antalet virtuella datorer som du vill ha i poolen.
Om du till exempel vill skapa 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 med låg prioritet:
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);
Du kan hämta det aktuella antalet noder för både dedikerade och lågprioriterade virtuella datorer:
int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;
Poolnoder har en egenskap som anger om noden är en dedikerad eller lågprioriterad virtuell dator:
bool? isNodeDedicated = poolNode.IsDedicated;
Virtuella datorer kan ibland väljas bort. När detta inträffar kommer uppgifter som kördes på de virtuella datorerna med den avinstallerade noden att köras i nästa rad och köras igen.
Batch gör även följande för konfigurationspooler för virtuella datorer:
- De överdådiga 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 avindelade noderna.
- Poolen försöker kontinuerligt nå målantalet noder med låg prioritet. När ersättningskapaciteten hittas behåller noderna sina-ID:er, men initieras igen, genom att gå igenom tillstånden Skapa och Starta innan de är tillgängliga för schemaläggning av aktiviteter.
- Avräkningsantal är tillgängliga som ett mått i Azure Portal.
Skalningspooler som innehåller lågprioriterade virtuella datorer
Precis som med pooler som enbart består av dedikerade virtuella datorer, är det möjligt att skala en pool som innehåller lågprioriterade virtuella datorer genom att anropa metoden Ändra storlek eller genom att använda autoskalning.
Åtgärden för storleksändring av poolen tar en andra valfri parameter som uppdaterar värdet för targetLowPriorityNodes:
pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);
Formeln för automatisk skalning av pool stöder lågprioriterade virtuella datorer 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 det avindelade tillståndet och gör att du kan skala upp eller ned antalet dedikerade noder, beroende på antalet otillgängliga noder.
Konfigurera jobb och uppgifter
Jobb och uppgifter kräver lite ytterligare konfiguration för noder med låg prioritet. Tänk på följande:
- JobManagerTask-egenskapen för ett jobb har egenskapen AllowLowPriorityNode. När den här egenskapen är sann kan Job Manager-aktiviteten schemaläggas på antingen en dedikerad nod eller en nod med låg prioritet. Om det är falskt schemaläggs Job Manager-aktiviteten endast till en dedikerad nod.
- Miljövariabeln AZ_BATCH_NODE_IS_DEDICATED tillgänglig för ett aktivitetsprogram så att det kan avgöra om det körs på en lågprioriterad eller på en dedikerad nod.
Visa mått för lågprioriterade virtuella datorer
Nya mått är tillgängliga i Azure Portal för noder med låg prioritet. Dessa mått är:
- Low-Priority antal noder
- Low-Priority antal kärnor
- Antal avindelade noder
Visa dessa mått i Azure Portal
- Navigera till ditt Batch-konto i Azure Portal.
- Välj Mått i avsnittet Övervakning.
- Välj de mått som du vill använda i listan Mått.
Nästa steg
- Lär dig mer om Batch-tjänstarbetsflödet och primära resurser som pooler, noder, jobb och aktiviteter.
- Läs om tillgängliga Batch-API:er och verktyg för att skapa Batch-lösningar.
- Börja planera flytten från lågprioriterade virtuella datorer till virtuella spot-datorer. Om du använder lågprioriterade virtuella datorer med Cloud Services -konfigurationspooler (som är inaktuella ) bör du planera att migrera till konfigurationspooler för virtuella datorer i stället.