Batch에서 낮은 우선 순위 VM 사용

Azure Batch는 낮은 우선 순위 VM(가상 머신)을 사용하여 Batch 워크로드의 비용을 줄입니다. 우선 순위가 낮은 VM은 비용 절감을 위해 대량의 컴퓨팅 능력을 사용할 수 있도록 하여 새로운 유형의 Batch 워크로드를 가능하게 합니다.

우선 순위가 낮은 VM은 Azure에서 남는 용량을 활용합니다. 풀에서 우선 순위가 낮은 VM을 지정하면 Azure Batch는 가능한 경우 이러한 남는 용량을 사용할 수 있습니다.

우선 순위가 낮은 VM은 경우에 따라 할당이 가능하지 않거나, 사용 가능한 용량에 따라 언제든지 선점될 수 있다는 단점이 있습니다. 이러한 이유로 우선 순위가 낮은 VM은 작업 완료 시간이 유연하고 작업이 여러 VM 간에 분산되어 있는 일괄 및 비동기 처리 워크로드에 가장 적합합니다.

우선 순위가 낮은 VM은 전용 VM에 비해 상당히 저렴한 가격으로 제공됩니다. 가격 책정 세부 정보에 대해서는 Batch 가격 책정을 참조하세요.

참고

이제 스폿 VM단일 인스턴스 VMVM 확장 집합에 사용 가능합니다. 스폿 VM은 우선 순위가 낮은 VM이 개선된 것으로, 스폿 VM을 할당하는 경우 가격 책정이 다를 수 있고 선택적인 최대 가격을 설정할 수 있다는 점에서 다릅니다.

Azure Batch 풀은 새 버전의 Batch API 및 도구를 사용하여 향후 스폿 VM을 지원합니다. 스폿 VM 지원이 제공된 후에 우선 순위가 낮은 VM은 더 이상 사용되지 않지만 스폿 VM으로 마이그레이션하기에 충분한 시간을 허용하기 위해 최소 12개월 동안 현재 API 및 도구 버전을 사용하여 계속 지원합니다.

스폿 VM은 가상 머신 구성 풀에 대해서만 지원됩니다. 스폿 VM을 사용하려면 모든 클라우드 서비스 구성 풀을 가상 머신 구성 풀로 마이그레이션해야 합니다.

우선 순위가 낮은 VM에 대한 Batch 지원

Azure Batch는 우선 순위가 낮은 VM을 쉽게 활용하고 혜택을 얻을 수 있도록 하는 몇 가지 기능을 제공합니다.

  • Batch 풀은 전용 VM 및 우선 순위가 낮은 VM을 모두 포함할 수 있습니다. 각 유형의 VM 수는 풀이 만들어질 때 지정될 수 있으며, 기준 풀에 대해서는 명시적 크기 조정 작업이나 자동 크기 조정 기능을 사용해서 언제든지 변경될 수 있습니다. 작업 및 태스크 전송은 풀의 VM 유형과 관계없이 변경되지 않은 상태로 유지될 수 있습니다. 작업을 가능한 한 경제적으로 실행할 수 있게 우선 순위가 낮은 VM을 완전히 사용하도록 풀을 구성할 수도 있지만 용량이 최소 임계값 아래로 떨어질 경우 작업이 계속 실행되도록 하기 위해 전용 VM을 스핀업할 수 있습니다.
  • Batch 풀은 목표 개수의 우선 순위가 낮은 VM을 자동으로 검색합니다. VM이 선점되거나 사용할 수 없는 경우 Batch는 손실된 용량을 대체하고 목표 수준을 복구하려고 합니다.
  • 작업이 중단되면 Batch는 작업을 검색하고 자동으로 다시 큐에 넣어 다시 실행합니다.
  • 우선 순위가 낮은 VM은 전용 VM의 vCPU 할당량과는 다른 별도의 코어 할당량을 갖습니다. 우선 순위가 낮은 VM은 비용이 저렴하므로 할당량이 전용 VM보다 높습니다. 자세한 내용은 Batch 서비스 할당량 및 제한을 참조하세요.

참고

우선 순위가 낮은 VM은 사용자 구독 모드에서 만든 배치 계정에서 지원되지 않습니다.

