Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Azure Batch oferece máquinas virtuais (VMs) spot para reduzir o custo das cargas de trabalho em lote. As VMs spot possibilitam novos tipos de cargas de trabalho em lote, permitindo que uma grande quantidade de poder de computação seja usada por um baixo custo.
As VMs spot aproveitam a capacidade excedente no Azure. Quando você especifica VMs spot em seus pools, o Lote do Azure pode usar esse excedente, quando disponível.
A contrapartida de usar VMs Spot é que essas VMs podem não estar sempre disponíveis ou podem ser interrompidas a qualquer momento, dependendo da capacidade disponível. Por esse motivo, as VMs spot são mais adequadas para cargas de trabalho de processamento em lote e assíncrono, onde o tempo de conclusão do trabalho é flexível e o trabalho é distribuído por muitas VMs.
As VMs spot são oferecidas a um preço reduzido em comparação com as VMs dedicadas. Para saber mais sobre preços, consulte Preços por lote.
Diferenças entre VMs spot e de baixa prioridade
O Batch oferece dois tipos de VMs preemptíveis de baixo custo:
- Spot VMs, uma oferta moderna em toda a Azure também disponível como VMs de uma única instância ou conjuntos de máquinas virtuais escaláveis.
- VMs de baixa prioridade, uma oferta herdada disponível apenas através do Azure Batch.
O tipo de nó que obtém depende do modo de alocação de pool da sua conta Batch, que pode ser definido durante a criação da conta. As contas batch que usam o modo de alocação do pool de subscrição do utilizador sempre obtêm Spot VMs. As contas que usam o modo de alocação de pool Batch managed sempre obtêm VMs de baixa prioridade.
Aviso
As VM de baixa prioridade serão desativadas após 30 de setembro de 2025. Migre para VMs Spot em Batch antes disso.
As VMs spot do Azure e as VMs de baixa prioridade em lote são semelhantes, mas têm algumas diferenças de comportamento.
Spot VMs | VMs de baixa prioridade | |
---|---|---|
Contas em lote suportadas | Contas de Lote de Subscrição do Utilizador | Contas Batch geridas em lote |
Configurações de pool de lotes suportadas | Configuração da Máquina Virtual | Configuração de Máquina Virtual e Configuração de Serviço de Nuvem (preterido) |
Regiões disponíveis | Todas as regiões que suportam VMs Spot | Todas as regiões, exceto o Microsoft Azure operado pela 21Vianet |
Elegibilidade do cliente | Não está disponível para alguns tipos de oferta de subscrição. Veja mais sobre as limitações do Spot. | Disponível para todos os clientes do Batch |
Possíveis razões para o despejo | Capacidade | Capacidade |
Modelo de Preços | Descontos variáveis em relação aos preços padrão da VM | Descontos fixos em relação aos preços padrão da VM |
Modelo de cotas | Sujeito às quotas principais da sua subscrição | Sujeito às cotas centrais da sua conta Batch |
SLA de disponibilidade | Nenhuma | Nenhuma |
Suporte em lote para VMs Spot
O Azure Batch fornece vários recursos que facilitam o consumo e o benefício de VMs spot:
- Os pools de Batch podem conter VMs dedicadas e VMs Spot. O número de cada tipo de VM pode ser especificado quando um pool é criado ou alterado a qualquer momento para um pool existente, usando a operação de redimensionamento explícito ou usando o dimensionamento automático. O envio de trabalhos e tarefas pode permanecer inalterado, independentemente dos tipos de VM no pool. Você também pode configurar um pool para usar exclusivamente VMs spot para executar trabalhos da forma mais barata possível, mas iniciar VMs dedicadas se a capacidade cair abaixo de um limite mínimo, para manter os trabalhos em execução.
- Os pools de Batch procuram automaticamente o número alvo de VMs Spot. Se as VMs forem preemptadas ou estiverem indisponíveis, o Batch tentará substituir a capacidade perdida e restaurar o nível alvo.
- Quando as tarefas são interrompidas, o Batch deteta e recoloca as tarefas automaticamente na fila para serem executadas novamente.
- As VMs spot têm uma cota de vCPU separada que difere da cota das VMs dedicadas. A cota para VMs spot é maior do que a cota para VMs dedicadas, porque as VMs spot custam menos. Para obter mais informações, consulte Cotas e limites do serviço Batch.
Considerações e casos de uso
Muitas cargas de trabalho em lote são adequadas para VMs Spot. Considere o uso de VMs Spot quando os trabalhos são divididos em muitas tarefas paralelas ou quando tem muitos trabalhos que são dimensionados e distribuídos por muitas VMs.
Alguns exemplos de casos de uso de processamento em lote que são adequados para VMs spot são:
- Desenvolvimento e testes: Em particular, se soluções em larga escala estão sendo desenvolvidas, economias significativas podem ser realizadas. Todos os tipos de teste podem se beneficiar, mas o teste de carga em larga escala e o teste de regressão são ótimos usos.
- Complementando a capacidade a pedido: Spot VMs podem ser usadas para complementar VMs dedicadas regulares. Quando disponíveis, os trabalhos podem ser dimensionados e, portanto, concluídos mais rapidamente por um custo mais baixo; quando não está disponível, a linha de base das VMs dedicadas permanece disponível.
- Tempo de execução flexível do trabalho: Se houver flexibilidade no tempo que os trabalhos têm para concluir, então potenciais quedas na capacidade podem ser toleradas. No entanto, com a adição de VMs spot, os trabalhos geralmente são executados mais rapidamente e por um custo mais baixo.
Os pools de tarefas podem ser configurados para usar VMs Spot de várias maneiras:
- Um pool pode usar apenas VMs Spot. Nesse caso, o Batch recupera qualquer capacidade antecipada quando disponível. Essa configuração é a maneira mais barata de executar trabalhos.
- As VMs spot podem ser usadas com uma linha de base fixa de VMs dedicadas. O número fixo de VMs dedicadas garante que sempre haja alguma capacidade para manter um trabalho progredindo.
- Um pool pode usar uma combinação dinâmica de VMs dedicadas e spot, de modo que as VMs spot mais baratas sejam usadas apenas quando disponíveis, mas as VMs dedicadas com preço total aumentam quando necessário. Essa configuração mantém uma quantidade mínima de capacidade disponível para manter os trabalhos progredindo.
Tenha em mente as seguintes práticas ao planear o uso de VMs spot:
- Para maximizar o uso da capacidade excedente no Azure, os trabalhos adequados podem ser expandidos verticalmente.
- Ocasionalmente, as VMs podem não estar disponíveis ou são antecipadas, o que resulta em capacidade reduzida para trabalhos e pode levar à interrupção e reexecuções de tarefas.
- Tarefas com tempos de execução mais curtos tendem a funcionar melhor com VMs spot. Trabalhos com tarefas mais longas podem ser mais afetados se forem interrompidos. Se tarefas de longa execução implementarem pontos de verificação para salvar o progresso à medida que são executadas, esse impacto poderá ser reduzido.
- Trabalhos MPI de longa duração que utilizam várias VMs não são adequados para VMs Spot, porque uma VM preemptada pode fazer com que todo o trabalho tenha que ser executado novamente.
- Os nós spot podem ser marcados como inutilizáveis se as regras do NSG (grupo de segurança de rede) estiverem configuradas incorretamente.
Criar e gerir pools com Máquinas Virtuais Spot
Um Batch pool pode conter VMs dedicadas e Spot (também conhecidas como nós de computação). Você pode definir o número alvo de nós de computação para VMs dedicadas e Spot. O número de nós de destino especifica o número de VMs que você deseja ter no pool.
O exemplo a seguir cria um pool usando máquinas virtuais do Azure, neste caso VMs Linux, com um destino de 5 VMs dedicadas e 20 VMs spot:
ImageReference imageRef = new ImageReference(
publisher: "Canonical",
offer: "UbuntuServer",
sku: "20.04-LTS",
version: "latest");
// Create the pool
VirtualMachineConfiguration virtualMachineConfiguration =
new VirtualMachineConfiguration("batch.node.ubuntu 20.04", imageRef);
pool = batchClient.PoolOperations.CreatePool(
poolId: "vmpool",
targetDedicatedComputeNodes: 5,
targetLowPriorityComputeNodes: 20,
virtualMachineSize: "Standard_D2_v2",
virtualMachineConfiguration: virtualMachineConfiguration);
Você pode obter o número atual de nós para VMs dedicadas e spot:
int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;
Os nós do pool têm uma propriedade para indicar se o nó é uma VM dedicada ou uma VM Spot.
bool? isNodeDedicated = poolNode.IsDedicated;
As VMs Spot podem ser interrompidas ocasionalmente. Quando a preempção acontece, as tarefas que estavam a ser executadas nas VMs do nó preemptado são recolocadas na fila e executadas novamente quando a capacidade retorna.
Para pools de Configuração de Máquina Virtual, o Batch também executa os seguintes comportamentos:
- As VMs preemptivas têm o seu estado atualizado para Preempted.
- A VM é efetivamente excluída, levando à perda de quaisquer dados armazenados localmente na VM.
- Uma operação para listar nós no pool ainda retorna os nós preemptados.
- O pool tenta continuamente atingir o número de destino de nós spot disponíveis. Quando a capacidade de substituição é encontrada, os nós mantêm os seus IDs, mas são reinicializados, passando pelos estados de Criando e Iniciando antes de estarem disponíveis para o agendamento de tarefas.
- As contagens de preempção estão disponíveis como uma métrica no portal do Azure.
Escalonar pools contendo VMs de Spot
Assim como acontece com pools que consistem exclusivamente em VMs dedicadas, é possível dimensionar um pool contendo VMs Spot chamando o Resize
ou usando o dimensionamento automático.
A operação de redimensionamento do pool usa um segundo parâmetro opcional que atualiza o valor de targetLowPriorityNodes
:
pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);
A fórmula de dimensionamento automático do pool oferece suporte a VMs spot da seguinte maneira:
- Você pode obter ou definir o valor da variável
$TargetLowPriorityNodes
definida pelo serviço. - Você pode obter o valor da variável
$CurrentLowPriorityNodes
definida pelo serviço. - Você pode obter o valor da variável
$PreemptedNodeCount
definida pelo serviço. Essa variável retorna o número de nós no estado preemptado e permite aumentar ou diminuir o número de nós dedicados, consoante o número de nós preemptados que se encontram indisponíveis.
Configurar trabalhos e tarefas
Alguns trabalhos e tarefas podem exigir uma configuração extra para instâncias Spot.
- A
JobManagerTask
propriedade de um trabalho tem umaAllowLowPriorityNode
propriedade. Quando esta propriedade for verdadeira, a tarefa do gestor de tarefas poderá ser agendada num nó dedicado ou Spot. Se for falso, a tarefa do gestor de tarefas será agendada apenas para um nó dedicado. - A
AZ_BATCH_NODE_IS_DEDICATED
variável de ambiente está disponível para uma aplicação de tarefa para determinar se está a ser executada em um Spot ou em um nó dedicado.
Exibir métricas para VMs Spot
Novas métricas estão disponíveis no portal Azure para nós de Spot. Essas métricas são:
- Contagem de nós de baixa prioridade
- Número de núcleos de baixa prioridade
- Contagem de nós preemptados
Para exibir essas métricas no portal do Azure:
- No portal do Azure, navegue para a sua conta do Batch.
- Selecione Métricas na seção Monitoramento.
- Selecione as métricas desejadas na lista Métricas .
Limitações
- As VMs spot no Batch não suportam a definição de um preço máximo e não suportam remoções baseadas em preço. Só podem ser despejados por razões de capacidade.
- As VMs spot só estão disponíveis para pools de Configuração de Máquina Virtual e não para pools de Configuração de Serviço de Nuvem, que foram preteridos.
- As VMs Spot não estão disponíveis para algumas nuvens, tamanhos de VM e tipos de subscrição. Veja mais sobre limitações de VM Spot.
- Atualmente, os discos de SO efémeros não são compatíveis com Spot VMs devido à política de remoção gerida pelo serviço do Stop-Deallocate.
Próximos passos
- Saiba mais sobre o fluxo de trabalho do serviço Batch e os recursos primários, como pools, nós, jobs e tarefas.
- Saiba mais sobre as APIs e ferramentas do Batch disponíveis para construir soluções Batch.
- Comece a planear a mudança de VMs de baixa prioridade para VMs Spot. Se utilizar VMs de baixa prioridade com pools de Configuração de Serviços de Nuvem (que estão obsoletos), planeie migrar para pools de Configuração de Máquina Virtual.