Instâncias de VM preemptiva

Esta página descreve instâncias de máquina virtual preemptiva (VM). Para saber como criar uma instância preemptiva, leia a documentação sobre isso. 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á interromper 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 seus apps 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 interrompidas durante o processamento, o job fica 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 atuais e sem exigir que você pague o preço total de instâncias normais extra.

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 interromper 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 interrompe 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 para uma instância normal de VM 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. Para maior clareza, elas foram excluídas do SLA do Google Compute Engine.
  • Os créditos de Nível gratuito do Google Cloud 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 encerramento 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 interromper 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 VM. 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 a interrupção forçada de instâncias. O Compute Engine não utiliza o uso de CPU de uma instância ou outro comportamento para determinar se a instância será ou não interrompida à força. No entanto, instâncias maiores têm uma chance maior de serem interrompidas à força, já que ocupam mais espaço. Consulte nossas práticas recomendadas para ver sugestões sobre como reduzir sua taxa de preempção. O Compute Engine não cobra por instâncias interrompidas no primeiro minuto de execução.

Para sua referência, saiba que observamos em dados históricos que a taxa de preempção média varia entre 5% e 15% por dia em cada projeto (em uma base semanal), à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 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, por exemplo, redefinindo uma instância ou executando o 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 interromper 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 alteram a maneira como você é cobrado pelo uso desses sistemas operacionais. Se o Compute Engine interromper uma instância preemptiva que executa um sistema operacional premium, você será cobrado por esse sistema como se tivesse interrompido 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 cobra os preços relacionados pelo uso do SSD local. Os SSDs locais conectados a instâncias preemptivas funcionam como SSDs locais normais, mantêm as mesmas características de persistência de dados e permanecem vinculados por toda a vida útil da instância. Solicite uma cota separada para SSDs locais preemptivos ou use a cota de SSD local normal ao criar SSDs locais preemptivos.

No Compute Engine, não haverá cobrança pelos SSDs locais se as instâncias deles forem definidas como preemptivas a partir do primeiro minuto de execução.

Para mais informações sobre SSDs locais, consulte Como adicionar SSDs locais.

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 vão recriar 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 interrupçã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 em 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