고려 사항 및 사용 사례

대부분 Batch 워크로드는 우선 순위가 낮은 VM에 적합합니다. 작업이 여러 병렬 태스크로 분할되거나, 많은 VM에서 스케일 아웃 및 분산되는 많은 작업이 있는 경우 Batch 워크로드가 적합합니다.

Batch 처리 사용 사례의 일부 예제에는 우선 순위가 낮은 VM을 사용하는 것이 적합합니다.

  • 개발 및 테스트: 특히 대규모 솔루션을 개발 중인 경우 상당한 비용 절감을 실현할 수 있습니다. 모든 유형의 테스트가 혜택을 볼 수 있지만 대규모 부하 테스트 및 회귀 테스트에 사용하면 아주 좋습니다.
  • 주문형 용량 보완: 우선 순위가 낮은 VM은 일반적인 전용 VM을 보완하는 데 사용될 수 있습니다. 사용 가능한 경우 작업의 크기를 조정하여 더 낮은 비용으로 더 빠르게 완료할 수 있고, 사용 가능하지 않은 경우 전용 VM의 기준만 사용할 수 있게 유지됩니다.
  • 유연한 작업 실행 시간: 작업이 완료되어야 하는 시간이 유연한 경우 잠재적인 용량 감소가 허용될 수 있지만 우선 순위가 낮은 VM을 추가하면 작업이 더 낮은 비용으로 더 빠르게 실행됩니다.

Batch 풀은 몇 가지 방법으로 우선 순위가 낮은 VM을 사용하도록 구성될 수 있습니다.

  • 풀은 우선 순위가 낮은 VM만 사용할 수 있습니다. 이 경우 Batch는 사용 가능한 경우 선점된 용량을 모두 복구합니다. 이 구성은 작업을 실행하는 가장 경제적인 방법입니다.
  • 우선 순위가 낮은 VM을 고정된 전용 VM과 함께 사용할 수 있습니다. 고정된 전용 VM의 수가 있으면 항상 일정한 용량을 작업 처리에 사용할 수 있도록 보장됩니다.
  • 풀에서 전용 VM과 우선 순위가 낮은 VM의 동적 혼합을 사용할 수 있으므로 좀 더 저렴한 우선 순위가 낮은 VM만 사용되고, 필요할 때는 높은 가격의 전용 VM이 스케일 업됩니다. 이 구성은 최소한의 용량으로 작업을 계속 진행할 수 있도록 합니다.

우선 순위가 낮은 VM을 사용하려는 경우 다음 사항에 유의합니다.

  • Azure에서 남는 용량을 최대한 활용하기 위해 적절한 작업을 확장할 수 있습니다.
  • 경우에 따라 VM을 사용할 수 없거나 선점되면 작업에 대한 용량이 줄어들어 태스크가 중단되고 다시 실행될 수 있습니다.
  • 실행 시간이 더 짧은 태스크는 우선 순위가 낮은 VM에서 가장 잘 작동합니다. 좀 더 긴 태스크를 포함하는 작업은 중단될 경우 더 많은 영향을 받을 수 있습니다. 장기 실행 작업이 검사점 설정을 구현하여 실행될 때 진행 상황을 저장하는 경우 이 영향이 줄어들 수 있습니다.
  • 여러 VM을 활용하는 장기 실행 MPI 작업은 하나의 선점된 VM 때문에 전체 작업이 다시 실행되어야 하므로 우선 순위가 낮은 VM을 사용하는 것이 별로 적합하지 않습니다.
  • NSG(네트워크 보안 그룹) 규칙을 잘못 구성하면 우선 순위가 낮은 노드를 사용할 수 없는 것으로 표시할 수 있습니다.

우선 순위가 낮은 VM으로 풀 만들기 및 관리

Batch 풀은 전용 VM 및 우선 순위가 낮은 VM(Compute 노드라고도 함)을 둘 다 포함할 수 있습니다. 전용 및 우선 순위가 낮은 VM 둘 다에 대해 Compute 노드의 목표 수를 설정할 수 있습니다. 목표 노드 수는 풀에 유지하려는 VM의 수를 지정합니다.

