Gestione dinamica delle risorse di nuova generazione

Le VM N4, basate sui processori Intel Xeon di quinta generazione e su Titanium, utilizzano la gestione dinamica delle risorse di nuova generazione per aumentare l'efficienza in termini di costi mediante un migliore utilizzo delle risorse fisiche disponibili sulle macchine host. Inoltre, utilizzano uno scheduler della CPU personalizzato e la migrazione live sensibile alle prestazioni per bilanciare le esigenze di prestazioni dei carichi di lavoro con le risorse disponibili. Si tratta delle stesse tecnologie che i servizi Ricerca Google, Google Ads, Google Maps e YouTube utilizzano per eseguire in modo efficiente i carichi di lavoro sensibili alla latenza.

La gestione dinamica delle risorse di nuova generazione offre anche una migliore affinità NUMA, una previsione più accurata dei requisiti delle risorse e un ribilanciamento più rapido mediante la migrazione live basata sulle prestazioni.

Come funziona la gestione dinamica delle risorse

Le CPU virtuali (vCPU) sono implementate come thread pianificati per l'esecuzione on demand, come qualsiasi altro thread su un host. Quando la vCPU ha un compito da svolgere, il lavoro viene assegnato a una CPU fisica disponibile su cui eseguirlo fino a quando non viene riattivata. Allo stesso modo, la RAM virtuale viene mappata alle pagine host fisiche utilizzando le tabelle di pagina che vengono compilate quando si accede per la prima volta a una pagina fisica del guest. Questo mapping rimane fisso fino a quando la VM non indica che una pagina fisica ospite non è più necessaria.

La gestione dinamica delle risorse consente a Compute Engine di utilizzare meglio le CPU fisiche disponibili pianificando le VM per i server in base alla domanda di risorse e pianificando i thread delle vCPU per le CPU fisiche in modo da ridurre al minimo il tempo di attesa. Nella maggior parte dei casi, Google Cloud può eseguire le VM in modo più efficiente su un numero inferiore di server.

Componenti della gestione dinamica delle risorse

Compute Engine utilizza le seguenti tecnologie per la gestione dinamica delle risorse:

Server fisici più grandi ed efficienti

Il numero dei core e la densità della RAM sono costantemente aumentati, tanto che ora i server host hanno molte più risorse di qualsiasi singola VM. Google mette costantemente a confronto nuovo hardware e cerca piattaforme che siano convenienti e che funzionino bene per la più vasta gamma di carichi di lavoro e servizi cloud, consentendoti di sfruttare le tecnologie più recenti, quando sono disponibili.

Posizionamento intelligente delle VM

Il sistema di gestione dei cluster di Google monitora CPU, RAM, larghezza di banda di memoria e altre richieste di risorse delle VM in esecuzione su un server fisico. Utilizza queste informazioni per prevedere le prestazioni di una VM appena aggiunta su quel server. Dopodiché esegue una ricerca su migliaia di server per trovare la posizione migliore in cui aggiungere una VM. Queste osservazioni assicurano che, quando viene posizionata una nuova VM, sia compatibile con le entità vicine e che sia improbabile che subisca interferenze da queste istanze.

Migrazione live basata sulle prestazioni

Dopo aver posizionato le VM su un host, Compute Engine monitora continuamente le prestazioni e i tempi di attesa delle VM. Se il fabbisogno di risorse delle VM aumenta, Compute Engine può utilizzare la migrazione live per spostare in modo trasparente i carichi di lavoro su altri host del data center. Il criterio di migrazione live è guidato da un approccio predittivo che dà a Compute Engine il tempo di spostare il carico, spesso prima che le VM riscontrino qualsiasi tempo di attesa.

Scheduler CPU hypervisor

Lo scheduler CPU hypervisor mappa in modo dinamico la CPU virtuale e la memoria alla CPU fisica e alla memoria del server host on demand. Questa gestione dinamica migliora l'efficienza dei costi delle VM grazie a un migliore utilizzo delle risorse fisiche. Grazie all'uso efficiente delle risorse, Compute Engine può eseguire VM in modo più efficiente su un minor numero di server, permettendo a Google Cloud di ridurre il risparmio agli utenti.

Gestione dinamica delle risorse di prima generazione

