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:
Você executa um software, como Windows Server ou SQL Server, licenciado com base no número de vCPUs disponíveis.
Você usa tipos de máquina 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 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 |
Otimização de 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 |
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, comoc2-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 linhas de execução por núcleo for2
, 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áquinac2-standard-60
, se definido como20
, e o número de linhas de execução por núcleo for2
, 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
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, comoc2-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 linhas de execução por núcleo for2
, 40 das 60 CPUs ficarão visíveis.ZONE
: zona em que as VMs serão criadas.
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
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áquinac2-standard-60
, se definido como20
, e o número de linhas de execução 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 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 projetoZONE
: a zona em que a VM será criadaINSTANCE_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:
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 atual, siga estas etapas. Saiba mais em Atualizar propriedades da instância.
Exporte as propriedades atuais da VM para um arquivo usando o comando
gcloud compute instances export
.No arquivo que contém as propriedades exportadas, altere ou adicione o valor de:
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
.
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 projetoZONE
: a zona que contém a VM.VM_NAME
: o nome da VM da qual as propriedades serão exportadasVISIBLE_CORE_COUNT
: o número de núcleos de CPU visíveis.
A seguir
Saiba como ver o número de núcleos de CPU visíveis.
Saiba mais sobre as opções de licenciamento de software da Microsoft.
Saiba como definir o número de linhas de execução por núcleo.
Saiba mais sobre os sistemas operacionais que podem ser executados em VMs do Compute Engine.