Personalizar o número de núcleos de CPU visíveis


A personalização do número de núcleos de CPU visíveis pode oferecer controle granular sobre os custos de licenciamento, mantendo o desempenho da rede e dos discos permanentes. Essa personalização reduz o número de vCPUs disponíveis para a instância de máquina virtual (VM) e não muda o tipo de máquina nem o preço.

O Compute Engine implementa cada CPU virtual (vCPU) como um multithread de hardware que é executado em um núcleo de CPU física. Para reduzir o número de vCPUs disponíveis para uma VM, o Compute Engine permite personalizar o número de núcleos de CPU visíveis.

Os núcleos visíveis são os núcleos de CPU no hardware subjacente consumido pelas VMs. Por padrão, o número de núcleos de CPU visíveis para uma VM é o número de vCPUs no tipo de máquina dividido pelo número de linhas de execução por núcleo:

  • Núcleos de CPU visíveis = vCPUs no tipo de máquina / linhas de execução por núcleo

Por exemplo, o tipo de máquina c2-standard-60 especifica 60 vCPUs. Supondo que o padrão de duas linhas de execução por núcleo, o número de núcleos de CPU visíveis é 30. Se você reduzir o número de núcleos visíveis de 30 para 20, o número de vCPUs funcionais será reduzido de 60 para 40.

Personalize o número de núcleos de CPU visíveis se estas condições se aplicarem:

Antes de personalizar o número de vCPUs disponíveis para uma VM, considere usar um tipo de máquina personalizado.

Funções exigidas

Para ter as permissões necessárias a fim de personalizar o número de núcleos de CPU visíveis, peça ao administrador para conceder a você o papel do IAM de administrador da instância do Compute (v1) (roles/compute.instanceAdmin.v1) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para personalizar o número de núcleos de CPU visíveis. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para personalizar o número de núcleos de CPU visíveis:

  • Personalizar o número de núcleos de CPU visíveis durante a criação da VM:
    • compute.instances.create no projeto
    • Para usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem
    • Usar um snapshot para criar a VM: compute.snapshots.useReadOnly no snapshot
    • Usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância
    • Atribuir uma rede legada à VM: compute.networks.use no projeto
    • Especificar um endereço IP estático para a VM: compute.addresses.use no projeto
    • Atribuir um endereço IP externo à VM ao usar uma rede legada: compute.networks.useExternalIp no projeto
    • Especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
    • Atribuir um endereço IP externo à VM ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
    • Definir os metadados da instância de VM para a VM: compute.instances.setMetadata no projeto
    • Definir tags para a VM: compute.instances.setTags na VM
    • Definir rótulos para a VM: compute.instances.setLabels na VM
    • Definir uma conta de serviço para a VM usar: compute.instances.setServiceAccount na VM
    • Criar um disco para a VM: compute.disks.create no projeto
    • Anexar um disco atual no modo somente leitura ou de leitura e gravação: compute.disks.use no disco
    • Anexar um disco atual no modo somente leitura compute.disks.useReadOnly no disco
  • Para personalizar o número de núcleos de CPU visíveis em um grupo de VMs usando um modelo de instância: você precisa de todas as permissões que usaria durante a criação da VM e do compute.instanceTemplates.create no projeto

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

vCPUs e o número de linhas de execução por núcleo

O total de vCPUs em um tipo de máquina é o número de núcleos de CPU visíveis multiplicado pelo número de linhas de execução por núcleo. Na maioria das séries de máquinas, o número de linhas de execução por núcleo é 2, mas você pode definir manualmente o número de linhas de execução por núcleo como 1.

A tabela a seguir mostra como os núcleos de CPU visíveis, o número de linhas de execução por núcleo e o total de vCPUs disponíveis estão relacionados usando o tipo de máquina c2-standard-60 como exemplo.

Tipo de máquina Núcleos de CPU visíveis Linhas de execução por núcleo vCPUs disponíveis
c2-standard-60 30 (padrão) 2 (padrão) 60
c2-standard-60 30 (padrão) 1 30
c2-standard-60 20 2 (padrão) 40
c2-standard-60 20 1 20

