Como especificar uma plataforma mínima de CPU para instâncias de VM

Este documento explica como criar ou atualizar uma instância de máquina virtual para usar uma plataforma mínima de CPU de linha de base (minCpuPlatform) sempre que disponível.

Os data centers do Google oferecem máquinas host com Intel Xeon que contêm as plataformas de CPU Sandy Bridge, Ivy Bridge, Haswell, Broadwell e Skylake. Cada plataforma de CPU aceita recursos incrementais como AVX-2, AVX-512 etc. Alguns recursos fundamentais relacionados a sistemas, como a velocidade do relógio e o tempo de busca de acesso à memória, podem variar entre as plataformas de CPU. As diferentes zonas aceitam diversas plataformas de CPU. Você pode selecionar uma plataforma de CPU para suas instâncias de VM que atenda às necessidades específicas das suas cargas de trabalho usando a seleção mínima de plataforma.

Para saber mais sobre as plataformas de CPU disponíveis para cada zona, leia as documentações Plataformas de CPU e Regiões e zonas.

Antes de começar

Quando selecionar uma plataforma de CPU mínima

Provavelmente você não precisará selecionar um mínimo de plataformas de CPU para suas VMs. Cada zona do Compute Engine tem uma plataforma de CPU padrão, listada na documentação Regiões e zonas. Qualquer VM recém-criada com uma especificação de CPU mínima receberá automaticamente a plataforma de CPU padrão.

O Google recomenda que você selecione uma plataforma de CPU mínima apenas quando isso acarretar ganhos de desempenho significativos para sua carga de trabalho ou fornecer determinados recursos (AVX2, AVX512 ou MPX) utilizados pelo seu código. A seleção de uma plataforma de CPU mínima específica para sua VM apresenta restrições adicionais que afetam a capacidade de iniciar VMs em zonas que estejam com oferta limitada para algumas plataformas de CPU.

Como funciona a seleção de uma plataforma de CPU mínima

Quando você especifica uma plataforma mínima de CPU:

  • O Compute Engine usa essa plataforma sempre que ela está disponível.

  • Se o Compute Engine suspender o uso de uma plataforma de CPU em uma zona, a VM poderá continuar sendo executada em uma plataforma de CPU melhor que esteja disponível nessa zona depois que você interromper e reiniciar a VM. A suspensão de uso de plataformas de CPU é uma situação incomum e costuma ser notificada com antecedência.

Depois que você selecionar uma plataforma de CPU mínima para uma VM:

  • sua VM usará essa plataforma de CPU, a menos que você a interrompa e altere a plataforma de CPU;
  • sua VM manterá a mesma plataforma de CPU selecionada após a migração em tempo real;
  • o Google poderá, esporadicamente, atualizar a plataforma de CPU padrão de uma zona. Para mais informações, leia Como suspender o uso ou fazer upgrade de uma plataforma de CPU padrão.

Como suspender o uso ou fazer upgrade de uma plataforma de CPU padrão

De vez em quando, o Google suspende o uso de uma CPU mais antiga ou atualiza a plataforma de CPU padrão em uma determinada zona porque:

  • uma zona cresce em capacidade ao longo do tempo e muda proativamente para uma plataforma de CPU mais nova quando ela é disponibilizada;
  • a cada três a cinco anos, o Google substitui plataformas antigas de CPU por plataformas mais recentes e atualiza a plataforma de CPU padrão para a próxima plataforma mais recente disponível nessa zona.

Quando uma nova região ou zona for criada, será usada a plataforma de CPU mais recente na época.

Quando uma zona tiver seu uso suspenso ou mudar a plataforma de CPU padrão de uma zona, o Google avisará com antecedência aos clientes afetados fornecendo um cronograma detalhado e instruções específicas para fazer a transição para a plataforma mais nova.

Caso o Compute Engine faça a transição da sua VM para uma plataforma mais recente, as VMs nunca usarão uma plataforma mais antiga que a plataforma mínima de CPU especificada e o custo da VM não será alterado.

