Overcommit delle CPU su VM single-tenant


L'overcommit della CPU sui nodi single-tenant ti consente di pianificare istanze che possono condividere tra loro i cicli 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 normalmente disponibili. L'overcommit della CPU è particolarmente utile per i carichi di lavoro sottoutilizzati, ma che potrebbero registrare picchi relativamente non correlati.

L'overcommit della CPU può aiutarti a ridurre i costi per VM suddividendo il costo di un nodo single-tenant su più VM. Inoltre, può ridurre i costi delle licenze per VM se si utilizzano licenze per socket o per core.

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

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

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

Livello di overcommit

Puoi specificare il valore del numero minimo di CPU allocate a una VM quando la crei o dopo averla arrestata. Il livello di overcommit rappresenta il numero minimo di thread della CPU sottostanti garantiti per una VM. Se la VM ha più vCPU rispetto ai thread sottostanti disponibili, le vCPU della VM condividono le risorse di calcolo sottostanti e vengono eseguite con prestazioni inferiori.

Puoi impostare questo valore per ogni VM, il che ti consente di eseguire il provisioning di VM con diversi rapporti di overcommit della CPU su un singolo nodo single-tenant. I valori più bassi riducono i requisiti di capacità a scapito delle prestazioni se si verificano picchi correlati. Per determinare un valore ottimale per il numero minimo di CPU, è necessario comprendere l'utilizzo del carico 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 se imposti il valore per il numero minimo di CPU uguale al numero di CPU sul 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 CPU da overcommittare ad altre VM.

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

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

Il valore del numero di CPU specificato dal tipo di macchina della VM è un valore statico e rappresenta il numero di CPU che una VM può utilizzare in burst rispetto al numero minimo, se queste CPU sono disponibili. Se hai bisogno di un numero di CPU diverso da quello fornito 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, valuta la criticità del tuo carico di lavoro. I 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 un overcommit così elevato o addirittura nessuno.

Prendi in considerazione anche l'utilizzo del 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 inutilizzabili per altre VM con overcommit. Inoltre, i carichi di lavoro con un utilizzo medio della CPU ridotto, ma con picchi di utilizzo ridotti, potrebbero trarre vantaggio da dimensioni diverse dei tipi di macchine.

L'utilizzo dell'overcommit della CPU è vantaggioso per i carichi di lavoro intermittenti non correlati con un picco di utilizzo elevato e un utilizzo medio ridotto, in quanto questi carichi di lavoro hanno maggiori probabilità di avere risorse CPU disponibili da condividere tra le VM quando alcune VM devono aumentare il loro utilizzo. Se tutte le VM su un host vengono attivate contemporaneamente, l'host non avrà risorse sufficienti per le VM.

Limitazioni

Limitazioni dei carichi di lavoro

Il overcommit della CPU è più adatto per i carichi di lavoro senza requisiti di prestazioni rigorosi, ad esempio i carichi di lavoro di sviluppo e test e le infrastrutture virtuali dei desktop.

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

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

Se le istanze sono sovracommittate in modo eccessivo, spostale su un altro node di proprietà singola.

Limitazioni del tipo di macchina

Puoi eseguire l'overcommit delle CPU solo su quanto segue:

Limitazioni del livello di overcommit

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

Limitazioni della pianificazione delle VM

I gruppi di nodi single-tenant basati su modelli di nodi single-tenant non configurati per l'overcommit della CPU non consentono il provisioning di VM con l'overcommit della CPU abilitato. In altre parole, non puoi pianificare una VM con un numero minimo di CPU specificato in un gruppo di nodi single-tenant non configurato per l'overcommit della CPU.

Quota

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

Costi

Ai nodi single-tenant per i quali è selezionato l'overcommit della CPU nel modello di nodo viene applicato un ulteriore 25% di carica. Questo addebito si aggiunge al premium del 10% per l'esecuzione di VM su nodi single-tenant. Il premium per l'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 utilizzo commissato. Gli sconti per utilizzo sostenuto sono disponibili per il premium per la modalità single-tenant e il premium per overcommit della CPU.

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

Configurare le VM single-tenant per l'overcommit

