Overcommit delle CPU su VM single-tenant


L'overcommit della CPU sui nodi single-tenant consente di pianificare istanze che possono condividere tra loro i cicli di CPU di riserva. In questo modo puoi eseguire l'overprovisioning delle risorse dei nodi single-tenant e pianificare più CPU VM su un nodo single-tenant rispetto a quelle disponibili normalmente. L'overcommit della CPU è particolarmente utile per i carichi di lavoro sottoutilizzati, ma che potrebbero riscontrare burst relativamente non correlati.

L'overcommit della CPU può aiutarti a ridurre i costi per VM distribuendo il costo di un nodo single-tenant tra più VM. Inoltre, consente di ridurre i costi di licenza per VM quando si utilizzano le licenze per socket o per core.

Le VM con CPU con overcommit possono utilizzare risorse della CPU inutilizzate altrimenti nei modi seguenti:

  • Se un nodo single-tenant non è pieno, le VM con overcommit possono utilizzare core non allocati.

  • Se un'altra VM su un nodo single-tenant non utilizza tutte le risorse della CPU, ad esempio perché la CPU è inattiva, una VM con overcommit può utilizzare le risorse della CPU.

Livello di overcommit

Puoi specificare il valore per il numero minimo di CPU allocate a una VM quando crei una VM o dopo l'arresto di una VM. Il livello di overcommit rappresenta il numero minimo di thread della CPU sottostanti di cui è garantita la disponibilità per una VM. Se la VM ha più vCPU dei thread sottostanti disponibili, le vCPU della VM condividono le risorse di calcolo sottostanti e vengono eseguite con prestazioni ridotte.

Puoi impostare questo valore per ogni VM, in modo da eseguire il provisioning di VM con diversi rapporti di overcommit della CPU su un singolo nodo single-tenant. Valori più bassi riducono i requisiti di capacità a scapito potenziale delle prestazioni se si verificano burst correlati. Per determinare un valore ottimale per il numero minimo di CPU, è necessario comprendere l'utilizzo dei carichi di lavoro e la modifica iterativa del valore.

Quando imposti questo valore, tieni presente quanto segue:

  • Se non imposti il valore per il numero minimo di CPU o imposti un valore per il numero minimo di CPU uguale al numero di CPU nel tipo di macchina della VM, il rapporto di overcommit consentito della VM è 1, 0. Con un rapporto di overcommit di 1, 0, tutte le CPU sono accessibili solo a questa VM e non sono disponibili risorse per la CPU per l'overcommit ad altre VM.

  • Il numero minimo di CPU non può essere maggiore del numero di CPU specificato dal tipo di macchina della VM.

  • La somma dei valori per il numero minimo di CPU per tutte le VM su un nodo single-tenant non può superare la capacità di CPU del tipo di nodo single-tenant, che sul tipo di nodo n1-node-96-624 è 96.

Il valore per il numero di CPU specificato dal tipo di macchina della VM è un valore statico e rappresenta il numero di CPU a cui una VM può eseguire il burst a partire dal numero minimo se tali CPU sono disponibili. Se hai bisogno di un numero di CPU diverso da quelle fornite dai tipi di macchine fisse, puoi utilizzare un tipo di macchina personalizzata.

Considerazioni

Prima di configurare i livelli di overcommit della CPU per le VM, considera la criticità del tuo carico di lavoro. Carichi di lavoro meno critici, come quelli di sviluppo e test, possono potenzialmente tollerare livelli di overcommit più elevati. I carichi di lavoro più critici, come un sistema di pagamenti di produzione, potrebbero non tollerare troppo overcommit o del tutto.

Considera anche l'utilizzo del tuo carico di lavoro. I carichi di lavoro con un elevato utilizzo della CPU non sono buoni candidati per l'overcommit della CPU, perché non avranno cicli di utilizzo di riserva per altre VM con overcommit. Inoltre, i carichi di lavoro con un utilizzo medio basso della CPU, ma un picco di utilizzo ridotto, potrebbero trarre vantaggio da diverse dimensioni dei tipi di macchine.

L'utilizzo dell'overcommit della CPU comporta carichi di lavoro di bursty non correlati con un picco elevato di utilizzo e un utilizzo medio ridotto, in quanto è più probabile che questi carichi di lavoro abbiano risorse della CPU disponibili da condividere tra le VM quando alcune VM devono eseguire il bursting dell'utilizzo. Se burst tutte le VM su un host contemporaneamente, l'host non disporrà di risorse sufficienti per le tue VM.

Limitazioni

Limitazioni del carico di lavoro

L'overcommit della CPU è ideale per carichi di lavoro che non richiedono requisiti rigorosi per le prestazioni, ad esempio carichi di lavoro di sviluppo e test e infrastrutture desktop virtuali.

