대규모 Azure Batch 솔루션을 모니터링하고 관리하려면 다양한 상태의 리소스 수를 결정해야 할 수 있습니다. Azure Batch는 Batch 태스크 및 컴퓨팅 노드의 개수를 가져오는 효율적인 작업을 제공합니다. 작업 또는 노드의 큰 컬렉션에 대한 자세한 정보를 반환하는 잠재적으로 시간이 많이 걸리는 목록 쿼리 대신 이러한 작업을 사용할 수 있습니다.
Get Task Counts는 작업 에서 활성, 실행 및 완료된 태스크와 성공하거나 실패한 작업의 집계 수를 가져옵니다. 각 상태의 작업을 계산하여 사용자에게 작업 진행률을 쉽게 표시하거나 작업에 영향을 줄 수 있는 예기치 않은 지연 또는 오류를 감지할 수 있습니다.
풀 노드의 개수를 조회하여 각 풀에 있는 전용 및 스팟 노드의 수를 다음의 다양한 상태로 구분합니다: 생성 중, 유휴, 오프라인, 선점됨, 재부팅 중, 재이미징 중, 시작 중 등. 각 상태의 노드를 계산하여 작업을 실행하기에 충분한 컴퓨팅 리소스가 있는지 확인하고 풀의 잠재적인 문제를 식별할 수 있습니다.
때때로 이러한 작업에서 반환된 숫자가 최신이 아닐 수 있습니다. 개수가 정확한지 확인해야 하는 경우 목록 쿼리를 사용하여 이러한 리소스를 계산합니다. 또한 목록 쿼리를 사용하면 애플리케이션과 같은 다른 Batch 리소스에 대한 정보를 얻을 수 있습니다. 쿼리를 나열하는 필터를 적용하는 방법에 대한 자세한 내용은 Batch 리소스를 효율적으로 나열하는 쿼리 만들기를 참조하세요.
작업 상태 수
Get
작업 개수 작업은 다음 상태별로 태스크 수를 계산합니다.
-
활성: 대기 중이며 실행할 준비가 되었지만 현재 컴퓨팅 노드에 할당되지 않은 작업입니다. 작업은
active
아직 완료되지 않은 부모 작업에 종속 된 경우에도 해당됩니다. -
실행 중: 컴퓨팅 노드에 할당되었지만 아직 완료되지 않은 작업입니다. 태스크는
running
에 따라 상태가preparing
또는running
일 경우Get
로 계산됩니다. - 완료됨: 작업이 성공적으로 완료되었거나 실패하고 재시도 한도를 모두 사용했기 때문에 더 이상 실행할 수 없는 작업입니다.
-
성공: 태스크 실행의 결과가 있는 작업입니다
success
. Batch는TaskExecutionResult
속성의 속성을 확인하여 태스크가 성공했는지 또는 실패했는지 여부를 결정합니다. -
실패: 태스크 실행 결과가
failure
인 작업입니다.
다음 .NET 코드 샘플에서는 상태별로 작업 수를 검색하는 방법을 보여 줍니다.
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);
REST 및 기타 지원되는 언어에 유사한 패턴을 사용하여 작업에 대한 작업 수를 가져올 수 있습니다.
노드 상태 수
목록 풀 노드 개수 작업은 각 풀의 다음 상태별로 계산 노드 수를 계산합니다. 각 풀의 전용 노드 및 스폿 노드에 대해 별도의 집계 수가 제공됩니다.
- 생성 중: 풀에 아직 추가되지 않은 Azure 할당 VM입니다.
- 유휴: 사용 가능하고 현재 어떤 작업도 실행하지 않는 컴퓨팅 노드입니다.
- LeavingPool: 사용자가 명시적으로 제거했거나 풀의 크기 조정 또는 자동 축소 때문에 풀을 떠나는 노드입니다.
- 오프라인: Batch에서 새 작업을 예약하는 데 사용할 수 없는 노드입니다.
-
선점됨: Azure가 VM을 회수했기 때문에 스폿 노드가 풀에서 제거되었습니다.
preempted
교체 스폿 VM 용량을 사용할 수 있는 경우 노드를 다시 초기화할 수 있습니다. - 다시 부팅: 다시 시작하는 노드입니다.
- 재이미징: OS가 다시 설치되는 노드입니다.
- 실행 중: 하나 이상의 태스크를 실행하는 노드입니다(시작 작업 이외의).
- 시작: Batch 서비스가 시작되는 노드입니다.
-
StartTaskFailed: 모든 재시도 후 시작 작업이 실패하고
waitForSuccess
사용하도록 설정된 노드입니다. 이 노드는 작업을 실행할 수 없습니다. - 알 수 없음: Batch 서비스와의 연락이 끊어지고 상태를 알 수 없는 노드입니다.
- 사용할 수 없음: 오류로 인해 태스크 실행에 사용할 수 없는 노드입니다.
-
WaitingForStartTask: 시작 작업이 실행되고 있지만
waitForSuccess
활성화되어 있고 완료되지 않은 노드입니다.
다음 C# 코드 조각은 현재 계정의 모든 풀에 대한 노드 수를 나열하는 방법을 보여 줍니다.
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);
}
다음 C# 코드 조각은 현재 계정에서 지정된 풀에 대한 노드 수를 나열하는 방법을 보여 줍니다.
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);
}
REST 및 기타 지원되는 언어에 유사한 패턴을 사용하여 풀에 대한 노드 수를 가져올 수 있습니다.
다음 단계
- 풀, 노드, 작업 및 태스크와 같은 Batch 서비스 워크플로 및 기본 리소스에 대해 알아봅니다.
- Batch 리소스를 나열하는 쿼리에 필터를 적용하는 방법에 대한 자세한 내용은 Batch 리소스를 효율적으로 나열하는 쿼리 만들기를 참조하세요.