Batch-oplossingen bewaken door taken en knooppunten te tellen op status
Als u grootschalige Azure Batch-oplossingen wilt bewaken en beheren, moet u mogelijk het aantal resources in verschillende statussen bepalen. Azure Batch biedt efficiënte bewerkingen om tellingen voor Batch-taken en rekenknooppunten op te halen. U kunt deze bewerkingen gebruiken in plaats van mogelijk tijdrovende lijstquery's die gedetailleerde informatie retourneren over grote verzamelingen taken of knooppunten.
Taakaantallen ophalen haalt een totaalaantal actieve, actieve en voltooide taken in een taak op, en van taken die zijn geslaagd of mislukt. Door taken in elke status te tellen, kunt u de taakvoortgang eenvoudiger weergeven aan een gebruiker of onverwachte vertragingen of fouten detecteren die van invloed kunnen zijn op de taak.
Lijst van poolknooppunten haalt het aantal toegewezen en spot-rekenknooppunten in elke pool op die zich in verschillende statussen bevinden: maken, niet-actief, offline, voorbereid, opnieuw opstarten, opnieuw voltooien, starten en andere. Door knooppunten in elke status te tellen, kunt u bepalen wanneer u voldoende rekenresources hebt om uw taken uit te voeren en mogelijke problemen met uw pools identificeren.
Houd er rekening mee dat de getallen die door deze bewerkingen worden geretourneerd, soms niet up-to-date zijn. Als u er zeker van wilt zijn dat een telling nauwkeurig is, gebruikt u een lijstquery om deze resources te tellen. Met lijstquery's kunt u ook informatie krijgen over andere Batch-resources, zoals toepassingen. Zie Query's maken om Batch-resources efficiënt weer te geven voor meer informatie over het toepassen van filters op lijstquery's.
Aantal taakstatussen
Met de bewerking Get Task Counts worden taken geteld op basis van de volgende statussen:
-
Actief: een taak die in de wachtrij staat en kan worden uitgevoerd, maar momenteel niet is toegewezen aan een rekenknooppunt. Een taak is ook
active
als deze afhankelijk is van een bovenliggende taak die nog niet is voltooid. -
Uitvoeren: een taak die is toegewezen aan een rekenknooppunt, maar nog niet is voltooid. Een taak wordt geteld als
running
wanneer de status ofrunning
ispreparing
, zoals wordt aangegeven door de bewerking Informatie over een taak ophalen. - Voltooid: een taak die niet meer in aanmerking komt om te worden uitgevoerd, omdat deze is voltooid of mislukt en ook de limiet voor opnieuw proberen is bereikt.
-
Geslaagd: een taak waarbij het resultaat van de taakuitvoering is
success
. Batch bepaalt of een taak is geslaagd of mislukt door deTaskExecutionResult
eigenschap van de eigenschap executionInfo te controleren. -
Mislukt: een taak waarbij het resultaat van de taakuitvoering is
failure
.
In het volgende .NET-codevoorbeeld ziet u hoe u taaktellingen op status kunt ophalen.
var taskCounts = await batchClient.JobOperations.GetJobTaskCountsAsync("job-1");
Console.WriteLine("Task count in active state: {0}", taskCounts.Active);
Console.WriteLine("Task count in preparing or running state: {0}", taskCounts.Running);
Console.WriteLine("Task count in completed state: {0}", taskCounts.Completed);
Console.WriteLine("Succeeded task count: {0}", taskCounts.Succeeded);
Console.WriteLine("Failed task count: {0}", taskCounts.Failed);
U kunt een vergelijkbaar patroon gebruiken voor REST en andere ondersteunde talen om het aantal taken voor een taak op te halen.
Aantal knooppuntstatussen
Met de bewerking Aantal knooppunten lijstgroep worden rekenknooppunten geteld op basis van de volgende statussen in elke pool. Er worden afzonderlijke aggregatietellingen geboden voor toegewezen knooppunten en spot-knooppunten in elke pool.
- Maken: een door Azure toegewezen VM die nog niet is begonnen met het toevoegen van een pool.
- Niet-actief: een beschikbaar rekenknooppunt waarop momenteel geen taak wordt uitgevoerd.
- LeavingPool: een knooppunt dat de pool verlaat, omdat de gebruiker deze expliciet heeft verwijderd of omdat de pool het formaat wijzigt of automatisch wordt verkleind.
- Offline: een knooppunt dat Batch niet kan gebruiken om nieuwe taken te plannen.
-
Preempted: een spot-knooppunt dat uit de pool is verwijderd omdat Azure de VM opnieuw heeft vrijgemaakt. Een
preempted
knooppunt kan opnieuw worden geïnitialiseerd wanneer er vervangende spot-VM-capaciteit beschikbaar is. - Opnieuw opstarten: een knooppunt dat opnieuw wordt opgestart.
- Opnieuw instellen: een knooppunt waarop het besturingssysteem opnieuw wordt geïnstalleerd.
- Uitvoeren : een knooppunt waarop een of meer taken worden uitgevoerd (anders dan de begintaak).
- Starten: een knooppunt waarop de Batch-service wordt gestart.
-
StartTaskFailed: een knooppunt waarop de begintaak is mislukt en waarop alle nieuwe pogingen zijn uitgeput en waarop
waitForSuccess
de begintaak is ingesteld. Het knooppunt kan niet worden gebruikt voor het uitvoeren van taken. - Onbekend: een knooppunt dat geen contact meer heeft met de Batch-service en waarvan de status niet bekend is.
- Onbruikbaar: een knooppunt dat vanwege fouten niet kan worden gebruikt voor taakuitvoering.
-
WaitingForStartTask: een knooppunt waarop de begintaak is gestart, maar
waitForSuccess
is ingesteld en de begintaak niet is voltooid.
Het volgende C#-fragment laat zien hoe u het aantal knooppunten voor alle pools in het huidige account weergeeft:
foreach (var nodeCounts in batchClient.PoolOperations.ListPoolNodeCounts())
{
Console.WriteLine("Pool Id: {0}", nodeCounts.PoolId);
Console.WriteLine("Total dedicated node count: {0}", nodeCounts.Dedicated.Total);
// Get dedicated node counts in Idle and Offline states; you can get additional states.
Console.WriteLine("Dedicated node count in Idle state: {0}", nodeCounts.Dedicated.Idle);
Console.WriteLine("Dedicated node count in Offline state: {0}", nodeCounts.Dedicated.Offline);
Console.WriteLine("Total Spot node count: {0}", nodeCounts.LowPriority.Total);
// Get Spot node counts in Running and Preempted states; you can get additional states.
Console.WriteLine("Spot node count in Running state: {0}", nodeCounts.LowPriority.Running);
Console.WriteLine("Spot node count in Preempted state: {0}", nodeCounts.LowPriority.Preempted);
}
Het volgende C#-fragment laat zien hoe u het aantal knooppunten voor een bepaalde pool in het huidige account weergeeft.
foreach (var nodeCounts in batchClient.PoolOperations.ListPoolNodeCounts(new ODATADetailLevel(filterClause: "poolId eq 'testpool'")))
{
Console.WriteLine("Pool Id: {0}", nodeCounts.PoolId);
Console.WriteLine("Total dedicated node count: {0}", nodeCounts.Dedicated.Total);
// Get dedicated node counts in Idle and Offline states; you can get additional states.
Console.WriteLine("Dedicated node count in Idle state: {0}", nodeCounts.Dedicated.Idle);
Console.WriteLine("Dedicated node count in Offline state: {0}", nodeCounts.Dedicated.Offline);
Console.WriteLine("Total Spot node count: {0}", nodeCounts.LowPriority.Total);
// Get Spot node counts in Running and Preempted states; you can get additional states.
Console.WriteLine("Spot node count in Running state: {0}", nodeCounts.LowPriority.Running);
Console.WriteLine("Spot node count in Preempted state: {0}", nodeCounts.LowPriority.Preempted);
}
U kunt een vergelijkbaar patroon gebruiken voor REST en andere ondersteunde talen om het aantal knooppunten voor pools op te halen.
Volgende stappen
- Meer informatie over de Werkstroom van de batch-service en primaire resources als pools, knooppunten, jobs en taken.
- Zie Query's maken om Batch-resources efficiënt weer te geven voor meer informatie over het toepassen van filters op query's die Batch-resources bevatten.