Especificações

Limitações

  • Os tipos de máquina predefinidos f1-small e g1-small são VMs de uso geral com núcleo compartilhado. Eles não têm as opções de seleção de plataforma de CPU.

Disponibilidade

A disponibilidade de plataformas de CPU específicas varia de uma zona para outra, conforme o hardware disponível em cada zona. Veja a seguir uma lista de plataformas mínimas de CPU compatíveis e a sintaxe válida para cada uma delas:

  • Processadores Intel Xeon (Skylake): "Intel Skylake"
  • Processadores Intel Xeon E5 (Sandy Bridge): "Intel Sandy Bridge"
  • Processadores Intel Xeon E5 v2 (Ivy Bridge): "Intel Ivy Bridge"
  • Processadores Intel Xeon E5 v3 (Haswell): "Intel Haswell"
  • Processadores Intel Xeon E5 v4 (Broadwell): "Intel Broadwell"
  • Processadores Intel Xeon (Cascade Lake): "Intel Cascade Lake"

Somente determinadas zonas contêm várias plataformas de CPU e estão disponíveis para seleção de plataforma mínima de CPU. Se você usar nós de locatário individual, cada nó usará a plataforma de CPU correspondente ao tipo de nó definido no modelo de nó. Como resultado, não é possível especificar uma plataforma mínima de CPU para VMs que usam nós de locatário individual.

É possível visualizar uma lista de plataformas compatíveis para uma zona específica usando o comando gcloud compute zones describe ou fazendo uma solicitação à API.

gcloud

Para ver as plataformas de CPU na sua zona:

gcloud compute zones describe [ZONE]

Por exemplo, a saída desse comando lista as plataformas de CPU para a zona us-west1-a:

$ gcloud compute zones describe us-west1-a
availableCpuPlatforms:
- Intel Skylake
- Intel Broadwell
...

API

Na API, faça uma solicitação GET à zona em questão:

GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/[ZONE]

A resposta contém uma lista de plataformas de CPU compatíveis com essa zona. Por exemplo:

{
 "kind": "compute#zone",
 "id": "2210",
 "creationTimestamp": "2016-06-10T09:30:55.189-07:00",
 "name": "us-west1-a",
 "description": "us-west1-a",
 "status": "UP",
 "region": "https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-west1",
 "selfLink": "https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-west1-a",
 "availableCpuPlatforms": [
  "Intel Broadwell",
  "Intel Haswell"
 ]
}

Como selecionar uma plataforma de CPU mínima para uma nova VM

Você pode especificar uma plataforma mínima de CPU durante a criação da instância.

Console

  1. Acessar a página Instâncias de VMs

    Acessar a página "Instâncias de VM"

  2. Se solicitado, selecione o projeto e clique em Continuar.
  3. Clique no botão Criar instância.
  4. Na seção Configuração da máquina, clique em Plataforma de CPU e GPU.
  5. Selecione uma opção no menu suspenso Plataforma de CPU.
  6. Continue com o resto do processo de criação da instância.

gcloud

Para criar uma nova VM com uma plataforma de CPU mínima usando a ferramenta de linha de comando gcloud, forneça a nova sinalização --min-cpu-platform. Ao especificar a plataforma de CPU, forneça a plataforma usando o nome amigável, como Intel Broadwell e Intel Haswell. Use a seção de zonas disponíveis para determinar quais plataformas estão disponíveis para cada zona.

Por exemplo, para especificar uma plataforma de CPU mínima de Intel Haswell:

gcloud compute instances create example-instance \
    --zone europe-west1-b \
    --min-cpu-platform "Intel Haswell"

Se você quiser apagar a especificação mínima da plataforma de CPU, defina --min-cpu-platform como AUTOMATIC.

API

Na API de Compute Engine, inclua a propriedade minCpuPlatform como parte do corpo da solicitação. O valor de minCpuPlatform precisa ser o nome amigável da plataforma, como Intel Haswell, Intel Broadwell e Intel Sandy Bridge.