E2 è stata la prima serie di VM a offrire la gestione dinamica delle risorse utilizzando un dispositivo con palloncino di memoria Virtio.

Dispositivo con palloncino in memoria Virtio con VM E2

Il fumetto della memoria è un meccanismo di interfaccia tra host e guest che regola dinamicamente le dimensioni della memoria riservata per il guest. E2 utilizza un dispositivo con fumetto di memoria Virtio per implementare questo processo. Tramite il dispositivo fumetto della memoria virtio, un host può chiedere esplicitamente a un ospite di fornire una certa quantità di pagine di memoria libera (detto anche inflazione del fumetto della memoria) e di recuperare la memoria in modo che l'host possa utilizzarla per altre VM. Allo stesso modo, il dispositivo a palloncino con memoria Virtio può restituire all'ospite le pagine di memoria riducendo il volume del fumetto. Le VM E2 sono l'unica famiglia di macchine che utilizza il dispositivo a fumetto di memoria.

Le istanze VM di Compute Engine E2 basate su un'immagine pubblica dispongono di un dispositivo con fumetto di memoria Virtio , che monitora l'utilizzo della memoria da parte del sistema operativo guest. Il sistema operativo guest comunica la sua memoria disponibile al sistema host. L'host rialloca la memoria inutilizzata ad altri processi on demand, utilizzando così la memoria in modo più efficace. Compute Engine raccoglie e utilizza questi dati per fornire suggerimenti per il dimensionamento ottimale più accurati.

Verifica dell'installazione del driver

Per verificare se nell'immagine è installato e caricato il driver del dispositivo fumetto della memoria virtio, esegui questo comando.

Linux

La maggior parte delle distribuzioni Linux include il driver del dispositivo con palloncino di memoria Virtio. Per verificare che il driver dell'immagine sia installato e caricato, esegui:

sudo modinfo virtio_balloon > /dev/null && echo Balloon driver is \
installed || echo Balloon driver is not installed; sudo lsmod | grep \
virtio_balloon > /dev/null && echo Balloon driver is loaded || echo \
Balloon driver is not loaded

Nei kernel Linux precedenti alla 5.2, il sistema di memoria Linux a volte impedisce erroneamente allocazioni elevate quando è presente il dispositivo fumetto. In pratica raramente si tratta di un problema, ma ti consigliamo di modificare l'impostazione della memoria virtuale overcommit_memory in 1 per evitare che si verifichi. Questa modifica è già stata apportata per impostazione predefinita in tutte le immagini fornite da Google pubblicate dal 9 febbraio 2021.

Per correggere l'impostazione, utilizza il comando seguente per modificare il valore da 0 a 1:

sudo /sbin/sysctl -w vm.overcommit_memory=1

Per mantenere questa modifica tra i riavvii, aggiungi quanto segue al tuo file /etc/sysctl.conf:

vm.overcommit_memory=1

Windows

Le immagini Windows di Compute Engine includono il dispositivo fumetto virtio. al contrario delle immagini personalizzate di Windows. Per verificare se il driver è installato sull'immagine Windows, esegui:

googet verify google-compute-engine-driver-balloon

Disattivazione del dispositivo a palloncino con memoria Virtio

L'utilizzo del dispositivo a palloncino con memoria virtio consente a Compute Engine di utilizzare le risorse di memoria in modo più efficace, in modo che Google Cloud possa offrire VM E2 a prezzi più bassi. Puoi disattivare il dispositivo fumetto della memoria Virtio disabilitando il driver del dispositivo. Dopo aver disabilitato il dispositivo fumetto della memoria Virtio, continuerai a ricevere consigli per il dimensionamento ottimale, ma potrebbero non essere molto precisi.

Linux

Per disabilitare il dispositivo in Linux, esegui questo comando:

sudo rmmod virtio_balloon

Puoi aggiungere questo comando allo script di avvio della VM per disabilitare automaticamente il dispositivo all'avvio della VM.

Windows

Per disattivare il dispositivo su Windows, esegui questo comando:

googet -noconfirm remove google-compute-engine-driver-balloon

Puoi inserire questo comando nello script di avvio della VM per disabilitare automaticamente il dispositivo all'avvio della VM.

Passaggi successivi