Utilizar VMs Spot com o Batch
Azure Batch oferece máquinas virtuais (VMs) Spot para reduzir o custo das cargas de trabalho do Batch. As VMs Spot possibilitam novos tipos de cargas de trabalho do Batch ao permitir a utilização de uma grande quantidade de poder de computação a baixo custo.
As VMs Spot tiram partido da capacidade excedentária no Azure. Quando especificaR VMs Spot nos conjuntos, Azure Batch pode utilizar este excedente, quando disponível.
A desvantagem da utilização de VMs Spot é que essas VMs podem nem sempre estar disponíveis para serem alocadas ou podem ser impedidas em qualquer altura, dependendo da capacidade disponível. Por este motivo, as VMs Spot são mais adequadas para cargas de trabalho de processamento em lote e assíncronas em que o tempo de conclusão da tarefa é 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 obter detalhes sobre os preços, veja Preços do Batch.
Diferenças entre VMs Spot e de baixa prioridade
O Batch oferece dois tipos de VMs preempíveis de baixo custo:
- VMs Spot, uma oferta moderna ao nível do Azure, também disponível como VMs de instância única ou Conjuntos de Dimensionamento de Máquinas Virtuais.
- VMs de baixa prioridade, uma oferta legada disponível apenas através de Azure Batch.
O tipo de nó que obtém depende do modo de alocação de conjuntos da sua conta do Batch, que é definido durante a criação da conta. As contas do Batch que utilizam o modo de alocação do conjunto de subscrições do utilizador obtêm sempre VMs Spot. As contas do Batch que utilizam o modo de alocação de conjuntos geridos do Batch obtêm sempre VMs de baixa prioridade.
As VMs Spot do Azure e as VMs de baixa prioridade do Batch são semelhantes, mas têm algumas diferenças de comportamento.
Spot VMs | VMs de baixa prioridade | |
---|---|---|
Contas do Batch suportadas | Contas do Batch de subscrição de utilizador | Contas do Batch geridas pelo Batch |
Configurações de conjuntos do Batch suportadas | Configuração da Máquina Virtual | Configuração da Máquina Virtual e Configuração do Serviço Cloud (preterido) |
Regiões disponíveis | Todas as regiões que suportam VMs Spot | Todas as regiões exceto o Microsoft Azure China 21Vianet |
Elegibilidade dos clientes | 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 motivos para expulsão | Capacidade | Capacidade |
Modelo de Preços | Descontos variáveis relativos aos preços padrão da VM | Descontos fixos relativos aos preços padrão da VM |
Modelo de quota | Sujeito a quotas principais na sua subscrição | Sujeito a quotas principais na sua conta do Batch |
SLA de Disponibilidade | Nenhuma | Nenhuma |
Suporte do Batch para VMs Spot
Azure Batch fornece várias funcionalidades que facilitam o consumo e a vantagem das VMs Spot:
- Os conjuntos do Batch podem conter VMs dedicadas e VMs Spot. O número de cada tipo de VM pode ser especificado quando um conjunto é criado ou alterado em qualquer altura para um conjunto existente, utilizando a operação de redimensionamento explícito ou utilizando o dimensionamento automático. A submissão de tarefas e tarefas pode permanecer inalterada, independentemente dos tipos de VM no conjunto. Também pode configurar um conjunto para utilizar completamente as VMs Spot para executar tarefas o mais barato possível, mas criar VMs dedicadas se a capacidade ficar abaixo de um limiar mínimo, para manter os trabalhos em execução.
- Os conjuntos do Batch procuram automaticamente o número de destino de VMs Spot. Se as VMs estiverem preempidas ou indisponíveis, o Batch tentará substituir a capacidade perdida e regressar ao destino.
- Quando as tarefas são interrompidas, o Batch deteta e coloca automaticamente em fila tarefas para serem executadas novamente.
- As VMs Spot têm uma quota de vCPU separada que difere da das VMs dedicadas. A quota para VMs Spot é superior à quota das VMs dedicadas, porque as VMs Spot custam menos. Para obter mais informações, veja Quotas e limites do serviço Batch.
Considerações e casos de utilização
Muitas cargas de trabalho do Batch são uma boa opção para VMs Spot. Considere utilizá-las quando as tarefas forem divididas em muitas tarefas paralelas ou quando tiver muitas tarefas que são ampladas e distribuídas em muitas VMs.
Alguns exemplos de casos de utilização de processamento em lotes adequados para utilizar VMs Spot são:
- Desenvolvimento e teste: em particular, se estiverem a ser desenvolvidas soluções em grande escala, podem ser realizadas poupanças significativas. Todos os tipos de testes podem beneficiar, mas os testes de carga e regressão em grande escala são excelentes utilizações.
- Complemento da capacidade a pedido: as VMs Spot podem ser utilizadas para complementar VMs dedicadas regulares. Quando disponíveis, as tarefas podem ser dimensionadas e, portanto, concluídas mais rapidamente para um custo mais baixo; quando não estiver 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 as tarefas têm de ser concluídas, é possível tolerar potenciais quebras de capacidade; no entanto, com a adição de tarefas de VMs Spot frequentemente executadas mais rapidamente e com um custo mais baixo.
Os conjuntos do Batch podem ser configurados para utilizar VMs Spot de algumas formas:
- Um conjunto só pode utilizar VMs Spot. Neste caso, o Batch recupera qualquer capacidade preempida quando disponível. Esta configuração é a forma mais barata de executar tarefas.
- As VMs Spot podem ser utilizadas com uma linha de base fixa de VMs dedicadas. O número fixo de VMs dedicadas garante que há sempre alguma capacidade para manter um trabalho a progredir.
- Um conjunto pode utilizar uma combinação dinâmica de VMs dedicadas e Spot, para que as VMs Spot mais baratas sejam utilizadas apenas quando disponíveis, mas as VMs dedicadas a preços completos sejam aumentados verticalmente quando necessário. Esta configuração mantém uma quantidade mínima de capacidade disponível para manter o progresso das tarefas.
Tenha em atenção as seguintes práticas ao planear a utilização de VMs Spot:
- Para maximizar a utilização de capacidade excedentária no Azure, as tarefas adequadas podem aumentar horizontalmente.
- Ocasionalmente, as VMs podem não estar disponíveis ou estar preempidas, o que resulta numa capacidade reduzida para tarefas e pode levar à interrupção e nova execução de tarefas.
- As tarefas com tempos de execução mais curtos tendem a funcionar melhor com VMs Spot. Os trabalhos com tarefas mais longas podem ser mais afetados se forem interrompidos. Se as tarefas de execução prolongada implementarem pontos de verificação para guardar o progresso à medida que são executadas, este impacto poderá ser reduzido.
- As tarefas de MPI de execução prolongada que utilizam várias VMs não são adequadas para utilizar VMs Spot, uma vez que uma VM preempida pode fazer com que todo o trabalho tenha de ser executado novamente.
- Os nós spot podem ser marcados como inutilizáveis se as regras do grupo de segurança de rede (NSG) estiverem configuradas incorretamente.
Criar e gerir conjuntos com VMs Spot
Um conjunto do Batch pode conter VMs dedicadas e Spot (também referidas como nós de computação). Pode definir o número de destino 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 pretende ter no conjunto.
Por exemplo, para criar um conjunto com máquinas virtuais do Azure (neste caso, VMs do 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);
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 conjunto têm uma propriedade para indicar se o nó é uma VM dedicada ou Spot:
bool? isNodeDedicated = poolNode.IsDedicated;
As VMs podem ocasionalmente ser preempidas. Quando ocorre a preempção, as tarefas que estavam em execução nas VMs de nó preempidas são colocadas em fila e executadas novamente.
Para conjuntos de Configuração de Máquina Virtual, o Batch também executa os seguintes comportamentos:
- As VMs preempidas têm o estado atualizado para Preempted.
- A VM é efetivamente eliminada, o que leva à perda de quaisquer dados armazenados localmente na VM.
- Uma operação de nós de lista no conjunto continuará a devolver os nós preempidos.
- O conjunto tenta alcançar continuamente o número de destino de nós Spot disponíveis. Quando a capacidade de substituição é encontrada, os nós mantêm os respetivos IDs, mas são reinicializados, passando por Criar e Iniciar estados antes de estarem disponíveis para agendamento de tarefas.
- As contagens de preempção estão disponíveis como uma métrica no portal do Azure.
Dimensionar conjuntos que contêm VMs Spot
Tal como acontece com os conjuntos que consistem apenas em VMs dedicadas, é possível dimensionar um conjunto que contenha VMs Spot ao chamar o método Redimensionar ou ao utilizar o dimensionamento automático.
A operação de redimensionamento do conjunto utiliza 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 conjunto suporta VMs Spot da seguinte forma:
- Pode obter ou definir o valor da variável definida pelo serviço $TargetLowPriorityNodes.
- Pode obter o valor da variável definida pelo serviço $CurrentLowPriorityNodes.
- Pode obter o valor da variável definida pelo serviço $PreemptedNodeCount. Esta variável devolve o número de nós no estado preempido e permite-lhe aumentar ou reduzir verticalmente o número de nós dedicados, consoante o número de nós preemptados indisponíveis.
Configurar tarefas e tarefas
Os trabalhos e as tarefas podem exigir alguma configuração adicional para nós Spot:
- A propriedade JobManagerTask de uma tarefa tem uma propriedade AllowLowPriorityNode . Quando esta propriedade é verdadeira, a tarefa do gestor de tarefas pode ser agendada num nó dedicado ou Spot. Se for falso, a tarefa do gestor de tarefas está agendada apenas para um nó dedicado.
- A
AZ_BATCH_NODE_IS_DEDICATED
variável de ambiente está disponível para uma aplicação de tarefas para que possa determinar se está a ser executada num Spot ou num nó dedicado.
Ver métricas para VMs Spot
Estão disponíveis novas métricas no portal do Azure para nós Spot. Estas métricas são:
- Contagem de Nós de Low-Priority
- Contagem de Núcleos do Low-Priority
- Contagem de Nós Preempted
Para ver estas métricas no portal do Azure
- No portal do Azure, navegue para a sua conta do Batch.
- Selecione Métricas na secção Monitorização .
- Selecione as métricas pretendidas 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 expulsões baseadas em preços. Só podem ser expulsos por motivos de capacidade.
- As VMs Spot só estão disponíveis para conjuntos de Configuração de Máquinas Virtuais e não para conjuntos de Configuração do Serviço Cloud, que são preteridos.
- As VMs spot não estão disponíveis para algumas clouds, tamanhos de VM e tipos de oferta de subscrição. Veja mais sobre as limitações do Spot.
- Atualmente, os discos de SO efémero não são suportados com VMs Spot devido à política de expulsão gerida pelo serviço de Stop-Deallocate.
Passos seguintes
- Saiba mais sobre o fluxo de trabalho do serviço Batch e os recursos primários , como conjuntos, nós, tarefas e tarefas.
- Saiba mais sobre o Ferramentas e APIs do Batch disponíveis para criação de soluções para o Batch.
- Comece a planear a mudança de VMs de baixa prioridade para VMs Spot. Se utilizar VMs de baixa prioridade com conjuntos de Configuração Serviços Cloud (que foram preteridos), planeie migrar para conjuntos de configuração de Máquinas Virtuais.