Considerações sobre desempenho

A redução do número de núcleos visíveis pode afetar o desempenho da VM.

Disco permanente

  • Os limites de desempenho dos discos permanentes dependem do tipo de máquina e não são afetados pelo número de núcleos de CPU visíveis. Saiba mais em Desempenho do armazenamento em blocos.

saída de rede

  • Os limites de largura de banda de saída de rede correspondem ao tipo de máquina e não são afetados pelo número de núcleos de CPU visíveis. No entanto, o desempenho da rede varia conforme o número de vCPUs acessíveis à VM. Por exemplo, um tipo de máquina n2-standard-16 com um núcleo de CPU visível pode não conseguir usar totalmente uma conexão de 32 Gbps.

Preços

A redução do número de núcleos visíveis pode afetar o custo das VMs.

Custos de licenciamento de sistemas operacionais

  • É possível reduzir os custos de licenciamento para alguns sistemas operacionais reduzindo o número de núcleos de CPU visíveis. Os sistemas operacionais aplicáveis são aqueles que cobram por cada vCPU disponível para a VM, como Windows Server e SQL Server. Para saber sobre as opções de licenciamento desses sistemas operacionais no Compute Engine, consulte as Licenças da Microsoft.

Custos, cota e capacidade da VM

  • Os custos, a cota e a capacidade da VM permanecem os mesmos quando você personaliza o número de núcleos de CPU visíveis porque o Compute Engine cobra, rastreia a cota e aloca espaço nos tipos de máquina para as VMs como se estivessem usando o número de núcleos da CPU do tipo de máquina. Saiba mais sobre como o Compute Engine cobra pelas VMs em Preços de instâncias de VM.

Limitações

  • Não é possível personalizar o número de núcleos de CPU visíveis enquanto uma VM está no estado RUNNING. Saiba mais sobre estados de VM em Ciclo de vida da instância de VM.

  • No console do Google Cloud, quando o número de núcleos visíveis é reduzido, a métrica de utilização da CPU não pode ser escalonada até 100%. Ela é limitada ao número de núcleos de CPU visíveis dividido pelo número máximo de núcleos da CPU.

Tipos de máquina compatíveis e os respectivos valores válidos

Muitos tipos de máquina são compatíveis com a personalização do número de núcleos de CPU visíveis. O valor da contagem de núcleos de CPU visíveis precisa ser um número inteiro. O valor máximo é o número de vCPUs, ou GPUs para tipos de máquina otimizados por aceleradores, no tipo de máquina dividido pelo número de linhas de execução por núcleo para a VM.

A tabela a seguir mostra os tipos de máquina compatíveis com essa personalização, além dos valores válidos correspondentes aos núcleos de CPU visíveis para tipos de máquina desses grupos.

Grupo de tipos de máquina Contagem predefinida de vCPUs* Valores válidos para núcleos de CPU visíveis
Uso geral
C4 4, 8, 16, 32, 48 Qualquer
C4 96 Múltiplos de 2
C4 192 Múltiplos de 4
C3D ≤ 180 Qualquer
C3D 360 Múltiplos de 2
C3 4, 8, 22, 44 Múltiplos de 1
C3 88 Múltiplos de 2
C3 176 Múltiplos de 4
c3-*-metal 192 Sem suporte
E2 ≤ 32 Qualquer
N2 ≤ 32 Qualquer
N2 > 32 Múltiplos de 2
N2D ≤ 24 Qualquer
N2D > 24 Múltiplos de 2
N4 ≤ 80 Qualquer
N1 ≤ 64 Qualquer
N1 > 64 Múltiplos de 2
N1 (otimizado para TPU) 48 Qualquer
N1 (otimizado para TPU) 96 Múltiplos de 2
Otimizado para armazenamento
Z3 88 Múltiplos de 2
Z3 176 Múltiplos de 4
Otimizado para computação
H3 88 Múltiplos de 4
C2 4, 8, 16, 30 Qualquer
C2 60 Múltiplos de 2
Otimizado para memória
M3 128 Múltiplos de 2
M3 32, 64 Qualquer
M2 208 Múltiplos de 4
M2 416 Múltiplos de 8
M1 40 Qualquer
M1 80, 96 Múltiplos de 2
M1 160 Múltiplos de 4
Otimização de acelerador
A3 208 Múltiplos de 2
A2 ≤ 48 Qualquer
A2 96 Múltiplos de 2
G2 ≤ 48 Qualquer
G2 96 Múltiplos de 2
* O nome da maioria dos tipos de máquina contém a contagem de vCPUs. No entanto, para os tipos de máquina com otimização de acelerador A3 e A2, o nome do tipo de máquina contém a contagem de GPUs predefinida. Para ver a contagem de vCPUs para os tipos de máquina com otimização de acelerador A3 e A2, consulte a documentação da família de máquinas com otimização de acelerador.