Livelli elevati di overcommit della CPU potrebbero non essere appropriati per carichi di lavoro sensibili alle prestazioni.

Per i carichi di lavoro con un utilizzo medio e di picco costantemente basso, Google consiglia di adattare le dimensioni giuste. In altre parole, anziché eseguire l'overcommit delle CPU, ti consigliamo di modificare le dimensioni dell'istanza VM in modo che corrispondano ai requisiti delle risorse del carico di lavoro.

Se le istanze hanno un overcommit eccessivo, spostale in un altro nodo single-tenant.

Limitazioni dei tipi di macchina

Puoi eseguire l'overcommit delle CPU solo sui seguenti elementi:

Limitazioni a livello di overcommit

Puoi configurare la CPU minima su ogni nodo single-tenant solo fino alla metà delle CPU della VM, con un rapporto massimo di overcommit dei nodi single-tenant pari a 2,0.

Limitazioni alla pianificazione delle VM

I gruppi di nodi single-tenant basati su modelli di nodi single-tenant che non sono configurati per l'overcommit della CPU non consentono il provisioning di VM con overcommit della CPU abilitato. Ciò significa che non puoi pianificare una VM con un numero minimo specificato di CPU su un gruppo di nodi single-tenant non configurato per l'overcommit della CPU.

Quota

La quota per le CPU si basa sul numero di vCPU del tipo di nodo single-tenant, non sul numero massimo potenziale di vCPU disponibili per l'overcommitting.

Costi

Ai nodi single-tenant per i quali è selezionato l'overcommit della CPU nel modello di nodo viene addebitato un costo aggiuntivo del 25%. Questo costo va ad aggiungersi al premium del 10% per l'esecuzione di VM su nodi single-tenant. Il premium di overcommit della CPU è fisso, indipendentemente dal livello di overcommit della CPU e dal numero di VM pianificate sul nodo single-tenant.

I nodi single-tenant offrono sconti per impegno di utilizzo. Gli sconti per utilizzo sostenuto sono disponibili per il premium per single-tenant e per l'overcommit della CPU premium.

Per stimare il costo dell'esecuzione delle VM sui nodi single-tenant, consulta il Calcolatore prezzi.

Configura VM single-tenant per l'overcommitting

Per configurare le VM single-tenant in modo che abbiano a disposizione le risorse della CPU per l'overcommiting, segui questi passaggi:

  1. Crea un modello di nodo single-tenant con l'overcommit della CPU abilitato. Devi abilitare l'overcommit della CPU durante la creazione del modello di nodo. Non puoi abilitare l'overcommit della CPU dopo aver creato un modello di nodo.

  2. Creare un gruppo di nodi single-tenant basato sul modello di nodo single-tenant in cui è abilitato l'overcommit della CPU.

  3. Crea una VM e segui questi passaggi:

    1. Scegli un tipo di macchina per la VM. Il numero di CPU nel tipo di macchina rappresenta il numero massimo di CPU a cui la VM può eseguire il burst a partire dal numero minimo di CPU se il numero minimo di CPU è inferiore al numero di CPU specificato dal tipo di macchina.

      Puoi scegliere un tipo di macchina diverso per ogni VM su un nodo single-tenant, a condizione di non superare la capacità di CPU e memoria del nodo single-tenant.

    2. Specifica il numero minimo di CPU da allocare a quella singola VM oppure utilizza un gruppo di istanze gestite per creare più VM con lo stesso livello di overcommit della CPU.

Prima di iniziare

  • Crea un modello di nodo single-tenant e specifica --cpu-overcommit-type=enabled.
  • Crea un gruppo di nodi single-tenant basato sul modello di nodo single-tenant con l'overcommit della CPU abilitato.
  • Configurare l'autenticazione.

    Seleziona la scheda relativa a come intendi utilizzare gli esempi di questa pagina:

    Console

    Quando utilizzi la console Google Cloud per accedere ai servizi e alle API Google Cloud, non è necessario configurare l'autenticazione.

    gcloud

    1. Installa Google Cloud CLI, quindi inizializzalo eseguendo il comando seguente:

      gcloud init
    2. Imposta una regione e una zona predefinite.

    REST

    Per utilizzare gli esempi di API REST su questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci allgcloud CLI.

      Installa Google Cloud CLI, quindi inizializzalo eseguendo il comando seguente:

      gcloud init

Imposta il livello di overcommit della CPU

Le seguenti procedure mostrano come creare una VM single-tenant con le risorse della CPU disponibili per l'overcommitting. Se devi modificare il livello di overcommit della CPU di una VM attualmente in esecuzione, devi prima arrestare la VM.

