Personalizza il numero di core CPU visibili


La personalizzazione del numero di core CPU visibili può offrire un controllo granulare sui costi di licenza, mantenendo al contempo le prestazioni di networking e dei dischi permanenti. Questa personalizzazione riduce il numero di vCPU disponibili per l'istanza di macchina virtuale (VM), ma non modifica il tipo di macchina o il prezzo.

Compute Engine implementa ogni CPU virtuale (vCPU) come un singolo multithread hardware che viene eseguito su un core della CPU fisico. Per ridurre il numero di vCPU disponibili per una VM, Compute Engine ti consente di personalizzare il numero di core CPU visibili.

I core visibili sono i core CPU nell'hardware sottostante utilizzati dalle tue VM. Per impostazione predefinita, il numero di core CPU visibili a una VM è il numero di vCPU del tipo di macchina diviso per il numero di thread per core:

  • Core della CPU visibili = vCPU sul tipo di macchina / thread per core

Ad esempio, il tipo di macchina c2-standard-60 specifica 60 vCPU. Supponendo che il valore predefinito sia di 2 thread per core, il numero di core CPU visibili è 30. Se riduci il numero di core visibili da 30 a 20, il numero di vCPU funzionali si riduce da 60 a 40.

Valuta la possibilità di personalizzare il numero di core CPU visibili se si verificano entrambe le seguenti condizioni:

Prima di personalizzare il numero di vCPU disponibili per una VM, valuta la possibilità di utilizzare un tipo di macchina personalizzato.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per personalizzare il numero di core CPU visibili, chiedi all'amministratore di concederti il ruolo IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per personalizzare il numero di core della CPU visibili. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per personalizzare il numero di core CPU visibili sono necessarie le seguenti autorizzazioni:

  • Per personalizzare il numero di core CPU visibili durante la creazione della VM:
    • compute.instances.create sul progetto
    • Per utilizzare un'immagine personalizzata per creare la VM: compute.images.useReadOnly sull'immagine
    • Per utilizzare uno snapshot per creare la VM: compute.snapshots.useReadOnly sullo snapshot
    • Per utilizzare un template di istanza per creare la VM: compute.instanceTemplates.useReadOnly sul template di istanza
    • Per assegnare una rete legacy alla VM: compute.networks.use sul progetto
    • Per specificare un indirizzo IP statico per la VM: compute.addresses.use sul progetto
    • Per assegnare un indirizzo IP esterno alla VM quando viene utilizzata una rete legacy: compute.networks.useExternalIp sul progetto
    • Per specificare una subnet per la VM: compute.subnetworks.use sul progetto o sulla subnet scelta
    • Per assegnare un indirizzo IP esterno alla VM quando viene utilizzata una rete VPC: compute.subnetworks.useExternalIp sul progetto o sulla subnet scelta
    • Per impostare i metadati dell'istanza VM per la VM: compute.instances.setMetadata sul progetto
    • Per impostare i tag per la VM: compute.instances.setTags sulla VM
    • Per impostare le etichette per la VM: compute.instances.setLabels sulla VM
    • Per impostare un service account che la VM possa utilizzare: compute.instances.setServiceAccount sulla VM
    • Per creare un nuovo disco per la VM: compute.disks.create sul progetto
    • Per collegare un disco esistente in modalità di sola lettura o lettura/scrittura: compute.disks.use sul disco
    • Per collegare un disco esistente in modalità di sola lettura: compute.disks.useReadOnly sul disco
  • Per personalizzare il numero di core CPU visibili su un gruppo di VM utilizzando un modello di istanza: Devi disporre di tutte le autorizzazioni che utilizzeresti durante la creazione della VM e di compute.instanceTemplates.create sul progetto

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

vCPU e numero di thread per core

Il numero totale di vCPU su un tipo di macchina è il numero di core CPU visibili moltiplicato per il numero di thread per core. Per la maggior parte delle serie di macchine, il numero di thread per core è 2, ma puoi impostare manualmente il numero di thread per core su 1.

La seguente tabella mostra la relazione tra i core CPU visibili, il numero di thread per core e le vCPU totali disponibili utilizzando il tipo di macchina c2-standard-60 come esempio.

Tipo di macchina Core CPU visibili Thread per core vCPU disponibili
c2-standard-60 30 (valore predefinito) 2 (valore predefinito) 60
c2-standard-60 30 (valore predefinito) 1 30
c2-standard-60 20 2 (valore predefinito) 40
c2-standard-60 20 1 20

Considerazioni sulle prestazioni

Questa sezione spiega in che modo la riduzione del numero di core visibili può influire sulle prestazioni della VM.

Disco permanente

I limiti di prestazioni dei dischi permanenti dipendono dal tipo di macchina e non sono influenzati dal numero di core CPU visibili. Per maggiori informazioni, consulta la pagina Prestazioni dello spazio di archiviazione a blocchi.

Traffico in uscita Networking

I limiti di larghezza di banda dell'uscita di rete corrispondono al tipo di macchina e non sono influenzati dal numero di core CPU visibili. Tuttavia, le prestazioni di rete variano a seconda del numero di vCPU accessibili alla VM. Ad esempio, un tipo di macchina n2-standard-16 con un core CPU visibile potrebbe non essere in grado di utilizzare completamente una connessione a 32 Gbps.