Per configurare le VM single-tenant in modo che abbiano risorse CPU disponibili per l'overcommit, segui questi passaggi:

  1. Crea un modello di nodo single-tenant con l'overcommit della CPU abilitato. Devi attivare 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. Crea un gruppo di nodi single-tenant basato sul modello di nodo single-tenant per il quale è attivo l'overcommit della CPU.

  3. Crea una VM ed esegui le seguenti operazioni:

    1. Scegli un tipo di macchina per la VM. Il numero di CPU del tipo di macchina rappresenta il numero massimo di CPU a cui la VM può aumentare il 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 di proprietà del singolo utente, a condizione che non superi la capacità di CPU e memoria del nodo di proprietà del singolo utente.

    2. Specifica il numero minimo di CPU da allocare alla 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 overcommit della CPU abilitato.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per ulteriori informazioni, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Impostare il livello di overcommit della CPU

Le procedure riportate di seguito mostrano come creare una VM single-tenant con risorse CPU disponibili per l'overcommit. Se devi modificare il livello di overcommit della CPU di una VM in esecuzione, devi prima arrestarla.

Console

Nella console Google Cloud, crea una VM single-tenant in un gruppo di nodi single-tenant creato da un modello di nodo single-tenant con overcommit della CPU attivo:

  1. Vai alla pagina Nodi di proprietà esclusiva.

    Vai a 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 Nome, Regione e Zona per la VM.

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

  7. In Overcommit della CPU, seleziona Attiva 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 risorse 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 fisso con risorse CPU disponibili per l'overcommit.

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 è il numero massimo di CPU che la VM può utilizzare in modalità burst da MIN_VCPUS.

  • MIN_VCPUS: il numero minimo di vCPU garantite come disponibili 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 di proprietà esclusiva con risorse CPU disponibili per l'overcommit su un tipo di macchina personalizzata, ometti il flag --machine-type e utilizza 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 CPU disponibili per l'overcommit.

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 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 è il numero massimo di CPU che la VM può utilizzare in modalità burst da 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 come disponibili 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 monoproprietario con risorse CPU disponibili per l'overcommit su un tipo di macchina personalizzata, sostituisci il valore del campo machineType con zones/zone/machineTypes/custom-CPUS-MEMORY, CPUS con il numero di CPU e MEMORY con la quantità di memoria, in megabyte, per il tipo di macchina personalizzata.

Aggiornare il livello di overcommit della CPU

Le procedure riportate di seguito mostrano come aggiornare il livello di overcommit della CPU di una VM monoutente.

gcloud

  1. Per modificare il livello di overcommit della CPU di una VM in esecuzione, devi prima arrestarla. Per interrompere 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 come disponibili per questa VM.

REST

  1. Per modificare il livello di overcommit della CPU di una VM in esecuzione, devi prima arrestarla. 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 come disponibili per questa VM.

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

Le procedure riportate di seguito mostrano come disattivare il sovracommit della CPU di una VM monoutente.

gcloud

L'esempio seguente mostra come utilizzare il comando gcloud compute instances set-scheduling per disattivare l'overcommit 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 disattivare il sovracommittmento della CPU.

REST

L'esempio seguente mostra come utilizzare il comando instances.setScheduling per disattivare il sovracommit 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'overcommit della CPU.

Visualizzare l'utilizzo della CPU

Per controllare l'utilizzo della CPU delle VM single-tenant in un gruppo di nodi single-tenant, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Nodi di proprietà esclusiva.

    Vai a Nodi single-tenant

  2. Fai clic su Gruppi di nodi.

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

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

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

    • Utilizzo della CPU mostra il totale del numero massimo di CPU per tutte le VM su questo nodo monoproprietario diviso per il numero di CPU specificato dal tipo di nodo monoproprietario.

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

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

Ottimizza i livelli di overcommit della CPU

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

La sensibilità del carico di lavoro varia, ma una regola generale è utilizzare 20 millisecondi di tempo di attesa dell'organizzatore 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 empirica è 160 ms/s, che si traduce in un tempo di attesa dello schedulatore medio accettabile di 20 ms/s per vCPU. I requisiti di prestazioni del tuo workload determineranno in ultima analisi le 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 Tempo di attesa pianificatore.

  5. Se vuoi, configura gli avvisi in modo che vengano attivati per le soglie di tempo di attesa della VM facendo clic su Avvisi.

Passaggi successivi