Il Resource Manager: Allocazione della memoria tra le macchine virtuali

Scritto il 01/10/2009
 

La virtualizzazione dei sistemi operativi – Capitolo 2.3.2

ESX server alloca a ciascuna macchina virtuale la quantità di memoria specificata durante la fase della sua creazione. Tuttavia è possibile creare macchine virtuali la cui somma della memoria specificata per ciascuna macchina supera la quantità di memoria fisica disponibile. In questo caso si parla di overcommitment.

Nella situazione di overcommitment il vmkernel assegna ad ogni macchina virtuale in esecuzione una quantità di memoria intermedia tra la reservation1 ed il limit2 utilizzando un coefficiente di priorità chiamato share. Maggiore è la share, maggiore la priorità assegnata alla macchina virtuale.
La quantità di memoria che il vmkernel assegna alla macchina virtuale al di sopra della reservation varia in funzione del suo carico di lavoro.

Le tecniche utilizzate per l’allocazione dinamica della memoria tra le macchine virtuali sono due:

Memory Balloon Driver

Il balloon driver è un componente che viene caricato sulla macchina virtuale attraverso l’installazione dei VMware tools. Collabora con il server per recuperare le pagine di memoria che il sistema operativo guest considera di minore importanza.

Agisce come un programma che aumenta o diminuisce la sua richiesta di pagine di memoria, forzando il sistema guest ad utilizzare il suo algoritmo di gestione della memoria. Quando la memoria è insufficiente, il sistema operativo ne reclama e, se necessario, effettua swap3 su disco.

grafico del funzionamento del memory balloon driver
Fig. 2.9: Funzionamento del memory balloon driver

La tecnica del balloon driver garantisce prestazioni migliori rispetto alla seconda tecnica detta,

Swapping

La tecnica dello swapping è utilizzata quando non è presente il balloon driver. Ad esempio durante la fase di avvio della macchina virtuale prima del caricamento del driver o nel caso che non siano installati i VMware tools.

Consiste semplicemente nel creare un file di swap che, per impostazione predefinita è localizzato nel volume logico dove è presente il file di configurazione della macchina virtuale. Questa tecnica causa una perdita di prestazione ed è utilizzata come ultima risorsa.

Condivisione delle memoria tra macchine virtuali

Il vmkernel implementa anche una tecnica che permette la condivisione delle pagine di memoria tra le macchine virtuali per ridurre la quantità di memoria necessaria. Effettua una scansione delle pagine presenti in memoria e ne calcola l’hash. Nel caso di hash corrispondenti, blocca la pagina in sola lettura. Se una macchina virtuale tenta di modificare le pagine di memoria in sola lettura, il vmkernel ne crea immediatamente una copia con permessi di lettura e scrittura.

Questa tecnica permette di ridurre significativamente l’utilizzo di memoria dato che frequentemente le macchine virtuali eseguono lo stesso sistema operativo, ma crea un’inevitabile overhead di elaborazione.

grafico della condivisione della pagine di memoria
Fig. 2.10: Condivisione della pagine di memoria

Torna all’Indice »

1 La reservation è la quantità di memoria che l’utente stabilisce debba essere riservata ad una specifica macchina virtuale. L’impostazione predefinita prevede l’assegnazione di una reservation pari a 0.

2 Il limit è la quantità di memoria che l’utente definisce essere il limite di utilizzo di una macchina virtuale.

3 Con il termine swap si intende, in informatica, l’estensione della capacità della memoria complessiva del computer oltre il limite imposto dalla quantità di RAM installata, attraverso l’utilizzo di uno spazio sul disco.

Serverlab