Console

Nella console Google Cloud, crea una VM single-tenant su un gruppo di nodi single-tenant creato a partire da un modello di nodo single-tenant per il quale è abilitato l'overcommit della CPU:

  1. Vai alla pagina Nodi single-tenant.

    Vai ai nodi single-tenant

  2. Fai clic su Gruppi di nodi.

  3. Fai clic sul gruppo di nodi single-tenant su cui creare una VM.

  4. Fai clic su Crea istanza.

  5. Specifica il nome, la regione e la zona della VM.

  6. In Configurazione macchina, scegli un tipo di macchina fisso o personalizzato con almeno 4 vCPU.

  7. In overcommit della CPU, seleziona Abilita overcommit della CPU.

  8. In Numero minimo di vCPU allocate, regola il dispositivo di scorrimento o inserisci manualmente il numero di vCPU per specificare il livello di overcommit per le CPU su questa VM.

  9. Fai clic su Crea per creare un'istanza VM con le risorse della CPU disponibili per l'overcommit.

gcloud

L'esempio seguente mostra come utilizzare il comando gcloud compute instances create per creare una VM single-tenant su un tipo di macchina fissa con risorse della CPU disponibili per l'overcommitting.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --min-node-cpu=MIN_VCPUS \
    --node-group=GROUP_NAME

Sostituisci quanto segue:

  • VM_NAME: il nome della VM su cui eseguire l'overcommit delle CPU.

  • MACHINE_TYPE: il tipo di macchina su cui eseguire il provisioning della VM single-tenant. Il numero di CPU specificato dal tipo di macchina corrisponde al numero massimo di CPU fino a un massimo di burst della VM da MIN_VCPUS.

  • MIN_VCPUS: il numero minimo di vCPU garantite per questa VM.

  • GROUP_NAME: il nome del gruppo di nodi single-tenant su cui eseguire il provisioning della VM.

Impostazione del livello di overcommit su un tipo di macchina personalizzata

Per creare una VM single-tenant con risorse CPU disponibili per l'overcommit su un tipo di macchina personalizzata, ometti il flag --machine-type e, invece, usa i flag --custom-cpu e --custom-memory per specificare il numero di CPU e la quantità di memoria, in gigabyte, per la macchina personalizzata.

REST

L'esempio seguente mostra come utilizzare il comando instances.insert per creare una VM single-tenant su un tipo di macchina fisso con risorse della CPU disponibili per l'overcommitting.

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

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "scheduling": {
    "minNodeCpus": MIN_VCPUS,
    "nodeAffinities": [
      {
        "key": "compute.googleapis.com/node-group-name",
        "operator": "IN",
        "values": [
          "GROUP_NAME"
        ]
      }
    ]
  },
  ...
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto.

  • ZONE: la zona per questa richiesta.

  • MACHINE_TYPE_ZONE: la zona che ospita il tipo di macchina.

  • MACHINE_TYPE: il tipo di macchina su cui eseguire il provisioning della VM single-tenant. Il numero di CPU specificato dal tipo di macchina corrisponde al numero massimo di CPU a cui la VM può eseguire burst dal giorno MIN_VCPUS.

  • VM_NAME: il nome della VM single-tenant su cui eseguire l'overcommit delle CPU.

  • MIN_VCPUS: il numero minimo di vCPU garantite per questa VM.

  • GROUP_NAME: il nome del gruppo di nodi single-tenant su cui eseguire il provisioning della VM.

Impostazione del livello di overcommit su un tipo di macchina personalizzata

Per creare una VM single-tenant con risorse della CPU disponibili per l'overcommit su un tipo di macchina personalizzata, sostituisci il valore del campo machineType con zones/zone/machineTypes/custom-CPUS-MEMORY, sostituendo CPUS con il numero di CPU e MEMORY con la quantità di memoria, in megabyte, per il tipo di macchina personalizzata.

Aggiorna il livello di overcommit della CPU

Le procedure seguenti mostrano come aggiornare il livello di overcommit della CPU di una VM single-tenant.

gcloud

  1. Per modificare il livello di overcommit della CPU di una VM attualmente in esecuzione, devi prima arrestare la VM. Per arrestare una VM, utilizza il comando gcloud compute instances stop come segue:

    gcloud compute instances stop VM_NAME
    

    Sostituisci VM_NAME con il nome dell'istanza che vuoi arrestare.

  2. Per aggiornare il livello di overcommit della CPU di una VM single-tenant, utilizza il comando gcloud compute instances set-scheduling come segue:

    gcloud compute instances set-scheduling VM_NAME \
      --min-node-cpu=MIN_VCPUS
    

    Sostituisci quanto segue:

    • VM_NAME: il nome della VM single-tenant per modificare il livello di overcommit della CPU.

    • MIN_VCPUS: il numero minimo di vCPU garantite per questa VM.