Personalizar o número de núcleos de CPU visíveis durante a criação da VM

Para personalizar o número de núcleos de CPU visíveis ao criar uma única VM, use o console do Google Cloud, a gcloud CLI ou a API Compute Engine.

O exemplo a seguir mostra como criar uma VM do SQL Server com um número reduzido de núcleos de CPU visíveis.

Console

Para personalizar o número de núcleos de CPU visíveis ao criar uma VM, faça o seguinte:

  • Em Configuração da máquina > Configurações avançadas > Contagem de núcleos visíveis, selecione o número de núcleos visíveis.

gcloud

Para criar uma VM do SQL Server com um número reduzido de núcleos de CPU visíveis, use o comando gcloud compute instances create a seguir:

gcloud compute instances create VM_NAME \
    --image-project=windows-sql-cloud \
    --image-family=sql-ent-2019-win-2019 \
    --machine-type=MACHINE_TYPE \
    --visible-core-count=VISIBLE_CORE_COUNT \
    --zone=ZONE

Substitua:

  • VM_NAME: o nome da VM.

  • MACHINE_TYPE: um tipo de máquina compatível, como c2-standard-60.

  • VISIBLE_CORE_COUNT: o número de núcleos de CPU visíveis. Por exemplo, ao usar o tipo de máquina c2-standard-60, se definido como 20, e o número de linhas de execução por núcleo for 2, 40 das 60 CPUs ficarão visíveis.

  • ZONE: zona em que a VM será criada.

REST

Para criar uma VM do SQL Server com um número reduzido de núcleos de CPU visíveis, use o método instances.insert a seguir:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  ...
  "advanced_machine_features": {
    ...
    "visibleCoreCount": "VISIBLE_CORE_COUNT"
  },
  ...
}

Substitua:

  • PROJECT_ID: o ID do projeto.

  • ZONE: a zona em que a instância de VM será criada.

  • VM_NAME: o nome da VM.

  • VISIBLE_CORE_COUNT: o número de núcleos de CPU visíveis. Por exemplo, ao usar o tipo de máquina c2-standard-60, se definido como 20, e o número de linhas de execução por núcleo for 2, 40 das 60 CPUs ficarão visíveis.

Personalizar o número de núcleos de CPU visíveis em um grupo de VMs usando um modelo de instância

Para personalizar o número de núcleos de CPU visíveis ao criar uma VM usando um modelo de instância, use o console do Google Cloud, a gcloud CLI ou a API Compute Engine.

O exemplo a seguir mostra como criar um grupo de VMs idênticas do SQL Server com um número reduzido de núcleos de CPU visíveis usando um modelo de instância.

Console

Para personalizar o número de núcleos de CPU visíveis ao criar um modelo de instância, faça o seguinte:

  • Em Configuração da máquina > Configurações avançadas > Contagem de núcleos visíveis, selecione o número de núcleos visíveis.

