Dela via


Övervaka Batch-lösningar genom att räkna uppgifter och noder efter tillstånd

Om du vill övervaka och hantera storskaliga Azure Batch-lösningar kan du behöva fastställa antalet resurser i olika tillstånd. Azure Batch tillhandahåller effektiva räkneoperationer för att få antal för batchuppgifter och beräkningsnoder. Du kan använda dessa åtgärder i stället för potentiellt tidskrävande listfrågor som returnerar detaljerad information om stora samlingar med uppgifter eller noder.

  • Get Task Counts hämtar ett aggregerat antal aktiva, körande och slutförda uppgifter i ett job, samt uppgifter som lyckades eller misslyckades. Genom att räkna uppgifter i varje tillstånd kan du enkelt visa jobbförloppet för en användare eller identifiera oväntade fördröjningar eller fel som kan påverka jobbet.

  • Lista antal poolnoder hämtar antalet dedikerade och Spot-beräkningsnoder i varje pool som är i olika tillstånd: skapas, inaktiva, offline, preemterade, startas om, återskapas, startas och andra. Genom att räkna noder i varje tillstånd kan du avgöra när du har tillräckliga beräkningsresurser för att köra dina jobb och identifiera potentiella problem med dina pooler.

Ibland kanske de tal som returneras av dessa åtgärder inte är uppdaterade. Om du behöver vara säker på att antalet är korrekt använder du en listfråga för att räkna dessa resurser. Med listfrågor kan du också få information om andra Batch-resurser, till exempel program. Mer information om hur du använder filter för listfrågor finns i Skapa frågor för att lista Batch-resurser effektivt.

Antal aktivitetstillstånd

Åtgärden Get Task Counts räknar aktiviteter efter följande tillstånd:

  • Aktiv: En aktivitet som är i kö och redo att köras men som för närvarande inte har tilldelats någon beräkningsnod. En uppgift är också active om den är beroende av en överordnad uppgift som ännu inte har slutförts.
  • Körs: En uppgift som har tilldelats en datornod men ännu inte har slutförts. En aktivitet räknas som running när dess tillstånd är antingen preparing eller running, vilket anges av Getinformationen om en aktivitetsåtgärd .
  • Slutförd: En aktivitet som inte längre är berättigad att köras, eftersom den antingen har slutförts eller slutförts utan framgång och även uttömt sin återförsöksgräns.
  • Lyckades: En uppgift där resultatet av uppgiftskörningen är success. Batch avgör om en uppgift har lyckats eller misslyckats genom att kontrollera egenskapen TaskExecutionResult hos egenskapen executionInfo.
  • Misslyckades: En uppgift där resultatet av uppgiftskörningen är failure.

Följande .NET-kodexempel visar hur du hämtar antalet aktiviteter efter tillstånd.

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

Du kan använda ett liknande mönster för REST och andra språk som stöds för att få antal uppgifter för ett arbete.

Antal nodtillstånd

Åtgärden List Pool Node Counts räknar beräkningsnoder efter följande tillstånd i varje pool. Separata aggregatantal tillhandahålls för dedicerade noder och Spot-noder i varje pool.

  • Skapa: En Azure-allokerad virtuell dator som ännu inte har börjat ansluta till en pool.
  • Inaktiv: En beräkningsnod som är tillgänglig och som för närvarande inte kör några uppgifter.
  • LeavingPool: En nod som lämnar poolen, antingen för att användaren uttryckligen har tagit bort den eller för att poolen autoskalar ner eller ändrar storlek.
  • Offline: En nod som Batch inte kan använda för att schemalägga nya uppgifter.
  • Preempted: En nod för oanvänd kapacitet som togs bort från poolen eftersom Azure återtog den virtuella datorn. En preempted nod kan återinitieras när ersättningskapacitet för Spot-virtuella datorer finns tillgänglig.
  • Omstart: En nod som startas om.
  • Återskapa: En nod där operativsystemet installeras om.
  • Körs : En nod som kör aktivt en eller flera uppgifter (förutom startuppgiften).
  • Startar: En nod där Batch-tjänsten startas.
  • StartTaskFailed: En nod där startaktiviteten misslyckades efter alla återförsök och waitForSuccess är aktiverad. Den här noden kan inte köra aktiviteter.
  • Okänd: En nod som förlorade kontakten med Batch-tjänsten och vars tillstånd inte är känt.
  • Oanvändbar: En nod som inte kan användas för uppgiftskörning på grund av fel.
  • WaitingForStartTask: En nod där startaktiviteten körs, men waitForSuccess är aktiverad och den har inte slutförts.

Följande C#-kodfragment visar hur du listar antalet noder för alla pooler i det aktuella kontot:

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

Följande C#-kodfragment visar hur du listar antalet noder för en viss pool i det aktuella kontot.

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

Du kan använda ett liknande mönster för REST och andra språk som stöds för att få nodantal för pooler.

Nästa steg