Gestione delle risorse dinamiche 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 dei costi sfruttando al meglio le 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 del carico 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 utilizzando la migrazione live consapevole delle prestazioni.

Come funziona la gestione delle risorse dinamiche

Le CPU virtuali (vCPU) vengono implementate come thread la cui esecuzione viene pianificata on demand come qualsiasi altro thread su un host. Quando la vCPU ha del lavoro da svolgere, questo viene assegnato a una CPU fisica disponibile su cui eseguire fino a quando non va di nuovo in sospensione. Allo stesso modo, la RAM virtuale viene mappata alle pagine host fisiche utilizzando tabelle di pagine che vengono compilate quando si accede per la prima volta a una pagina fisica guest. Questo mapping rimane fisso finché 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 sui server in base alla domanda di risorse e pianificando i thread vCPU sulle CPU fisiche in modo da ridurre al minimo il tempo di attesa. Nella maggior parte dei casi, possiamo farlo senza problemi, quindi 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 di core e la densità di RAM sono aumentati costantemente, tanto che ora i server host hanno molte più risorse di qualsiasi singola VM. Google esegue continuamente benchmark sul nuovo hardware e cerca piattaforme economiche e con buone prestazioni per la più ampia gamma di servizi e workload cloud, consentendoti di sfruttare le tecnologie più recenti quando sono disponibili.

Posizionamento intelligente delle VM

Il sistema di gestione dei cluster di Google osserva la CPU, la RAM e altre richieste di risorse delle VM in esecuzione su un server fisico. Utilizza queste informazioni per prevedere il rendimento di una VM appena aggiunta sul server. Dopodiché esegue la ricerca in migliaia di server per trovare la posizione migliore in cui aggiungere una VM. Queste osservazioni assicurano che quando viene posizionata una nuova VM, questa sia compatibile con le VM vicine e che non subisca interferenze da queste istanze.

Migrazione live consapevole delle prestazioni

Dopo che le VM sono state posizionate su un host, Compute Engine monitora continuamente le prestazioni e i tempi di attesa delle VM. Se le richieste di risorse delle VM aumentano, Compute Engine può utilizzare la migrazione live per spostare in modo trasparente i carichi di lavoro su altri host nel data center. La policy di migrazione live è guidata da un approccio predittivo che consente a Compute Engine di spostare il carico, spesso prima che le VM subiscano tempi di attesa.

Pianificazione della CPU dell'hypervisor

Lo scheduler della CPU dell'hypervisor mappa dinamicamente la CPU virtuale e la memoria alla CPU fisica e alla memoria del server host su richiesta. Questa gestione dinamica aumenta l'efficienza dei costi nelle VM utilizzando meglio le risorse fisiche. L'utilizzo efficiente delle risorse significa che Compute Engine può eseguire le VM in modo più efficiente su un numero inferiore di server, consentendo a Google Cloud di trasferire i risparmi agli utenti.

Gestione delle risorse dinamiche di prima generazione

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

Dispositivo di compressione della memoria Virtio con VM E2

Il ballooning della memoria è un meccanismo di interfaccia tra host e guest per regolare dinamicamente le dimensioni della memoria riservata per il guest. E2 utilizza un dispositivo VirtIO per il ballooning della memoria per implementare il ballooning della memoria. Tramite il dispositivo virtio memory balloon, un host può chiedere esplicitamente a un guest di cedere una certa quantità di pagine di memoria libera (chiamata anche espansione della memoria balloon) e recuperare la memoria in modo che l'host possa utilizzare la memoria libera per altre VM. Allo stesso modo, il dispositivo virtio memory balloon può restituire le pagine di memoria all'ospite sgonfiando il palloncino di memoria. Le VM E2 sono l'unica famiglia di macchine che utilizza il dispositivo di palloncino di memoria.

Le istanze VM E2 di Compute Engine basate su un'immagine pubblica hanno un dispositivo di ballooning della memoria virtio , che monitora l'utilizzo della memoria del sistema operativo guest. Il sistema operativo guest comunica la memoria disponibile al sistema host. L'host riassegna qualsiasi memoria inutilizzata ad altri processi su richiesta, utilizzando così la memoria in modo più efficace. Compute Engine raccoglie e utilizza questi dati per fornire suggerimenti per il dimensionamento corretto più accurati.

Verifica dell'installazione del driver

Per verificare se il driver del dispositivo di palloncino di memoria virtio è installato e caricato nell'immagine, esegui il seguente comando.

Linux

La maggior parte delle distribuzioni Linux include il driver del dispositivo di palloncino di memoria virtio. Per verificare che il driver sia installato e caricato nell'immagine, 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 versione 5.2, il sistema di gestione della memoria Linux a volte impedisce erroneamente allocazioni di grandi dimensioni quando è presente il dispositivo balloon. In pratica, questo problema si verifica raramente, 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 a partire dal 9 febbraio 2021.

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

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

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

vm.overcommit_memory=1

Windows

Le immagini Windows di Compute Engine includono il dispositivo virtio balloon. Tuttavia, le immagini Windows personalizzate non lo fanno. Per verificare se il driver è installato nell'immagine Windows, esegui:

googet verify google-compute-engine-driver-balloon

Disattivazione del dispositivo di palloncino di memoria virtio

L'utilizzo del dispositivo di ballooning della memoria virtio consente a Compute Engine di utilizzare le risorse di memoria in modo più efficace, in modo da poter offrire VM E2 a prezzi più bassi. Google Cloud Puoi disattivare il dispositivo di palloncino di memoria virtio disattivando il driver del dispositivo. Dopo aver disabilitato il dispositivo di ballooning della memoria virtio, continuerai a ricevere suggerimenti per il dimensionamento ottimale, ma potrebbero non essere altrettanto precisi.

Linux

Per disattivare il dispositivo in Linux, esegui questo comando:

sudo rmmod virtio_balloon

Puoi aggiungere questo comando allo script di avvio della VM per disattivare 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 disattivare automaticamente il dispositivo all'avvio della VM.

Passaggi successivi