gcloud

  1. Crie um modelo de instância para VMs do SQL Server, cada uma com um número reduzido de núcleos de CPU visíveis, usando o comando gcloud compute instance-templates create a seguir:

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
       --image-project=windows-sql-cloud \
       --image-family=sql-ent-2019-win-2019 \
       --machine-type=MACHINE_TYPE \
       --visible-core-count=VISIBLE_CORE_COUNT \
       --zone=ZONE
    

    Substitua:

    • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.

    • MACHINE_TYPE: um tipo de máquina compatível, como c2-standard-60.

    • VISIBLE_CORE_COUNT: o número de núcleos de CPU visíveis. Por exemplo, ao usar o tipo de máquina c2-standard-60, se definido como 20, e o número de linhas de execução por núcleo for 2, 40 das 60 CPUs ficarão visíveis.

    • ZONE: zona em que as VMs serão criadas.

  2. Crie as VMs do SQL Server, cada uma com um número reduzido de núcleos de CPU visíveis, usando o comando gcloud compute instances create a seguir:

    gcloud compute instances create INSTANCE_NAMES \
       --source-instance-template=INSTANCE_TEMPLATE_NAME
    

    Substitua:

    • INSTANCE_NAMES: os nomes das VMs, separados por espaços, a serem criados com base no modelo de instância.

    • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância a partir do qual as VMs serão criadas.

REST

  1. Crie um modelo de instância para VMs do SQL Server, cada uma com um número reduzido de núcleos de CPU visíveis, usando o método instanceTemplates.insert a seguir:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
    
    {
     "name": "INSTANCE_TEMPLATE_NAME",
     ...
     "advanced_machine_features": {
       ...
       "visible_core_count": "VISIBLE_CORE_COUNT"
     },
     ...
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto.

    • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.

    • VISIBLE_CORE_COUNT: o número de núcleos de CPU visíveis. Por exemplo, ao usar o tipo de máquina c2-standard-60, se definido como 20, e o número de linhas de execução por núcleo for 2, 40 das 60 CPUs ficarão visíveis.

  2. Crie as VMs do SQL Server, cada uma com um número reduzido de núcleos de CPU visíveis, usando o método instances.insert a seguir:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?sourceInstanceTemplate=INSTANCE_TEMPLATE_NAME
    
    {
     "name": "VM_NAME",
     ...
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto

    • ZONE: a zona em que a VM será criada

    • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância a partir do qual as VMs serão criadas.

    • VM_NAME: o nome da VM a ser criada do modelo de instância.

Personalizar o número de núcleos de CPU visíveis

Para personalizar o número de núcleos de CPU visíveis em uma VM atual, use o console do Google Cloud, a gcloud CLI ou a API Compute Engine.

Se você personalizou o número de núcleos de CPU visíveis em um grupo de VMs com um modelo de instância, crie um novo modelo de instância e, em seguida, novas VMs usando esse modelo. Saiba mais em Modelos de instância.

Console

Para personalizar o número de núcleos de CPU visíveis em uma VM atual, faça o seguinte:

  1. Pare a VM.

  2. Em Configuração da máquina > Configurações avançadas > Contagem de núcleos visíveis, selecione o número de núcleos visíveis.

  3. Reinicie a VM.

gcloud

Para atualizar o valor do número de núcleos de CPU visíveis em uma VM atual, siga estas etapas. Saiba mais em Atualizar propriedades da instância.

  1. Exporte as propriedades atuais da VM para um arquivo usando o comando gcloud compute instances export.

  2. No arquivo que contém as propriedades exportadas, altere ou adicione o valor de:

    advancedMachineFeatures:
     visibleCoreCount: VISIBLE_CORE_COUNT
    
  3. Atualize as propriedades da VM usando o comando gcloud compute instances update-from-file com --most-disruptive-allowed-action=RESTART.

REST

Para atualizar a contagem de núcleos de CPU visíveis da VM, use o método instances.update a seguir:

PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART

{
  ...
  "advanced_machine_features": {
    ...
    "visible_core_count": "VISIBLE_CORE_COUNT"
  },
  ...
}

Substitua:

  • PROJECT_ID: o ID do projeto

  • ZONE: a zona que contém a VM.

  • VM_NAME: o nome da VM da qual as propriedades serão exportadas

  • VISIBLE_CORE_COUNT: o número de núcleos de CPU visíveis.

A seguir