A personalização do número de núcleos de CPU visíveis pode oferecer um controlo detalhado sobre os custos de licenciamento, ao mesmo tempo que mantém o desempenho da rede e dos discos persistentes. Esta personalização reduz o número de vCPUs disponíveis para a instância de máquina virtual (VM). Não altera o tipo de máquina nem o preço.
O Compute Engine implementa cada CPU virtual (vCPU) como um único hardware multithread que é executado num núcleo da CPU física. Para reduzir o número de vCPUs que estão disponíveis para uma VM, o Compute Engine permite-lhe personalizar o número de núcleos de CPU visíveis.
Os núcleos visíveis são os núcleos do CPU no hardware subjacente que as suas VMs consomem. Por predefiniçã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. Partindo do princípio da predefinição de 2 threads por núcleo, o número de núcleos de CPU visíveis é 30. Se reduzir o número de núcleos visíveis de 30 para 20, o número de CPUs virtuais funcionais é reduzido de 60 para 40.
Pondere personalizar o número de núcleos da CPU visíveis se ambas as seguintes condições se aplicarem:
Executa software, como o Windows Server ou o SQL Server, que é licenciado com base no número de CPUs virtuais disponíveis.
Usa tipos de máquinas predefinidos, que não lhe permitem modificar o número de vCPUs nem 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 necessárias
Para receber as autorizações de que
precisa para personalizar o número de núcleos do CPU visíveis,
peça ao seu administrador para lhe conceder a função de
administrador de instâncias do Compute (v1) (roles/compute.instanceAdmin.v1
)
do IAM no projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém as autorizações necessárias para personalizar o número de núcleos do CPU visíveis. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para personalizar o número de núcleos do CPU visíveis:
-
Para personalizar o número de núcleos da 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 antiga à 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 quando usar uma rede antiga:
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 quando usar uma rede VPC:
compute.subnetworks.useExternalIp
no projeto ou na sub-rede escolhida - Para definir os metadados da instância de VM para a VM:
compute.instances.setMetadata
no projeto - Para definir etiquetas para a VM:
compute.instances.setTags
na VM - Para definir etiquetas 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 de leitura ou leitura/escrita:
compute.disks.use
no disco - Para anexar um disco existente no modo de leitura:
compute.disks.useReadOnly
no disco
-
Para personalizar o número de núcleos da CPU visíveis num grupo de VMs através de um modelo de instância:
Precisa de todas as autorizações que usaria durante a criação da VM e a
compute.instanceTemplates.create
no projeto
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
O número de vCPUs e o número de threads por núcleo
O número total de CPUs virtuais num 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 pode definir manualmente o número de threads por núcleo como 1.
A tabela seguinte mostra a relação entre os núcleos da CPU visíveis, o número de threads por núcleo e o total de vCPUs disponíveis, usando o tipo de máquina c2-standard-60
como exemplo.
Tipo de máquina | Núcleos de CPU visíveis | Discussões por núcleo | vCPUs disponíveis |
---|---|---|---|
c2-standard-60 |
30 (predefinição) |
2 (predefinição) |
60 |
c2-standard-60 |
30 (predefinição) |
1 |
30 |
c2-standard-60 |
20 |
2 (predefinição) |
40 |
c2-standard-60 |
20 |
1 |
20 |
Considerações sobre o desempenho
Esta secção explica como a redução do número de núcleos visíveis pode afetar o desempenho da sua MV.
Disco persistente
Os limites de desempenho dos discos persistentes dependem do tipo de máquina e não são afetados pelo número de núcleos de CPU visíveis. Para mais informações, consulte o artigo Desempenho do armazenamento de 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 da CPU visíveis. No entanto, o desempenho da rede
varia consoante o número de CPUs virtuais 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 ligação de 32 Gbps.
Preços
Esta secção explica como a redução do número de núcleos visíveis pode afetar o custo das suas VMs.
Custos de licenciamento do sistema operativo
Pode reduzir os custos de licenciamento de alguns sistemas operativos diminuindo o número de núcleos do processador visíveis. Os sistemas operativos aplicáveis são aqueles que lhe cobram por cada vCPU disponível para a VM; por exemplo, o Windows Server e o SQL Server. Para mais informações sobre as opções de licenciamento destes sistemas operativos no Compute Engine, consulte o artigo Licenças da Microsoft.
Custos, quota e capacidade das VMs
Os custos, a quota e a capacidade da VM permanecem os mesmos quando personaliza o número de núcleos do CPU visíveis, porque o Compute Engine cobra, acompanha a quota e atribui espaço nos tipos de máquinas para VMs como se estivessem a usar o número de núcleos do CPU do tipo de máquina. Para mais informações sobre a faturação de VMs do Compute Engine, consulte o artigo Preços das instâncias de VM.
Limitações
Não pode personalizar o número de núcleos do CPU visíveis enquanto uma VM estiver no estado
RUNNING
. Para mais informações sobre os estados das VMs, consulte o ciclo de vida da instância de VM.Na Google Cloud consola, quando o número de núcleos visíveis é reduzido, a métrica de utilização da CPU não pode aumentar até 100%. Está limitada ao número de núcleos da CPU visíveis dividido pelo número máximo de núcleos da CPU.
Não pode usar esta funcionalidade para personalizar o número de núcleos do CPU visíveis para instâncias bare metal.
Tipos de máquinas suportados e valores válidos para cada um
Muitos tipos de máquinas suportam a personalização do número de núcleos de CPU visíveis. O valor da contagem de núcleos da CPU visíveis tem de ser um número inteiro. O valor máximo é o número de vCPUs, ou GPUs para tipos de máquinas otimizados para aceleradores, no tipo de máquina dividido pelo número de threads por núcleo para a VM.
A tabela seguinte mostra os tipos de máquinas que suportam esta 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 tipos de máquinas | Número de vCPUs predefinido* | Valores válidos para núcleos da CPU visíveis |
---|---|---|
Utilização geral | ||
C4D | ≤ 192 | Qualquer |
C4D | > 192 | Múltiplos de 2 |
C4 | 4, 8, 16, 24, 32, 48 | Qualquer |
C4 | 96 | Múltiplos de 2 |
C4 | 144 | Múltiplos de 3 |
C4 | 192 | Múltiplos de 4 |
C4 | 288 | Múltiplos de 6 |
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 |
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 |
Otimizada para armazenamento | ||
Z3 | ≤ 44 | Qualquer |
Z3 | 88 | Múltiplos de 2 |
Z3 | 176 | Múltiplos de 4 |
Otimizada para computação | ||
H4D (Pré-visualização) | 192 | Múltiplos de 4 |
H3 | 88 | Múltiplos de 4 |
C2 | 4, 8, 16, 30 | Qualquer |
C2 | 60 | Múltiplos de 2 |
Otimizada para memória | ||
M4 | 16, 28, 32, 56 | Qualquer |
M4 | 64 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 pelo 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 |
G4 (Pré-visualização) | Todos os tipos de máquinas | Múltiplos de 2 |
Personalize o número de núcleos do CPU visíveis durante a criação da VM
Para personalizar o número de núcleos do CPU visíveis ao criar uma única VM, siga os passos explicados nesta secção.
O exemplo seguinte mostra como criar uma VM do SQL Server com um número reduzido de núcleos de CPU visíveis.
Consola
Para personalizar o número de núcleos do CPU visíveis ao criar uma VM, faça o seguinte:
- Em Configuração da máquina > Configurações avançadas > Número 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 da CPU visíveis, use o seguinte gcloud compute instances create
comando:
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 suportado, por exemplo,c2-standard-60
.VISIBLE_CORE_COUNT
: o número de núcleos da CPU visíveis. Por exemplo, quando usa o tipo de máquinac2-standard-60
, se estiver definido como20
e o número de processadores por núcleo for2
, 40 dos 60 processadores ficam visíveis.ZONE
: a zona na qual criar a VM.
REST
Para criar uma VM do SQL Server com um número reduzido de núcleos da CPU visíveis, use o seguinte instances.insert
método:
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 da CPU visíveis. Por exemplo, quando usa o tipo de máquinac2-standard-60
, se estiver definido como20
e o número de processadores por núcleo for2
, 40 dos 60 processadores ficam visíveis.
Personalize o número de núcleos da CPU visíveis num grupo de VMs através de um modelo de instância
Para personalizar o número de núcleos do CPU visíveis ao criar uma VM através de um modelo de instância, siga os passos explicados nesta secção.
O exemplo seguinte mostra como criar um grupo de VMs do SQL Server idênticas com um número reduzido de núcleos de CPU visíveis através de um modelo de instância.
Consola
Para personalizar o número de núcleos do CPU visíveis ao criar um modelo de instância, faça o seguinte:
- Em Configuração da máquina > Configurações avançadas > Número 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 da CPU visíveis, através do seguinte
gcloud compute instance-templates create
comando: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 suportado, por exemplo,c2-standard-60
.VISIBLE_CORE_COUNT
: o número de núcleos do CPU visíveis. Por exemplo, quando usar o tipo de máquinac2-standard-60
, se estiver definido como20
e o número de threads por núcleo for2
, 40 das 60 CPUs sã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 da CPU visíveis, através do seguinte
gcloud compute instances create
comando: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, a criar a partir do modelo de instânciaINSTANCE_TEMPLATE_NAME
: o nome do modelo de instância a partir do qual criar as VMs
REST
Crie um modelo de instância para VMs do SQL Server, cada uma com um número reduzido de núcleos da CPU visíveis, através do seguinte
instanceTemplates.insert
método: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 do CPU visíveis. Por exemplo, quando usar o tipo de máquinac2-standard-60
, se estiver definido como20
e o número de threads por núcleo for2
, 40 das 60 CPUs são visíveis.
Crie as VMs do SQL Server, cada uma com um número reduzido de núcleos da CPU visíveis, através do seguinte
instances.insert
método: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 na qual criar a VMINSTANCE_TEMPLATE_NAME
: o nome do modelo de instância a partir do qual criar as VMsVM_NAME
: o nome da VM a criar a partir do modelo de instância
Personalize o número de núcleos da CPU visíveis
Para personalizar o número de núcleos do CPU visíveis numa VM existente, siga os passos explicados nesta secção.
Se personalizou o número de núcleos do CPU visíveis num grupo de VMs através de um modelo de instância, tem de criar um novo modelo de instância e, em seguida, criar novas VMs a partir desse modelo de instância. Para mais informações sobre modelos de instâncias, consulte o artigo Modelos de instâncias.
Consola
Para personalizar o número de núcleos do CPU visíveis numa VM existente, faça o seguinte:
Parar a VM.
Em Configuração da máquina > Configurações avançadas > Número 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 do CPU visíveis numa VM existente, siga estes passos. Para mais informações, consulte o artigo Atualize as propriedades da instância.
Exporte as propriedades da VM existentes para um ficheiro através do comando
gcloud compute instances export
.No ficheiro que contém as propriedades exportadas, modifique ou adicione o valor para o seguinte:
advancedMachineFeatures: visibleCoreCount: VISIBLE_CORE_COUNT
Atualize as propriedades da VM através do
gcloud compute instances update-from-file
comando com--most-disruptive-allowed-action=RESTART
.
REST
Para atualizar o número de núcleos da CPU visíveis da VM, use o seguinte
instances.update
método:
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 a partir da qual exportar propriedadesVISIBLE_CORE_COUNT
: o número de núcleos da CPU visíveis
O que se segue?
Saiba como ver o número de núcleos do CPU visíveis.
Saiba mais sobre as opções de licenciamento para software Microsoft.
Saiba como definir o número de threads por núcleo.
Saiba mais sobre os sistemas operativos que pode executar em VMs do Compute Engine.