REST

  1. Per modificare il livello di overcommit della CPU di una VM attualmente in esecuzione, devi prima arrestare la VM. Per arrestare una VM, crea una richiesta POST utilizzando il metodo instances.stop come segue:

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto.

    • ZONE: la zona per questa richiesta.

    • VM_NAME: il nome della VM single-tenant per modificare il livello di overcommit della CPU.

  2. Per aggiornare il livello di overcommit della CPU di una VM single-tenant, utilizza il metodo instances.setScheduling come segue:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
    {
    "minNodeCpus":MIN_VCPUS
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto.

    • ZONE: la zona per questa richiesta.

    • VM_NAME: il nome della VM single-tenant per modificare il livello di overcommit della CPU.

    • MIN_VCPUS: il numero minimo di vCPU garantite per questa VM.

Disabilita l'overcommit della CPU per le VM single-tenant

Le seguenti procedure mostrano come disabilitare l'overcommit della CPU di una VM single-tenant.

gcloud

L'esempio seguente mostra come utilizzare il comando gcloud compute instances set-scheduling per disabilitare l'overcommitment della CPU di una VM single-tenant.

gcloud compute instances set-scheduling VM_NAME \
  --clear-min-node-cpu

Sostituisci quanto segue:

  • VM_NAME: il nome della VM single-tenant per disabilitare l'overcommitment della CPU.

REST

L'esempio seguente mostra come utilizzare il comando instances.setScheduling per disabilitare l'overcommit della CPU di una VM single-tenant.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
{
  "minNodeCpus":null
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto.

  • ZONE: la zona per questa richiesta.

  • VM_NAME: il nome della VM single-tenant per disabilitare l'overcommiting della CPU.

Visualizza l'utilizzo della CPU

Controlla l'utilizzo della CPU delle VM single-tenant in un gruppo di nodi single-tenant seguendo la procedura riportata di seguito.

  1. Nella console Google Cloud, vai alla pagina Nodi single-tenant.

    Vai ai nodi single-tenant

  2. Fai clic su Gruppi di nodi.

  3. Fai clic sul gruppo di nodi single-tenant contenente il nodo single-tenant che include la VM con CPU con overcommit.

  4. Fai clic sul nodo single-tenant che contiene la VM con CPU con overcommit.

  5. Sotto il nome del nodo single-tenant, visualizza Utilizzo CPU, Tipo di overcommit della CPU e Utilizzo CPU minimo.

    • Utilizzo CPU mostra il totale del numero massimo di CPU per tutte le VM su questo nodo single-tenant, diviso per il numero di CPU specificate dal tipo di nodo single-tenant.

      Il numero di CPU sul nodo disponibili per l'overcommitting è il numeratore meno il denominatore, mentre il livello di overcommit è il quoziente del numeratore e del denominatore.

    • Utilizzo minimo della CPU mostra la somma del numero minimo di CPU allocata per tutte le VM su un nodo single-tenant divisa per il numero di CPU specificate dal tipo di nodo.

Ottimizza i livelli di overcommit della CPU

Per aiutarti a ottimizzare l'ottimizzazione dei livelli di overcommit della CPU, Compute Engine fornisce la metrica Tempo di attesa dello scheduler. La metrica Tempo di attesa dello scheduler indica il tempo di attesa aggregato per tutte le vCPU sulla VM e ti aiuta a determinare l'impatto dell'overcommit della CPU sulle prestazioni della VM.

La sensibilità dei carichi di lavoro varia, ma una regola generale è utilizzare 20 millisecondi di tempo di attesa dello scheduler accumulato al secondo (20 ms/s) come tempo di attesa massimo per ogni vCPU. Ad esempio, se una VM è impostata su 8 vCPU, una regola generale è una soglia di 160 ms/s, con un valore medio accettabile di Tempo di attesa per lo scheduler di 20 ms/s per vCPU. I requisiti delle prestazioni del tuo carico di lavoro determineranno in definitiva soglie accettabili.

  1. Nella console Google Cloud, vai alla pagina Monitoring.

    Vai a Monitoring

  2. Fai clic su Metrics Explorer.

  3. Nel campo Tipo di risorsa, inserisci Istanza VM.

  4. Nel campo Metrica, inserisci Scheduler Wait Time (Tempo di attesa dello scheduler).

  5. Facoltativamente, configura gli avvisi per attivare gli avvisi per le soglie dei tempi di attesa delle VM facendo clic su Avvisi.

Passaggi successivi