Memory sharing: cos’è e a cosa serve?

Una delle feature che VMware ha introdotto da tantissimi anni, già nelle versioni Workstation e Server e successivamente nelle versioni ESX, è l’ottimizzazione della memoria, ottenugra grazie a diverse tecniche (ballooning, contend-based page sharing, demand paging). Tramite una di queste funzioni (contend-based page sharing) l’hypervisor verifica le pagine di memoria che hanno contenuto uguale e “deduplica” i dati, liberando quindi RAM. Il risultato è che la somma della memoria delle VM può essere maggiore della memoria fisica disponibile.

Questa funzione non è presente di altri hypervisor, in particolare on Xen, sia nella versione open-source, sia in Citrix XenServer. Per essere più precisi, Xen implementa solo il “ballooning”, ma le capacità di overbook della memoria sono inesistenti nel mondo Windows.

Allo XenSummit 2008,  Dan Magenheimer, Consulting Developer in Oracle (una delle aziende che controbuisce allo sviluppo di Xen), ha presentato un documento nel quale ribadisce che il memory ballooning è una tecnica più che sufficiente per l’ottimizzazione, evidentemente ignorando il mondo Windows.

La situazione è questa: in grosse realtà, dove il costo di 32 o 64 GB di RAM non sono un ostacolo, l’ottimizzazione della memoria può non essere un punto chiave, soprattutto considerando che anche questa funzione occupa dei cicli di CPU. Per il resto delle aziende (pensiamo alla PMI) che sperava di utilizzare dei server con 4GB si vede vincolato nella scelta dell’hypervisor. Il rovescio della medaglia sta ne fatto che l’hypervisor utilizza tempo CPU per verificare le pagine che hanno contenuto uguale e quindi liberare memoria, ma questa operazione può essere effettuata durante i cicli idle del processore. Diverso è il caso in cui una macchina virtuale debba modificare quella specifica pagina di memoria, in quanto la memoria condivisa è read-only e diventa necessario effettuare una copia della pagina prima di effettuare la scrittura (Copy-on-Wrote o CoW).

In realtà anche la comunità Xen sta ragionando da tempo all’implementazione di altre funzioni di ottimizzazione, in particolare il contend-based page sharing. Questa implementazione è anche caldeggiata dai vendor dei prodotti commerciali che si appoggiano a Xen, i quali risentono di questa mancanza che, come detto precedentemente, può diventare un elemento critico nella scelta del prodotto. Per questo motivo è facile prevedere che presto vedremo anche funzioni avanzate di ottimizzazione della memoria su XenServer, forse solo tramite Citrix Essentials.

Per ulteriori informazioni e approfondimenti:

2 thoughts on “Memory sharing: cos’è e a cosa serve?

  1. il costo superiore di un hypervisor rispetto ad un altro puo’ pero’ coprire l’acquisto di ulteriore ram….. 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *