Sobre a flexibilidade de instâncias para VMs criadas em massa

Ao criar máquinas virtuais (VMs) em massa em uma região usando o Compute Engine, se o aplicativo não estiver restrito a um único tipo de máquina, será possível aumentar a taxa de sucesso do provisionamento do número necessário de VMs configurando a flexibilidade de instâncias. A flexibilidade de instâncias permite especificar um ou mais tipos de máquina adequados para sua carga de trabalho. Em seguida, o Compute Engine provisiona VMs usando um ou mais desses tipos de máquina, com base na capacidade e na disponibilidade de cotas. Uma única solicitação de inserção em massa pode criar VMs de vários tipos de máquina diferentes.

A flexibilidade de instâncias ajuda a maximizar a disponibilidade de recursos durante picos de demanda, melhorar o custo-benefício e adotar com segurança o hardware mais recente. Para mais informações, consulte Otimizar o provisionamento de computação.

Neste documento, descrevemos como a flexibilidade de instâncias funciona para VMs criadas em massa, incluindo as limitações e as substituições de propriedades de instância para discos e plataformas de CPU mínimas. Para mais informações sobre como configurar a flexibilidade de instâncias, consulte Criar VMs em massa com flexibilidade de instâncias.

Usar a flexibilidade de instâncias

Para configurar a flexibilidade de instâncias, liste os tipos de máquina adequados definindo uma ou mais seleções de instâncias na solicitação de inserção em massa regional. Por exemplo, em uma solicitação REST, inclua o objeto instanceFlexibilityPolicy, em que você define um ou mais objetos instanceSelections, cada um contendo uma lista de tipos de máquina.

Também é possível especificar tipos de máquina que são executados em diferentes plataformas de CPU ou que têm requisitos de disco diferentes. Para usar tipos de máquina com requisitos de hardware diferentes, use uma seleção de instâncias para substituir as propriedades correspondentes das propriedades de instância da solicitação (instanceProperties). Para mais informações, consulte Substituições de propriedades de instância em seleções de instâncias.

Quando o Compute Engine recebe a solicitação, ele primeiro valida os tipos de máquina e a compatibilidade zonal deles, excluindo todas as entradas inválidas. Se houver pelo menos uma configuração válida, a operação vai continuar.

Em seguida, o Compute Engine tenta provisionar VMs com base no hardware, na cota e nas reservas disponíveis. Se você configurar classificações para as seleções de instância, as seleções com uma classificação mais baixa serão priorizadas. Em cada classificação, o Compute Engine considera as reservas não utilizadas e as orientações de VM spot para selecionar tipos de máquina com menor probabilidade de preempção.

Substituições de propriedades de instância em seleções de instâncias

Ao fazer uma seleção de instâncias, é possível especificar outras propriedades de instância, como plataforma de CPU mínima (minCpuPlatform) e discos (disks), para substituir ou adicionar às propriedades definidas nas propriedades de instância da solicitação (instanceProperties). Quando o Compute Engine escolhe um tipo de máquina de uma seleção de instâncias para criar VMs, ele usa as propriedades de instância especificadas nessa seleção. Se você não especificar substituições para uma seleção de instância, o Compute Engine vai usar as propriedades correspondentes de instanceProperties para as VMs criadas com base nessa seleção.

Substituir as propriedades da instância no nível de seleção da instância oferece mais controle e flexibilidade ao usar diferentes configurações de hardware em uma única solicitação de inserção em massa.

Substituições de plataforma de CPU mínima

É possível especificar uma plataforma de CPU mínima (minCpuPlatform) para VMs que o Compute Engine cria com base nos tipos de máquina em uma seleção de instâncias. Essa substituição permite misturar diferentes tipos de máquina e aplicar seletivamente plataformas de CPU mínimas. Cada tipo de máquina em uma seleção de instância precisa ser compatível com a plataforma de CPU mínima efetiva, seja especificada na seleção ou herdada de instanceProperties.

Como alternativa, é possível definir o campo minCpuPlatform como AUTOMATIC. Essa configuração substitui o valor minCpuPlatform em instanceProperties e permite que o Compute Engine use qualquer plataforma de CPU compatível com os tipos de máquina na seleção de instâncias.

Para misturar tipos de máquina em que apenas uma série é compatível com uma plataforma de CPU específica, coloque-os em seleções de instâncias separadas. Por exemplo, os tipos de máquina C4 são compatíveis com a plataforma Intel Emerald Rapids, enquanto os tipos de máquina C3 são compatíveis com a plataforma Intel Sapphire Rapids. Para misturar C4 e C3 em uma solicitação de inserção em massa e exigir que C3 seja executado no Intel Sapphire Rapids, configure duas seleções de instância da seguinte maneira:

  • Seleção C3: defina o campo minCpuPlatform como Intel Sapphire Rapids.
  • Seleção C4: deixe o campo minCpuPlatform sem definição ou defina-o como AUTOMATIC.

É possível definir a mesma preferência para os dois tipos de máquina atribuindo a mesma classificação às duas seleções de instância.

Substituições de disco

É possível especificar uma configuração de disco personalizada em uma seleção de instâncias para substituir o disco de inicialização ou outros discos especificados em instanceProperties ou para anexar outros discos. Essa substituição permite personalizar tamanhos de disco de inicialização, imagens de inicialização ou volumes do Hyperdisk anexados para cada série de máquinas na solicitação. Por exemplo, é possível substituir o tamanho do disco de inicialização ou anexar um disco de dados extra quando o Compute Engine seleciona um tipo de máquina maior, mantendo a mesma preferência ao atribuir a mesma classificação às seleções de instância.

Se um disco em uma seleção de instâncias tiver um deviceName que corresponda a um disco em instanceProperties, o Compute Engine vai substituir a configuração desse disco. Se o deviceName não corresponder a nenhum disco em instanceProperties, o Compute Engine o anexará como um disco adicional. Verifique se a configuração de disco efetiva é compatível com todos os tipos de máquina na seleção de instâncias.

O diagrama a seguir mostra como o Compute Engine mescla as configurações de disco de instanceProperties e uma seleção de instância:

Diagrama mostrando que os discos em uma seleção de instância substituem os discos com
nomes de dispositivo correspondentes nas propriedades da instância e são anexados como discos extras quando
os nomes de dispositivo não
correspondem. Para instruções sobre como especificar a plataforma de CPU mínima e as substituições de disco ao criar VMs em massa, consulte Criar VMs com vários tipos de máquina, plataforma de CPU mínima e substituições de disco.

Para mais informações sobre as limitações ao usar substituições de seleção de instâncias, consulte a seção Limitações neste documento.

Exemplo: plataforma de CPU mínima e substituições de disco

É possível usar substituições em uma política de flexibilidade de instâncias para provisionar VMs em séries de máquinas que exigem diferentes plataformas de CPU, imagens de inicialização ou tipos de disco.

Considere uma solicitação de inserção em massa com a seguinte configuração base de instanceProperties que define um disco de inicialização hyperdisk-balanced padrão:
"instanceProperties": {
  "disks": [
    {
      "autoDelete": true,
      "deviceName": "boot-disk",
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
        "diskSizeGb": "50",
        "diskType": "hyperdisk-balanced"
      }
    }
  ],
  "networkInterfaces": [{}]
}

A configuração instanceFlexibilityPolicy a seguir na mesma solicitação substitui a configuração instanceProperties base especificando a plataforma de CPU mínima e as configurações de disco em duas seleções de instâncias:

"instanceFlexibilityPolicy": {
  "instanceSelections": {
    "first-preference": {
      "rank": 1,
      "machineTypes": ["c4-standard-4"],
      "minCpuPlatform": "Intel Emerald Rapids",
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
            "diskSizeGb": "50",
            "diskType": "hyperdisk-balanced"
          }
        }
      ]
    },
    "second-preference": {
      "rank": 2,
      "machineTypes": ["c3-standard-4"],
      "minCpuPlatform": "Intel Sapphire Rapids",
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
            "diskSizeGb": "100",
            "diskType": "hyperdisk-balanced"
          }
        },
        {
          "autoDelete": true,
          "deviceName": "data-disk",
          "boot": false,
          "initializeParams": {
            "diskSizeGb": "100",
            "diskType": "hyperdisk-balanced"
          }
        }
      ]
    }
  }
}

Neste exemplo, o Compute Engine aplica as seguintes substituições, dependendo da seleção de instância usada para criar VMs:

  • Primeira preferência (first-preference): para VMs c4-standard-4, a seleção define minCpuPlatform como Intel Emerald Rapids e usa um disco de inicialização hyperdisk-balanced de 50 GB.
  • Segunda preferência (second-preference): para VMs c3-standard-4, a seleção define minCpuPlatform como Intel Sapphire Rapids, substitui boot-disk para usar um disco hyperdisk-balanced de 100 GB e anexa um disco hyperdisk-balanced extra de 100 GB chamado data-disk.

Seleção de zona quando um formato de distribuição de destino é definido

Ao usar a flexibilidade de instâncias com uma solicitação bulkInsert regional, é possível especificar um formato de distribuição de destino para controlar como as VMs são distribuídas entre as zonas na região. O Compute Engine seleciona zonas para provisionar VMs com base nesse formato, da seguinte maneira:

  • ANY_SINGLE_ZONE: o Compute Engine seleciona uma única zona que tem a maior capacidade para tipos de máquina com uma preferência maior.
  • BALANCED: o Compute Engine distribui as VMs da maneira mais uniforme possível entre as zonas com recursos disponíveis. Em cada zona, o Compute Engine prioriza os tipos de máquina com uma preferência maior.
  • ANY: o Compute Engine seleciona zonas com recursos disponíveis. Se as classificações estiverem configuradas, o Compute Engine priorizará as zonas para provisionar VMs com tipos de máquina com uma preferência maior.

Para mais informações, consulte Criar VMs em massa em uma região.

Provisionamento mínimo de VMs e flexibilidade de instâncias

Se você definir um valor para o número mínimo de VMs necessárias (minCount) na solicitação bulkInsert, a API vai tentar criar pelo menos esse número de VMs. Se o Compute Engine não puder provisionar o número mínimo de VMs necessárias (minCount), toda a operação falhará e o Compute Engine não criará VMs. Quando você usa minCount com flexibilidade de instâncias, o Compute Engine prioriza o provisionamento de VMs com base na disponibilidade em relação à classificação, da seguinte maneira:

  • O Compute Engine prioriza o provisionamento do número máximo de VMs até count, mesmo que isso signifique usar máquinas de menor preferência. Por exemplo, se a solicitação especificar um mínimo de uma VM obrigatória (minCount=1) e um máximo de 10 VMs (count=10), e se o Compute Engine tiver capacidade para provisionar uma VM de maior preferência ou seis VMs de menor preferência, o Compute Engine provisionará as seis VMs de menor preferência.
  • Se o Compute Engine puder provisionar o mesmo número máximo de VMs até count usando diferentes seleções de instâncias, ele priorizará a seleção com maior preferência. Por exemplo, se a solicitação especificar um mínimo de uma VM necessária (minCount=1) e um máximo de 10 VMs (count=10), e se o Compute Engine puder provisionar seis VMs usando uma seleção de instância de preferência mais alta ou mais baixa, o Compute Engine provisionará as seis VMs da seleção de preferência mais alta.

Para mais informações, consulte a propriedade minCount em bulkInsert.

Validação de inserção em massa e cenários de erro

O Compute Engine realiza uma validação inicial dos tipos de máquina e da compatibilidade zonal deles, excluindo todas as entradas inválidas. Se pelo menos uma configuração válida permanecer após essa verificação inicial, o Compute Engine vai prosseguir com a criação da VM.

No entanto, algumas validações da configuração só podem ocorrer depois que o Compute Engine seleciona as zonas e os tipos de máquina a serem usados para o provisionamento, com base na política de flexibilidade de instâncias e na capacidade disponível. Se, durante essa fase de validação posterior, a combinação específica de tipo de máquina e zona escolhida para provisionamento for considerada inválida, toda a solicitação de inserção em massa falhará com erros de validação. Essa falha pode acontecer mesmo que outras configurações no instanceFlexibilityPolicy tenham sido válidas inicialmente.

Limitações

As limitações a seguir se aplicam quando você usa a flexibilidade de instâncias para a criação de VMs em massa:

  • Só é possível especificar a flexibilidade de instâncias para solicitações regionais de bulkInsert. Não é possível usá-la com solicitações zonais.
  • A flexibilidade de instâncias não é compatível com VMs flex-start e reservas adiantadas.
  • Não é possível usar a flexibilidade de instâncias com os recursos do Hipercomputador de IA ou com GPUs A3 Ultra, A4 e mais recentes.
  • É possível especificar no máximo 10 tipos de máquina diferentes em até 10 seleções de instâncias diferentes.
  • Ao substituir minCpuPlatform ou disks em uma seleção de instância, as seguintes limitações também se aplicam:

A seguir