Instâncias de VM preemptivas

Esta página descreve instâncias de máquina virtual preemptiva (VM, na sigla em inglês). Para saber como criar uma instância preemptiva, leia o tópico deste link. Para saber mais sobre instâncias em geral, leia a documentação Instâncias de máquina virtual.

O que é uma instância preemptiva?

Uma VM preemptiva é uma instância que você pode criar e executar a um preço muito menor do que as normais. No entanto, o Compute Engine poderá encerrar essas instâncias (ou seja, forçar a interrupção delas) caso precise de acesso a esses recursos para outras tarefas. Instâncias preemptivas são usadas como capacidade extra do Compute Engine, por isso a disponibilidade delas varia com o uso.

Se os aplicativos forem tolerantes a falhas e puderem resistir a possíveis preempções de instância, as instâncias preemptivas poderão reduzir consideravelmente os custos do Compute Engine. Por exemplo, jobs de processamento em lote podem ser executados em instâncias preemptivas. Quando algumas dessas instâncias são encerradas durante o processamento, o job fica mais lento, mas não para por completo. As instâncias preemptivas concluem as tarefas de processamento em lote sem colocar carga de trabalho extra nas instâncias existentes e sem exigir que você pague o preço total de instâncias normais adicionais.

Limitações das instâncias preemptivas

As instâncias preemptivas funcionam como instâncias normais, mas têm as seguintes limitações:

  • O Compute Engine pode encerrar instâncias preemptivas a qualquer momento devido a eventos do sistema. A probabilidade de isso acontecer geralmente é baixa, mas pode variar de um dia para o outro e de uma zona para a outra, dependendo das condições atuais.
  • O Compute Engine sempre encerra instâncias preemptivas que estão em execução há mais de 24 horas. Certas ações redefinem esse contador de 24 horas.
  • As instâncias preemptivas são recursos finitos do Compute Engine. Por isso, pode ser que elas nem sempre estejam disponíveis.
  • Não é possível fazer migração em tempo real das instâncias preemptivas e nem configurá-las para reiniciar automaticamente quando há um evento de manutenção.
  • Devido às limitações acima, as instâncias preemptivas não são cobertas por nenhum contrato de nível de serviço e, para maior clareza, foram excluídas do SLA do Google Compute Engine.
  • Os créditos do nível gratuito do Google Cloud Platform para o Compute Engine não se aplicam a instâncias preemptivas.

Processo de preempção

O Compute Engine executa as seguintes etapas para forçar a interrupção de uma instância:

  1. O Compute Engine envia um aviso de preempção para a instância na forma de um sinal ACPI G2 Soft Off. É possível usar um script de desligamento para processar o aviso de preempção e concluir as ações de limpeza antes que a instância pare.
  2. Quando a instância não para depois de 30 segundos, o Compute Engine envia um sinal ACPI G3 Mechanical Off para o sistema operacional.
  3. O Compute Engine faz a transição da instância para um estado TERMINATED.

Você pode simular a preempção de uma instância ao pará-la.

As instâncias interrompidas continuarão aparecendo no projeto, mas você não será cobrado pelas horas da instância enquanto ela permanecer no estado TERMINATED. É possível acessar e recuperar dados de todos os discos permanentes que estejam conectados à instância, mas eles continuarão gerando custos de armazenamento até serem excluídos. Como acontece com instâncias normais, os discos permanentes marcados para exclusão automática são excluídos quando a instância preemptiva é excluída.

Se o Compute Engine encerrar uma instância preemptiva menos de um minuto depois que ela tiver sido criada, você não será cobrado pelo uso dessa instância de máquina virtual. Isso garante que você só pague por instâncias preemptivas que tenham tido tempo para concluir uma quantidade significativa de trabalho. No entanto, as cobranças de sistemas operacionais premium continuarão sendo calculadas normalmente.

Seleção de preempção

Geralmente, o Compute Engine evita forçar a interrupção de instâncias demais de um único cliente e interrompe instâncias iniciadas mais recentemente. Isso pode ser um pouco frustrante no início mas, a longo prazo, essa estratégia ajuda a minimizar a perda de trabalho em todo o cluster. O Compute Engine não cobra pelas instâncias interrompidas no primeiro minuto de execução.

Como referência, observamos em dados históricos que a taxa de preempção média varia entre 5% e 15% por dia e por projeto, às vezes com picos maiores, dependendo do horário e da zona. Tenha em mente que esta é apenas uma observação: as instâncias preemptivas não têm garantias nem SLAs para taxas de preempção ou distribuições de preempção.

