Windows Server Virtualization: Architettura - parte 4

Dopo un po' di tempo sono finalmente riuscito a completare un altra puntata della serie dedicata a Windows Server Virtualization.

Questa volta ci occuperemo di gestione della memoria.

 

Windows Server Virtualization introduce due nuove important funzioni di gestione della memoria: Memory Reserves e Page Sharing.

Memory reserve

Possiamo pensare alla memory reserve come alla quantità minima di memoria garantita ad una macchina virtuale.

 

Quando durante la creazione di una macchina virtuale si a questa assegna una certa quantità di memoria si eseguono due operazioni:

  • Si assegna una allocazione massima
  • Si assegna una memory reserve come percentuale dell’allocazione massima (il default è il 100% e il valore minimo assegnabile è il 75%)

Facciamo qualche esempio per comprendere meglio il funzionamento della memory reserve. Supponiamo di assegnare ad una macchina virtuale 4GB di RAM e consideriamo alcuni esempi di memory reserve diversa per capire come funziona il meccanismo.

  1. Con una memory reserve del 100% all’avvio della macchina virtuale saranno allocati per questa 4GB di memoria fisica. Questa è la condizione che garantisce le migliori prestazioni.
  2. Con una memory reserve del 75%, all’avvio della macchina virtuale saranno allocati, per questa, 3GB di memoria fisica. Il rimanente 1GB sarà assegnato come pagine allocate in memoria fisica se disponibile, in caso contrario sarà assegnato come spazio paginabile su disco. Il 75% rappresenta il minimo valore impostabile di memory reserve.

 

Per garantire le massime prestazioni, per default, tutte le macchine virtuali sono create con una memory reserve del 100% (che determina anche la disabilitazione automatica del Page Sharing) e deve essere l’utente a modificare questa impostazione.

 

L’impostazione del memory reserve è dinamica ed eseguibile anche quando la macchina virtuale è in esecuzione. Se all’avvio di una macchina virtuale il server fisico non dispone di RAM libera almeno pari alla memory reserve la macchina virtuale non potrà essere avviata.

È possibile impostare per ogni macchina virtuale la locazione fisica del file su disco usato per la paginazione di memoria del memory reserve.

 

Valori di memory reserve inferiori al 100% sono raccomandati solo in ambienti di test o di sviluppo: quando il server fisico esaurisce la RAM disponibile inizierà a scaricare su disco le porzioni di memoria paginabili provocando un degrado delle prestazioni che sarà tanto più grave quanto maggiore è il livello di sovra allocazione della memoria rispetto alla reale disponibilità.

L’uso della memory reserve non è quindi gratuito in quanto si introduce un livello di paginazione a livello del strato di virtualizzazione che si aggiunge a quello proprio del sistema operativo in esecuzione nella macchina virtuale, aumentando, potenzialmente, l’accesso ai dischi.

La memory reserve è agnostica rispetto al sistema operativo in esecuzione nelle macchine virtuali .

Page Sharing

La funzione di Page Sharing consiste essenzialmente nel fatto che Windows Server Virtualization condivide tra diverse macchine virtuali pagine identiche di memoria.

 

Se per esempio un sono in esecuzione quattro macchine virtuali che eseguono lo stesso sistema operativo è molto probabile che ci siano molte pagine di memoria in comune tra le diverse macchine.

Windows Server Virtualization trova queste pagine identiche e le condivide tra le diverse macchine virtuali eliminando i duplicati e risparmiando in questo modo risorse.

Questo significa che se in diverse macchine virtuali si esegue lo stesso programma (es. Explorer), finché le pagine in memoria sono identiche saranno condivise tra le diverse istanze di sistema operativo in esecuzione nelle diverse macchine virtuali.

Se una pagina condivisa è modificata per una sola delle macchine virtuali, Windows Server Virtualization usa una semantica “copy on write” per generare al volo una nuova pagina per la corretta macchina virtuale.

 

Il beneficio di questa tecnica è un risparmio di risorse che consente una maggiore densità di macchine virtuali in esecuzione su un singolo server fisico. È evidente che si avranno maggiori vantaggi nel caso si eseguano molte macchine virtuali con lo stesso sistema operativo su un server fisico rispetto al caso si eseguano lo stesso numero di macchine virtuali, ma con sistemi operativi diversi, sullo stesso server fisico.

 

Il Page Sharing è abilitato per macchina virtuale utilizzando la memory reserve:

  • è abilitato per valori di memory reserve inferiori al 100%
  • è disabilitato con memory reserve impostata a 100%

Usando un valore di memory reserve del 99% si ottiene il vantaggio di abilitare il page sharing, liberando risorse di memoria e nello stesso tempo si ottiene un degrado minimo delle prestazioni della macchina virtuale dovuto alla paginazione su disco.

 

Questa tecnica è agnostica rispetto al sistema operativo in esecuzione nelle partizioni child e quindi funziona con qualsiasi sistema operativo (Windows, Linux, ecc…).

 

Windows Vista e Windows Server 2008 introducono la tecnica di Address Space Layout Randomization (ASLR) che determina il posizionamento in RAM degli entry point delle funzioni in locazioni random in modo da rendere meno facili alcuni tipi di attacchi. La ASLR non ha influenza sulla page sharing in quanto questa cerca pagine di memoria identiche a prescindere dalla loro locazione.

Giorgio