A personalização do número de núcleos de CPU visíveis pode fornecer controle granular sobre os custos de licenciamento, ao mesmo tempo que mantém o desempenho da rede e dos discos permanentes. Essa customização reduz o número de vCPUs disponíveis para a instância de máquina virtual (VM); isso não altera o tipo ou preço da máquina.
O Compute Engine implementa cada CPU virtual (vCPU) como um único multithread de hardware executado em um núcleo de CPU físico. 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.
Núcleos visíveis são os núcleos de CPU no hardware subjacente que suas VMs consomem. 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 threads por núcleo :
- Núcleos de CPU visíveis = vCPUs no tipo de máquina/threads por núcleo
Por exemplo, o tipo de máquina c2-standard-60
especifica 60 vCPUs. Supondo o padrão de 2 threads 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.
Considere personalizar o número de núcleos de CPU visíveis se ambas as condições a seguir se aplicarem:
Você executa software, como Windows Server ou SQL Server , licenciado com base no número de vCPUs disponíveis.
Você usa tipos de máquinas predefinidos , que não permitem modificar o número de vCPUs ou a quantidade de RAM.
Antes de personalizar o número de vCPUs disponíveis para uma VM, considere primeiro usar um tipo de máquina personalizado .
Funções obrigatórias
Para obter as permissões necessárias para personalizar o número de núcleos de CPU visíveis, peça ao administrador para conceder a você a função IAM Compute Instance Admin (v1) ( roles/compute.instanceAdmin.v1
) no projeto. Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .
Esta função predefinida contém as permissões necessárias para personalizar o número de núcleos de CPU visíveis. Para ver 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:
- Para 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 - Para usar um instantâneo para criar a VM:
compute.snapshots.useReadOnly
no instantâneo - Para usar um modelo de instância para criar a VM:
compute.instanceTemplates.useReadOnly
no modelo de instância - Para atribuir uma rede legada à VM:
compute.networks.use
no projeto - Para especificar um endereço IP estático para a VM:
compute.addresses.use
no projeto - Para atribuir um endereço IP externo à VM ao usar uma rede legada:
compute.networks.useExternalIp
no projeto - Para especificar uma sub-rede para a VM:
compute.subnetworks.use
no projeto ou na sub-rede escolhida - Para atribuir um endereço IP externo à VM ao usar uma rede VPC:
compute.subnetworks.useExternalIp
no projeto ou na sub-rede escolhida - Para definir metadados de instância de VM para a VM:
compute.instances.setMetadata
no projeto - Para definir tags para a VM:
compute.instances.setTags
na VM - Para definir rótulos para a VM:
compute.instances.setLabels
na VM - Para definir uma conta de serviço para a VM usar:
compute.instances.setServiceAccount
na VM - Para criar um novo disco para a VM:
compute.disks.create
no projeto - Para anexar um disco existente no modo somente leitura ou leitura-gravação:
compute.disks.use
no disco - Para anexar um disco existente 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
Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .
vCPUs e o número de threads 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 threads por núcleo. Para a maioria das séries de máquinas, o número de threads por núcleo é 2, mas você pode definir manualmente o número de threads por núcleo como 1.
A tabela a seguir mostra como os núcleos de CPU visíveis, o número de threads 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 | Threads 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 de desempenho
A redução do número de núcleos visíveis pode afetar o desempenho da sua 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. Para obter mais informações, consulte Desempenho do armazenamento em blocos .
Saída de rede
- Os limites de largura de banda da 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 dependendo do 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 ser capaz de 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 suas VMs.
Custos de licenciamento do sistema operacional
- Você pode reduzir os custos de licenciamento de 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, por exemplo, Windows Server e SQL Server. Para obter mais informações sobre as opções de licenciamento desses sistemas operacionais no Compute Engine, consulte 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 em tipos de máquina para VMs como se estivessem usando o número de núcleos de CPU do tipo de máquina. Para mais informações sobre como o Compute Engine cobra as VMs, consulte Preços de instâncias de VM .
Limitações
Você não pode personalizar o número de núcleos de CPU visíveis enquanto uma VM está no estado
RUNNING
. Para obter mais informações sobre estados de VM, consulte 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 para 100%. É limitado ao número de núcleos de CPU visíveis dividido pelo número máximo de núcleos de CPU.
Tipos de máquinas suportados e valores válidos para cada
Muitos tipos de máquinas oferecem suporte à personalização do número de núcleos de CPU visíveis. O valor da contagem visível de núcleos da CPU deve ser um número inteiro. O valor máximo é o número de vCPUs (ou GPUs para tipos de máquinas otimizadas para aceleradores) no tipo de máquina dividido pelo número de threads por núcleo da VM.
A tabela a seguir mostra os tipos de máquinas que suportam essa personalização, juntamente com os valores válidos correspondentes para núcleos de CPU visíveis para tipos de máquinas nessas famílias.
Família de tipo de máquina | Contagem de vCPU predefinida * | 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 | Não compatível |
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 (TPU otimizado) | 48 | Qualquer |
N1 (TPU otimizado) | 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 | ||
M4 | 56 | Múltiplos de 1 |
M4 | 112 | Múltiplos de 2 |
M4 | 224 | Múltiplos de 4 |
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 |
Otimizado para acelerador | ||
A4 | 224 | Múltiplos de 2 |
A3 | 26, 52, 104, 208, 224 | Múltiplos de 2 |
A2 | ≤ 48 | Qualquer |
A2 | 96 | Múltiplos de 2 |
G2 | ≤ 48 | Qualquer |
G2 | 96 | Múltiplos de 2 |
Personalize 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 CLI gcloud 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 seguinte comando gcloud compute instances create
:
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 o seguinte:
VM_NAME
: o nome da VM.MACHINE_TYPE
: um tipo de máquina compatível, por exemplo,c2-standard-60
.VISIBLE_CORE_COUNT
: o número de núcleos de CPU visíveis. Por exemplo, ao usar o tipo de máquinac2-standard-60
, se definido como20
e o número de threads por núcleo for2
, 40 das 60 CPUs ficarão visíveis.ZONE
: a zona na qual criar a VM.
DESCANSAR
Para criar uma VM do SQL Server com um número reduzido de núcleos de CPU visíveis, use o seguinte método instances.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", ... "advanced_machine_features": { ... "visibleCoreCount": "VISIBLE_CORE_COUNT" }, ... }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto.ZONE
: a zona na qual criar a VM.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áquinac2-standard-60
, se definido como20
e o número de threads por núcleo for2
, 40 das 60 CPUs ficarão visíveis.
Personalize 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 CLI gcloud ou a API Compute Engine.
O exemplo a seguir mostra como criar um grupo de VMs SQL Server idênticas 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
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 seguinte
gcloud compute instance-templates create
: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 o seguinte:
INSTANCE_TEMPLATE_NAME
: o nome do modelo de instância.MACHINE_TYPE
: um tipo de máquina compatível, por exemplo,c2-standard-60
.VISIBLE_CORE_COUNT
: o número de núcleos de CPU visíveis. Por exemplo, ao usar o tipo de máquinac2-standard-60
, se definido como20
e o número de threads por núcleo for2
, 40 das 60 CPUs ficarão visíveis.ZONE
: a zona na qual criar as VMs.
Crie as VMs do SQL Server, cada uma com um número reduzido de núcleos de CPU visíveis, usando o seguinte comando
gcloud compute instances create
:gcloud compute instances create INSTANCE_NAMES \ --source-instance-template=INSTANCE_TEMPLATE_NAME
Substitua o seguinte:
INSTANCE_NAMES
: os nomes das VMs, separados por espaços, para criar a partir do modelo de instânciaINSTANCE_TEMPLATE_NAME
: o nome do modelo de instância a partir do qual as VMs serão criadas
DESCANSAR
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 seguinte método
instanceTemplates.insert
: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 o seguinte:
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áquinac2-standard-60
, se definido como20
e o número de threads por núcleo for2
, 40 das 60 CPUs ficarão visíveis.
Crie as VMs do SQL Server, cada uma com um número reduzido de núcleos de CPU visíveis, usando o seguinte método
instances.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?sourceInstanceTemplate=INSTANCE_TEMPLATE_NAME { "name": "VM_NAME", ... }
Substitua o seguinte:
PROJECT_ID
: o ID do projetoZONE
: a zona para criar a VMINSTANCE_TEMPLATE_NAME
: o nome do modelo de instância a partir do qual as VMs serão criadasVM_NAME
: o nome da VM a ser criada a partir do modelo de instância
Personalize 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 existente, use o console do Google Cloud, a CLI gcloud ou a API Compute Engine.
Se você personalizou o número de núcleos de CPU visíveis em um grupo de VMs usando um modelo de instância, deverá criar um novo modelo de instância e, em seguida, criar novas VMs a partir desse modelo de instância. Para obter mais informações sobre modelos de instância, consulte Modelos de instância .
Console
Para personalizar o número de núcleos de CPU visíveis em uma VM existente, faça o seguinte:
Pare a VM.
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.
Reinicie a VM.
gcloud
Para atualizar o valor do número de núcleos de CPU visíveis em uma VM existente, use as etapas a seguir. Para obter mais informações, consulte Atualizar propriedades da instância .
Exporte as propriedades da VM existentes para um arquivo usando o comando
gcloud compute instances export
.No arquivo que contém as propriedades exportadas, modifique ou inclua o valor do seguinte:
advancedMachineFeatures: visibleCoreCount: VISIBLE_CORE_COUNT
Atualize as propriedades da VM usando o comando
gcloud compute instances update-from-file
com--most-disruptive-allowed-action=RESTART
.
DESCANSAR
Para atualizar a contagem de núcleos de CPU visíveis da VM, use o seguinte método instances.update
:
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 o seguinte:
PROJECT_ID
: o ID do projetoZONE
: a zona que contém a VMVM_NAME
: o nome da VM da qual exportar propriedadesVISIBLE_CORE_COUNT
: o número de núcleos de CPU visíveis
O que vem a seguir
Aprenda como visualizar o número de núcleos de CPU visíveis .
Saiba mais sobre as opções de licenciamento de software Microsoft .
Aprenda como definir o número de threads por núcleo .
Saiba mais sobre os sistemas operacionais que podem ser executados nas VMs do Compute Engine .