Prezzi

Questa sezione spiega in che modo la riduzione del numero di core visibili può influire sul costo delle VM.

Costi di licenza del sistema operativo

Puoi ridurre i costi delle licenze per alcuni sistemi operativi riducendo il numero di core CPU visibili. I sistemi operativi applicabili sono quelli che ti addebitano ogni vCPU disponibile per la VM, ad esempio Windows Server e SQL Server. Per ulteriori informazioni sulle opzioni di licenza per questi sistemi operativi su Compute Engine, consulta Licenze Microsoft.

Costi, quota e capacità delle VM

I costi, la quota e la capacità delle VM rimangono invariati quando personalizzi il numero di core CPU visibili perché Compute Engine addebita, monitora la quota e alloca spazio sui tipi di macchine per le VM come se utilizzassero il numero di core CPU del tipo di macchina. Per ulteriori informazioni su come Compute Engine fattura le VM, consulta Prezzi delle istanze VM.

Limitazioni

  • Non puoi personalizzare il numero di core CPU visibili mentre una VM è nello stato RUNNING. Per ulteriori informazioni sugli stati delle VM, consulta Ciclo di vita dell'istanza VM.

  • Nella console Google Cloud , quando il numero di core visibili viene ridotto, la metrica di utilizzo della CPU non può aumentare fino al 100%. È limitato al numero di core CPU visibili diviso per il numero massimo di core CPU.

  • Non puoi utilizzare questa funzionalità per personalizzare il numero di core CPU visibili per le istanze bare metal.

Tipi di macchine supportati e valori validi per ciascuno

Molti tipi di macchine supportano la personalizzazione del numero di core CPU visibili. Il valore del conteggio dei core CPU visibili deve essere un numero intero. Il valore massimo è il numero di vCPU o GPU per i tipi di macchina ottimizzati per gli acceleratori sul tipo di macchina diviso per il numero di thread per core per la VM.

La tabella seguente mostra i tipi di macchine che supportano questa personalizzazione, insieme ai valori validi corrispondenti per i core CPU visibili per i tipi di macchine in queste famiglie.

Famiglia di tipi di macchina Conteggio vCPU predefinite* Valori validi per i core CPU visibili
Per uso generico
C4D Tutti i tipi di macchine Multipli di 2
C4 4, 8, 16, 32, 48 Qualsiasi
C4 96 Multipli di 2
C4 192 Multipli di 4
C3D ≤ 180 Qualsiasi
C3D 360 Multipli di 2
C3 4, 8, 22, 44 Multipli di 1
C3 88 Multipli di 2
C3 176 Multipli di 4
E2 ≤ 32 Qualsiasi
N2 ≤ 32 Qualsiasi
N2 > 32 Multipli di 2
N2D ≤ 24 Qualsiasi
N2D > 24 Multipli di 2
N4 ≤ 80 Qualsiasi
N1 ≤ 64 Qualsiasi
N1 > 64 Multipli di 2
N1 (ottimizzato per TPU) 48 Qualsiasi
N1 (ottimizzato per TPU) 96 Multipli di 2
Ottimizzato per l'archiviazione
Z3 88 Multipli di 2
Z3 176 Multipli di 4
Ottimizzato per il calcolo
H3 88 Multipli di 4
C2 4, 8, 16, 30 Qualsiasi
C2 60 Multipli di 2
Ottimizzato per la memoria
M4 28, 56 Qualsiasi
M4 112 Multipli di 2
M4 224 Multipli di 4
M3 128 Multipli di 2
M3 32, 64 Qualsiasi
M2 208 Multipli di 4
M2 416 Multipli di 8
M1 40 Qualsiasi
M1 80, 96 Multipli di 2
M1 160 Multipli di 4
Ottimizzate per l'acceleratore
A4 224 Multipli di 2
A3 26, 52, 104, 208, 224 Multipli di 2
A2 ≤ 48 Qualsiasi
A2 96 Multipli di 2
G2 ≤ 48 Qualsiasi
G2 96 Multipli di 2
* Il nome della maggior parte dei tipi di macchine contiene il numero di vCPU. Tuttavia, per i tipi di macchine ottimizzati per l'acceleratore diversi da G2, il nome del tipo di macchina contiene il numero predefinito di GPU. Per visualizzare il conteggio delle vCPU per i tipi di macchine ottimizzati per l'acceleratore, consulta la documentazione Famiglia di macchine ottimizzate per l'acceleratore.

Personalizza il numero di core CPU visibili durante la creazione della VM

Per personalizzare il numero di core CPU visibili durante la creazione di una singola VM, segui i passaggi descritti in questa sezione.

L'esempio seguente mostra come creare una VM SQL Server con un numero ridotto di core CPU visibili.

Console

Per personalizzare il numero di core CPU visibili durante la creazione di una VM, segui questi passaggi:

  • In Configurazione macchina > Configurazioni avanzate > Conteggio core visibili, seleziona il numero di core visibili.

gcloud