Por exemplo, um corpo da solicitação ficaria assim:

"name": "[INSTANCE_NAME]",
"machineType": "zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
"minCpuPlatform": "Intel Haswell",
"networkInterfaces": [{
  "accessConfigs": [{
    "type": "ONE_TO_ONE_NAT",
    "name": "External NAT"
   }],
  "network": "global/networks/default"
}],
"disks": [{
   "autoDelete": "true",
   "boot": "true",
   "type": "PERSISTENT",
   "initializeParams": {
      "sourceImage": "projects/[IMAGE_PROJECT]/global/images/family/[IMAGE]"
   }
 }]

Se você quiser apagar a especificação mínima da plataforma de CPU, defina minCpuPlatform como AUTOMATIC.

Como definir uma plataforma de CPU mínima para uma VM interrompida

Para definir uma plataforma mínima de CPU para uma instância existente, primeiro pare a instância.

Depois de parar a instância, siga as instruções abaixo para definir uma plataforma mínima de CPU e, em seguida, certifique-se de reiniciar a instância.

Console

  1. Acessar a página Instâncias de VMs

    Acessar a página "Instâncias de VM"

  2. Se solicitado, selecione o projeto e clique em Continuar.
  3. Selecione a instância interrompida a ser alterada.
  4. Clique em Editar para editar a instância.
  5. Na seção Configuração da máquina, clique em Plataforma de CPU e GPU.
  6. Selecione uma opção no menu suspenso Plataforma de CPU.
  7. Salve as alterações.
  8. Reinicie a instância.

gcloud

Use o subcomando update, seguido pela sinalização --min-cpu-platform. Especifique o nome amigável das plataformas, como Intel Haswell, Intel Broadwell e Intel Sandy Bridge. Exemplo:

gcloud compute instances update [INSTANCE_NAME] \
    --min-cpu-platform "Intel Haswell"

API

Para definir a plataforma de CPU mínima na API, faça uma solicitação de POST para o método setMinCpuPlatform e defina a propriedade minCpuPlatform no corpo da solicitação. O valor da propriedade é o nome amigável da plataforma de CPU, como Intel Haswell, Intel Broadwell e Intel Sandy Bridge. Exemplo:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE]/setMinCpuPlatform

{
  "minCpuPlatform": "Intel Haswell"
}

Como especificar uma plataforma de CPU mínima nos modelos de instância

Se você usar grupos de instâncias gerenciadas, poderá especificar uma plataforma mínima de CPU para instâncias de VM dentro de um grupo de instâncias gerenciadas.

Para especificar uma plataforma mínima de CPU, crie um modelo de instância que inclua a propriedade minCpuPlatform.

Console

  1. Acesse a página "Modelos de instância".

    Acesse a página "Modelos de instância"

  2. Se solicitado, selecione o projeto e clique em Continuar.
  3. Clique em Criar modelo de instância.
  4. Na seção Configuração da máquina, clique em Plataforma de CPU e GPU.
  5. Selecione uma opção no menu suspenso Plataforma de CPU.
  6. Continue com o processo de criação de modelo de instância.

gcloud

Usando a ferramenta gcloud, forneça a sinalização --min-cpu-platform ao criar um modelo de instância. Exemplo:

gcloud compute instance-templates create example-template \
    --min-cpu-platform "Intel Haswell"

API

Na API, adicione minCpuPlatform como parte da solicitação para criar um novo modelo de instância na API.

Por exemplo, o modelo de instância a seguir contém os campos mínimos necessários para criar um novo modelo com a adição da propriedade minCpuPlatform:

{
"name": "example-template",
"properties": {
  "machineType": "zones/us-central1-a/machineTypes/n1-standard-4",
  "minCpuPlatform": "Intel Haswell",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs":
      [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-8"
      }
    }
  ]
  }
}

A seguir