Monitorování řešení Batch počítáním úkolů a uzlů podle stavu

Pokud chcete monitorovat a spravovat řešení Azure Batch ve velkém měřítku, možná budete muset určit počet prostředků v různých stavech. Azure Batch poskytuje efektivní operace pro získání počtů pro úlohy služby Batch a výpočetní uzly. Tyto operace můžete použít místo potenciálně časově náročných dotazů na seznam, které vracejí podrobné informace o rozsáhlých kolekcích úkolů nebo uzlů.

  • Funkce Get Task Counts získá agregovaný počet aktivních, spuštěných a dokončených úkolů v úloze a úkolů, které byly úspěšné nebo neúspěšné. Počítáním úkolů v jednotlivých stavech můžete uživateli snadněji zobrazit průběh úlohy nebo zjistit neočekávaná zpoždění nebo selhání, která můžou úlohu ovlivnit.

  • Počet uzlů fondu seznamu získá počet vyhrazených a spotových výpočetních uzlů v každém fondu, které jsou v různých stavech: vytváření, nečinnosti, offline, zablokování, restartování, opětovné vytvoření, spuštění a další. Počítáním uzlů v jednotlivých stavech můžete určit, kdy máte dostatečné výpočetní prostředky ke spouštění úloh, a identifikovat potenciální problémy s fondy.

Všimněte si, že někdy nemusí být čísla vrácená těmito operacemi aktuální. Pokud potřebujete mít jistotu, že je počet přesný, spočítejte tyto prostředky pomocí dotazu na seznam. Dotazy seznamu také umožňují získat informace o dalších prostředcích služby Batch, jako jsou aplikace. Další informace o použití filtrů u seznamů dotazů najdete v tématu Vytváření dotazů pro efektivní výpis prostředků služby Batch.

Počty stavů úkolů

Operace Získat počty úkolů počítá úkoly podle následujících stavů:

  • Aktivní: Úloha, která je zařazená do fronty a může se spustit, ale není aktuálně přiřazená k výpočetnímu uzlu. Úkol je také activezávislý na nadřazené úloze , která ještě nebyla dokončena.
  • Spuštěno: Úkol, který byl přiřazen výpočetnímu uzlu, ale ještě nebyl dokončen. Úkol se počítá jako running , když je jeho stav buď preparing nebo running, jak je uvedeno v operaci Získání informací o úkolu .
  • Dokončeno: Úkol, který už není způsobilý ke spuštění, protože se dokončil úspěšně nebo neúspěšně a také vyčerpal limit opakování.
  • Úspěch: Úkol, u kterého je successvýsledkem spuštění úkolu . Batch určuje, zda byla úloha úspěšná nebo neúspěšná, kontrolou TaskExecutionResult vlastnosti executionInfo .
  • Selhání: Úkol, u kterého je failurevýsledkem spuštění úkolu .

Následující ukázka kódu .NET ukazuje, jak načíst počty úloh podle stavu.

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

Podobný vzor můžete použít pro REST a další podporované jazyky k získání počtu úkolů pro úlohu.

Počty stavů uzlů

Operace Výpis počtu uzlů fondu počítá výpočetní uzly v každém fondu podle následujících stavů. Pro vyhrazené uzly a spotové uzly v každém fondu jsou k dispozici samostatné agregované počty.

  • Vytváření: Virtuální počítač přidělený Azure, který se ještě nezačala připojovat k fondu.
  • Nečinný: Dostupný výpočetní uzel, na kterém aktuálně není spuštěná úloha.
  • LeavingPool: Uzel, který opouští fond, buď proto, že ho uživatel explicitně odebral, nebo proto, že fond provádí změnu velikosti nebo automatické vertikální snížení kapacity.
  • Offline: Uzel, který služba Batch nemůže použít k plánování nových úkolů.
  • Vyřazeno: Spotový uzel, který se odebral z fondu, protože Azure získal zpět virtuální počítač. Pokud preempted je k dispozici náhradní kapacita spotového virtuálního počítače, je možné uzel znovu inicializovat.
  • Restartování: Uzel, který se restartuje.
  • Opětovné vytvoření: Uzel, na kterém se přeinstaluje operační systém.
  • Spuštěno : Uzel, na kterém běží jeden nebo více úkolů (kromě spouštěcí úlohy).
  • Spouštění: Uzel, na kterém se spouští služba Batch.
  • StartTaskFailed: Uzel, na kterém úloha spuštění selhala a vyčerpala všechny opakování a na kterém waitForSuccess je nastavena počáteční úloha. Uzel není použitelný pro spouštění úloh.
  • Neznámý: Uzel, který ztratil kontakt se službou Batch a jehož stav není známý.
  • Nepoužitelné: Uzel, který kvůli chybám nejde použít ke spuštění úlohy.
  • WaitingForStartTask: Uzel, na kterém se spustila úloha spuštění, ale waitForSuccess je nastavená a spouštěcí úloha se nedokončila.

Následující fragment kódu jazyka C# ukazuje, jak zobrazit seznam počtu uzlů pro všechny fondy v aktuálním účtu:

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

Následující fragment kódu jazyka C# ukazuje, jak zobrazit seznam počtu uzlů pro daný fond v aktuálním účtu.

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

Podobný vzor můžete použít pro REST a další podporované jazyky k získání počtu uzlů pro fondy.

Další kroky