예를 들어 전용 VM과 우선 순위가 낮은 VM의 목표 수가 각각 5개와 20개인 Azure 가상 머신(이 경우 Linux VM)을 사용하여 풀을 만들려면 다음을 사용합니다.

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

전용 및 우선 순위가 낮은 VM 둘 다의 현재 노드 수를 가져올 수 있습니다.

int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;

풀 노드에는 해당 노드가 전용 VM인지 또는 우선 순위가 낮은 VM인지를 나타내는 속성이 있습니다.

bool? isNodeDedicated = poolNode.IsDedicated;

VM은 경우에 따라 선점될 수 있습니다. 이 경우 선점된 노드 VM에서 실행되는 태스크가 요청되고 다시 실행됩니다.

가상 머신 구성 풀의 경우 Batch는 다음 작업도 수행합니다.

  • 선점된 VM의 상태는 선점됨 으로 업데이트됩니다.
  • VM은 효과적으로 삭제되므로 VM에 로컬로 저장된 모든 데이터는 손실됩니다.
  • 풀의 목록 노드 작업은 계속해서 선점된 노드를 반환합니다.
  • 풀은 계속해서 우선 순위가 낮은 노드의 목표 개수가 사용 가능해지도록 하려고 합니다. 대체 용량이 발견되면 노드는 해당 ID를 유지하지만 다시 초기화되며, 작업 예약에 사용되기 전에 먼저 만드는 중시작 중 상태를 거치게 됩니다.
  • 선점 수는 Azure Portal에서 메트릭으로 사용할 수 있습니다.

우선 순위가 낮은 VM을 포함하는 풀의 크기 조정

전용 VM으로만 구성된 풀의 경우처럼, Resize 메서드를 호출하거나 자동 크기 조정을 사용하여 우선 순위가 낮은 VM을 포함하는 풀의 크기를 조정할 수 있습니다.

풀 크기 조정 작업은 targetLowPriorityNodes 값을 업데이트하는 두 번째 선택적 매개 변수를 사용합니다.

pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);

풀 자동 크기 조정 수식은 우선 순위가 낮은 VM을 다음과 같이 지원합니다.

  • 서비스 정의 변수 $TargetLowPriorityNodes 의 값을 가져오거나 설정할 수 있습니다.
  • 서비스 정의 변수 $CurrentLowPriorityNodes 의 값을 가져올 수 있습니다.
  • 서비스 정의 변수 $PreemptedNodeCount 의 값을 가져올 수 있습니다. 이 변수는 선점 상태의 노드 수를 반환하고 사용할 수 없는 선점된 노드 수에 따라 전용 노드의 수를 늘리거나 줄일 수 있도록 합니다.

작업 및 태스크 구성

작업 및 태스크는 우선 순위가 낮은 노드에 대한 추가 지원을 거의 요구하지 않습니다. 고려할 사항은 다음과 같습니다.

  • 작업의 JobManagerTask 속성은 AllowLowPriorityNode 속성을 갖습니다. 이 속성이 true이면 작업 관리자 태스크는 전용 또는 우선 순위가 낮은 노드에서 예약될 수 있습니다. false이면 작업 관리자 태스크는 전용 노드에서만 예약됩니다.
  • 태스크 애플리케이션에 AZ_BATCH_NODE_IS_DEDICATED 환경 변수를 사용할 수 있으므로 해당 애플리케이션이 우선 순위가 낮은 노드에서 실행되는지 또는 전용 노드에서 실행되는지를 확인할 수 있습니다.

우선 순위가 낮은 VM의 메트릭 보기

우선 순위가 낮은 노드의 경우 Azure Portal에서 새 메트릭을 사용할 수 있습니다. 이러한 메트릭은 다음과 같습니다.

  • 우선 순위가 낮은 노드 수
  • 우선 순위가 낮은 코어 수
  • 선점된 노드 수

Azure Portal에서 이러한 메트릭을 확인하려면

  1. Azure Portal에서 Batch 계정으로 이동합니다.
  2. 모니터링 섹션에서 메트릭 을 선택합니다.
  3. 메트릭 목록에서 원하는 메트릭을 선택합니다.

다음 단계