Certas ações redefinem o contador de 24 horas para instâncias preemptivas. Especificamente, se você interromper e iniciar uma instância, o Compute Engine redefinirá o contador porque a instância fará a transição para o estado TERMINATED. No entanto, outras ações em que a instância permanece no estado RUNNING não redefinem o contador, como redefinir uma instância ou executar sudo reboot de dentro da VM.

Instâncias preemptivas em um grupo de instâncias gerenciadas

É possível criar instâncias preemptivas em um grupo de instâncias gerenciadas. Especifique a opção preemptiva no modelo de instância antes de criar ou atualizar o grupo.

Os grupos de instâncias gerenciadas só podem criar ou adicionar novas instâncias preemptivas quando há recursos adicionais do Compute Engine disponíveis. Se esses recursos forem limitados, os grupos de instâncias gerenciadas não serão capazes de redimensionar ou escalonar automaticamente o número de instâncias preemptivas no grupo.

Os grupos de instâncias gerenciadas sempre tentam manter o tamanho de destino ou o tamanho especificado pelo autoescalador para o grupo. Se o Compute Engine encerrar uma instância preemptiva em um grupo de instâncias gerenciadas, o grupo tentará repetidamente recriar essa instância usando o modelo de instância especificado. Se os recursos necessários ficarem disponíveis novamente, o grupo recriará a instância e manterá o tamanho do grupo de destino.

Sistemas operacionais premium em instâncias preemptivas

As instâncias preemptivas não reduzem o custo de sistemas operacionais premium e não mudam a forma de cobrança pelo uso desses sistemas. Se o Compute Engine encerrar uma instância preemptiva que executa um sistema operacional premium, você será cobrado por esse sistema como se tivesse encerrado a instância por conta própria. As cobranças por uso mínimo continuarão em vigor, e as faturas por sistemas operacionais premium continuarão sendo calculadas com arredondamento até o incremento de uso mais próximo.

Os tipos de máquina em instâncias preemptivas que executam sistemas operacionais premium são sempre cobrados por segundo e seguem os preços listados na página Preços de tipos de máquina.

SSDs locais em instâncias preemptivas

É possível iniciar uma instância de VM preemptiva com um SSD local. Nesse caso, o Compute Engine cobrará os preços preemptivos pelo uso do SSD local. Os SSDs locais anexados a instâncias preemptivas funcionam como SSDs locais normais e só permanecem durante a vida útil da instância. É possível solicitar uma cota separada para SSDs locais preemptivos, mas também é possível usar a cota normal de SSDs locais ao criar SSDs preemptivos locais.

O Compute Engine não cobrará pelos SSDs locais se as instâncias forem interrompidas no primeiro minuto de execução.

Para mais detalhes sobre SSDs locais, leia a documentação correspondente.

GPUs em instâncias preemptivas

É possível adicionar GPUs às instâncias de VM preemptivas com preços preemptivos menores para as GPUs. As GPUs anexadas a instâncias preemptivas funcionam como GPUs normais, mas persistem apenas durante a vida útil da instância. Instâncias preemptivas com GPUs seguem o mesmo processo de preempção de todas as instâncias preemptivas.

Ao adicionar uma GPU a uma instância preemptiva, você usa sua cota regular de GPUs. Se for necessário, solicite uma cota de GPUs preemptivas separada.

Durante os eventos de manutenção, as instâncias preemptivas com GPUs são interrompidas por padrão e não podem ser reiniciadas automaticamente. Para recriar suas instâncias após a interrupção forçada, use um grupo de instâncias gerenciadas. Os grupos de instâncias gerenciadas recriarão as instâncias se os recursos de vCPU, memória e GPU estiverem disponíveis.

Se você quiser receber um aviso antes que as instâncias sejam interrompidas ou se quiser configurar a instância para reiniciar automaticamente após um evento de manutenção, use uma instância não preemptiva com uma GPU. Para instâncias não preemptivas com GPUs, o Google fornece notificação com uma hora de antecedência da preempção.

O Compute Engine não cobrará pelas GPUs se as instâncias forem interrompidas no primeiro minuto de execução.

Consulte as etapas para reiniciar automaticamente uma instância não preemptiva em Como atualizar opções para uma instância.

Para saber como criar instâncias preemptivas com GPUs anexadas, leia Como criar uma instância com uma GPU.

Como testar as configurações de preempção

Para forçar a preempção, é possível executar eventos de manutenção simulados nas instâncias. Use esse recurso para testar como seus aplicativos lidam com instâncias preemptivas. Leia Como testar suas políticas de disponibilidade para aprender como testar eventos de manutenção nas suas instâncias.

Também é possível parar a instância para simular a preempção dela. Faça isso se não quiser simular um evento de manutenção e para evitar limites de cota.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine