Usando VMs spot no Azure CycleCloud
O Azure CycleCloud dá suporte à implantação de VMs Spot em nodearrays para reduzir consideravelmente o custo operacional dos clusters.
Cuidado
As VMs spot não são apropriadas para todas as cargas de trabalho e tipos de cluster. Eles não oferecem nenhum SLA para disponibilidade ou capacidade. Elas são instâncias "preemptíveis" ou "de baixa prioridade" e podem ser removidas pela malha do Azure para gerenciar a capacidade e conforme o preço spot muda.
Configurando um Nodearray para Spot
Para habilitar o Spot para uma nodearray, basta definir Interruptible
como true na [[nodearray]]
seção.
O CycleCloud permite que os clusters especifiquem uma MaxPrice
instância do Spot. Como o preço spot pode ser ajustado periodicamente e pode variar significativamente entre regiões e SKUs, os usuários permitem que os MaxPrice
usuários controlem o preço máximo (em $/hora) que estão dispostos a pagar por uma VM. Por padrão, o CycleCloud define MaxPrice=-1
quando não especificado de outra forma, o que significa "não remover com base no preço spot". Com essa configuração, as instâncias serão removidas apenas devido a alterações nas demandas de capacidade ou outras decisões no nível da plataforma.
Consulte o Preço spot para obter detalhes sobre preços variáveis para instâncias spot.
Para a maioria dos aplicativos HPC, MaxPrice=-1
é uma boa opção padrão. No entanto, se uma nodearray der suporte ao dimensionamento automático de várias seleções em um intervalo de SKUs de VM, MaxPrice
também poderá ser personalizado para criar uma preferência por SKUs com preços mais baixos na lista de várias seleções.
[cluster demo]
[[nodearray execute]]
Interruptible = true
MaxPrice = 0.2
Para obter detalhes completos, consulte Spot Máquinas Virtuais no guia de modelo de cluster.
Remoção de VM spot
O CycleCloud monitora remoções pontuais por meio do recurso Eventos Agendados . Quando um evento de preempção spot é detectado, o CycleCloud é notificado pela VM e a instância é movida para um estado "aguardando remoção".
Perguntas frequentes
O uso do Spot com o CycleCloud tem algumas considerações específicas para cargas de trabalho de HPC e dimensionamento automático do CycleCloud.
Quando devo considerar o uso do Spot?
- Seus trabalhos individuais são relativamente curtos?
- Uma boa regra geral é que os trabalhos executados em menos de uma hora podem ser um bom ajuste para instâncias spot, porque relativamente pouco progresso futuro será perdido se a instância for removida.
- O agendador tenta/redireciona automaticamente trabalhos em hosts que falham?
- Seus trabalhos são seguros para executar novamente se o host for removido durante a execução?
- Em geral, as instâncias spot são melhores para cargas de trabalho sem estado.
- Minimizar o custo da execução é mais importante do que o tempo de conclusão?
- O Spot geralmente é perfeito para cargas de trabalho que podem ser agendadas em filas de baixa prioridade ou de preenchimento traseiro local.
- Esse é um dos casos em que o Spot pode ser apropriado até mesmo para trabalhos de MPI curtos.
Quando devo evitar o uso do Spot?
- Se seus trabalhos forem trabalhos de HPC firmemente acoplados (por exemplo, trabalhos de MPI), provavelmente não serão bons candidatos para o Spot.
- Se o trabalho for crítico e/ou tiver um prazo para conclusão, as instâncias de prioridade regulares poderão ser mais adequadas, pois remoções e novas tentativas podem estender o tempo até a conclusão.
- No entanto, essa pode ser uma excelente oportunidade para configurar seu cluster para usar uma combinação de instâncias de prioridade regular e Spot para garantir que o prazo seja cumprido ao tentar reduzir o runtime e o custo adicionando instâncias spot.
- Se seus trabalhos não forem seguros para executar novamente, o Spot deverá ser evitado.
- Por exemplo, se o trabalho modificar um banco de dados durante a execução, a nova execução automática do trabalho poderá causar erros ou resultados inválidos.
- Se os runtimes de trabalhos forem muito longos, o Spot pode não ser uma boa opção.
- Para processos longos, tanto a chance de remoção spot quanto os custos de dólar e tempo das tentativas aumentam.
- No entanto, esse é um caso que pode exigir a medição caso a caso.
Remoção/Preempção
Consulte a Política de Remoção de Spot para obter detalhes sobre a remoção de spot no Azure.
Q. O CycleCloud pode acompanhar remoções/preempções da instância spot do CycleCloud?
a. Sim. Um evento de remoção spot gerará uma notificação do Log de Eventos na página da interface do usuário de clusters.
Q. Como os usuários são notificados de remoção?
a. Depois que um nó do CycleCloud for removido, os usuários verão uma mensagem de log no log de eventos da interface do usuário do CycleCloud para o cluster. Os usuários também podem se registrar para receber um evento do CycleCloud por meio do Azure EventGrid depois que uma instância spot é removida.
- Os usuários podem verificar uma notificação de remoção no computador 30 segundos antes da remoção. Consulte Eventos Agendados para obter detalhes sobre como se registrar no evento.
- Em geral, a remoção deve ser considerada semelhante a puxar o plugue em um computador local e deve ser tratado da mesma maneira.
- IMPORTANTE Os manipuladores de eventos não devem reconhecer o evento de remoção de ponto, pois o manipulador de eventos cyclecloud pode não receber o evento se ele for reconhecido.
Q. Com que frequência ocorre a remoção?
a. A taxa de remoção é altamente variável e depende em grande parte das alterações na demanda em toda a região.
Q. Por que as instâncias são removidas?
a. As VMs spot não garantem disponibilidade e podem ser removidas a qualquer momento. Consulte a documentação da VM spot para obter detalhes. Se uma nodearray tiver definido uma MaxPrice
instância, as instâncias serão removidas se o preço spot subir acima do MaxPrice
. Isso tende a ser raro , já que o preço spot se move muito lentamente. Aqui estão alguns cenários que podem disparar uma remoção:
- Reduções na capacidade spot à medida que a demanda por VMs de prioridade regular aumenta.
- Eventos de nível de plataforma, como manutenção de hardware planejada.
Como meu fluxo de trabalho é afetado pela remoção?
Q. O que acontece com meus trabalhos quando uma instância spot é removida?
a. A menos que os trabalhos sejam codificados para lidar com a notificação de remoção de 30 segundos e tratá-la adequadamente, o nó será simplesmente encerrado e o trabalho falhará (e esperamos tentar novamente).
Q. Os nós são excluídos do cluster?
a. Sim, os nós serão limpos na interface do usuário do CycleCloud. Em agendadores com suporte, os nós também serão limpos no agendador.
Q. Os trabalhos precisam ser executados novamente?
a. Em geral, é trabalho do agendador tentar novamente/executar novamente os trabalhos que são removidos. No entanto, muitas classes de trabalho não são tolerantes a novas tentativas (por exemplo, se eles gravam dados parciais no armazenamento persistente à medida que são executados). Esses trabalhos podem não ser bons candidatos para execução em instâncias spot.
Q. Posso usar uma combinação de VMs spot e sob demanda/prioridade regular?
a. Sim. Você pode usar nodearrays spot (Interruptible
) e não spot separadas para criar uma combinação de Spot e Regular-Priority. O uso de uma combinação de tipos de instância geralmente requer tomar algumas decisões de configuração dependendo dos requisitos e do agendador escolhido pelo usuário. Aqui estão algumas configurações comuns:
- Separe as VMs spot e Regular-Priority em filas separadas no agendador.
- Essa configuração permite que o remetente direcione facilmente trabalhos no tipo de VM apropriado
- Crie um único pool de recursos grande com instâncias spot e Regular-Priority.
- Essa configuração pode ser útil para cargas de trabalho altamente escalonáveis que usam uma pequena porcentagem de instâncias de prioridade regulares para garantir o progresso e uma grande porcentagem de Spot para reduzir o custo e o runtime.
Q. Posso alterar a Política de Remoção spot para as nodearrays do CycleCloud?
a. Sim. Você pode definir o EvictionPolicy
atributo diretamente na nodearray para alterar a política para ou Delete
Deallocate
(padrão: Delete
).
No entanto, no momento, isso só é útil para dimensionadores automáticos personalizados que lidam adequadamente com desalocações. Os dimensionadores automáticos atuais do Azure CycleCloud esperam que as instâncias spot sejam excluídas após a remoção.
Suporte do agendador para remoção spot no CycleCloud
Consulte o guia específico do agendador para obter informações detalhadas sobre a implementação do CycleCloud para o agendador.
Q. Como o dimensionador automático do meu Agendador lida com a remoção do Spot?
a. Todos os dimensionadores automáticos para os agendadores internos/com suporte (HTCondor, GridEngine, PBS Professional, Slurm, LSF) tentam lidar com remoções pontuais normalmente. Em geral, a instância removida será removida do Agendador e, se a demanda de capacidade for maior do que a nova capacidade disponível após a remoção, o dimensionador automático substituirá a instância.
Os dimensionadores automáticos personalizados devem ser criados para esperar remoções pontuais ou falhas gerais do computador e lidar com eles normalmente.
Q. O que eu deveria esperar que acontecesse com os trabalhos que estavam em execução na instância removida?
a. Isso cabe, em grande parte, ao usuário configurar ao enviar o trabalho. Alguns agendadores, como GridEngine, também permitem que a ação padrão seja configurada por fila. Por padrão, todas as implantações internas do agendador do CycleCloud, com exceção do HTCondor, são configuradas para marcar os trabalhos como com falha quando o nó em que estão sendo executados é removido ou encerrado inesperadamente. Esse comportamento é por design, pois somente o usuário pode saber se seus trabalhos podem ser repetidos com segurança.