Per creare una VM SQL Server con un numero ridotto di core CPU visibili, utilizza il seguente 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

Sostituisci quanto segue:

  • VM_NAME: il nome della VM.

  • MACHINE_TYPE: un tipo di macchina supportato, ad esempio c2-standard-60.

  • VISIBLE_CORE_COUNT: il numero di core della CPU visibili. Ad esempio, quando utilizzi il tipo di macchina c2-standard-60, se impostato su 20 e il numero di thread per core è 2, sono visibili 40 delle 60 CPU.

  • ZONE: la zona in cui creare la VM.

REST

Per creare una VM SQL Server con un numero ridotto di core CPU visibili, utilizza il seguente instances.insert metodo:

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

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto.

  • ZONE: la zona in cui creare la VM.

  • VM_NAME: il nome della VM.

  • VISIBLE_CORE_COUNT: il numero di core della CPU visibili. Ad esempio, quando utilizzi il tipo di macchina c2-standard-60, se impostato su 20 e il numero di thread per core è 2, sono visibili 40 delle 60 CPU.

Personalizza il numero di core CPU visibili su un gruppo di VM utilizzando un modello di istanza

Per personalizzare il numero di core CPU visibili durante la creazione di una VM utilizzando un modello di istanza, segui i passaggi descritti in questa sezione.

L'esempio seguente mostra come creare un gruppo di VM SQL Server identiche con un numero ridotto di core CPU visibili utilizzando un modello di istanza.

Console

Per personalizzare il numero di core CPU visibili durante la creazione di un modello di istanza:

  • In Configurazione macchina > Configurazioni avanzate > Conteggio core visibili, seleziona il numero di core visibili.

gcloud

  1. Crea un modello di istanza per le VM SQL Server, ognuna con un numero ridotto di core CPU visibili, utilizzando il seguente comando 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
    

    Sostituisci quanto segue:

    • INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.

    • MACHINE_TYPE: un tipo di macchina supportato, ad esempio c2-standard-60.

    • VISIBLE_CORE_COUNT: il numero di core CPU visibili. Ad esempio, quando utilizzi il tipo di macchina c2-standard-60, se impostato su 20 e il numero di thread per core è 2, sono visibili 40 delle 60 CPU.

    • ZONE: la zona in cui creare le VM

  2. Crea le VM SQL Server, ognuna con un numero ridotto di core CPU visibili, utilizzando il seguente comando gcloud compute instances create:

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

    Sostituisci quanto segue:

    • INSTANCE_NAMES: i nomi delle VM, separati da spazi, da creare dal modello di istanza

    • INSTANCE_TEMPLATE_NAME: il nome del modello di istanza da cui creare le VM

REST

  1. Crea un modello di istanza per le VM SQL Server, ognuna con un numero ridotto di core CPU visibili, utilizzando il seguente instanceTemplates.insert metodo:

    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"
     },
     ...
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto.

    • INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.

    • VISIBLE_CORE_COUNT: il numero di core CPU visibili. Ad esempio, quando utilizzi il tipo di macchina c2-standard-60, se impostato su 20 e il numero di thread per core è 2, sono visibili 40 delle 60 CPU.

  2. Crea le VM SQL Server, ognuna con un numero ridotto di core CPU visibili, utilizzando il seguente instances.insert metodo:

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto

    • ZONE: la zona in cui creare la VM

    • INSTANCE_TEMPLATE_NAME: il nome del modello di istanza da cui creare le VM

    • VM_NAME: il nome della VM da creare dal modello di istanza

Personalizza il numero di core CPU visibili

Per personalizzare il numero di core CPU visibili su una VM esistente, segui i passaggi descritti in questa sezione.

Se hai personalizzato il numero di core CPU visibili su un gruppo di VM utilizzando un modello di istanza, devi creare un nuovo modello di istanza e poi creare nuove VM da questo modello. Per saperne di più sui modelli di istanza, consulta Modelli di istanza.

Console

Per personalizzare il numero di core CPU visibili su una VM esistente, segui questi passaggi:

  1. Arresta la VM.

  2. In Configurazione macchina > Configurazioni avanzate > Conteggio core visibili, seleziona il numero di core visibili.

  3. Riavvia la VM.

gcloud

Per aggiornare il valore del numero di core CPU visibili su una VM esistente, segui questi passaggi. Per ulteriori informazioni, vedi Aggiornare le proprietà dell'istanza.

  1. Esporta le proprietà della VM esistente in un file utilizzando il comando gcloud compute instances export.

  2. Nel file contenente le proprietà esportate, modifica o aggiungi il valore per quanto segue:

    advancedMachineFeatures:
     visibleCoreCount: VISIBLE_CORE_COUNT
    
  3. Aggiorna le proprietà della VM utilizzando il comando gcloud compute instances update-from-file con --most-disruptive-allowed-action=RESTART.

REST

Per aggiornare il numero di core CPU visibili della VM, utilizza il seguente metodo 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"
  },
  ...
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto

  • ZONE: la zona che contiene la VM

  • VM_NAME: il nome della VM da cui esportare le proprietà

  • VISIBLE_CORE_COUNT: il numero di core CPU visibili

Passaggi successivi