Nell’architettura vSphere, ci sono 3 livelli di memoria.

  1. Il VMkernel crea uno spazio di indirizzamento contiguo all’interno della memoria fisica dell’host ESXi, ripartito fra le varie VM in esecuzione.
  2. La memoria RAM assegnata alle VM è resa disponibile dal VMkernel, a partire dallo spazio di indirizzamento descritto al punto 1. Il VMkernel consente di effettuare un’associazione 1:1 tra porzioni di memoria fisica e memoria utilizzata dalle VM, facendo in modo che le porzioni utilizzate da una VM non possano essere utilizzate da altre VM.
  3. Ogni sistema operativo guest utilizza la memoria assegnata alla VM per metterla a disposizione delle applicazioni, come accade nelle installazioni fisiche.

La memoria fisica utilizzata da una VM rispetta la regola seguente:
VM’s host memory usage = VM’s guest memory size + VM’s overhead memory

In pratica la memoria fisica utilizzata corrisponde alla memoria assegnata alla VM più un certo carico di memoria richiesto dall’host ESXi per le funzioni di virtualizzazione. Questo carico aggiuntivo è detto overhead memory. La memoria di overhead è legata al numero di CPU virtuali della VM e alla quantità di RAM assegnata alla VM.

RAM overcommitment e gestione delle contese di memoria

Si ha una situazione di RAM overcommitment (sovrautilizzo della RAM) quando la memoria RAM totale presente nell’host ESXi è inferiore a quella complessivamente allocata per tutte le macchine virtuali.

Una situazione di RAM overcommitment si verifica sia quando le risorse totali non sono sufficienti, sia quando una macchina virtuale richiede ulteriore RAM rispetto a quella già allocata. Sia chiaro però che per una VM non viene mai allocata più memoria di quella specificata per essa, ovvero se ad una VM abbiamo assegnato 1Gb di memoria RAM, questo sarà il limite massimo di memoria allocabile. Il VMkernel cerca di ottimizzare la distribuzione della memoria fisica, prendendo in prestito parte della RAM assegnata alle VM quando queste non sono sotto carico, e riassegnandola ad altre VM quando queste richiedono più risorse. Con questa tecnica è possibile, ad esempio, utilizzare un host con 2Gb di memoria fisica ed eseguire su di esso quattro VM con 1Gb di RAM ognuna.

Quando la memoria fisica è “overcommited”, per ogni macchina virtuale viene allocato un quantitativo di memoria fisica compreso tra il valore di Reservation e il valore di Limit. La RAM allocata oltre il valore di Reservation è determinata dall’host ESXi in base alla priorità di Shares e in base ad una stima del recente carico di lavoro per quella VM.

Per consentire i meccanismi di RAM overcommitment, il VMkernel utilizza un file di swap (.vswp), creato per ogni VM alla sua accensione ed eliminato allo spegnimento. Il file .vswp ha una dimensione pari alla quantità di memoria assegnata alla VM meno la memoria riservata. Per impostazione predefinita, quando si crea una macchina virtuale, la sua memoria riservata è impostata a zero, ossia il 100% di RAM della VM può essere sfruttata dal VMkernel per ridistribuire le risorse. Secondo queste specifiche, una VM configurata con 2Gb di RAM, in maniera predefinita avrà un file di swap di 2Gb. Se però si imposta per essa 1Gb di memoria riservata, allora il file di swap sarà di 1Gb. Se la memoria riservata fosse di 2Gb, il file di swap sarebbe pari a zero. Quando per una VM si specifica una certa quantità di memoria riservata, tale quantità sarà disponibile esclusivamente per quella VM e non per le altre. Una VM non userà il file di swap finché ci sarà RAM fisica a sua disposizione. Nel momento in cui tutta la RAM fisica dell’host ESXi è utilizzata, ha inizio il meccanismo di RAM overcommitment e le macchine virtuali inizieranno a utilizzare il file di swap. Poiché il file di swap si trova sullo storage, le operazioni su di esso saranno più lente rispetto alle operazioni effettuate in RAM. Se per una VM si specifica un certo valore di memoria riservata, ma l’host ESXi non ha abbastanza memoria fisica a disposizione, la VM non potrà essere accesa.

L’ottimizzazione della memoria può essere implementata con diverse tecniche.

  • Transparent Page Sharing (TTS) – consente di evitare la replica di pagine di memoria identiche, allocandole una sola volta. Alle macchine virtuali che richiedono uno stesso contenuto informativo viene fornita la stessa ed unica pagina di memoria, con il risultato che più VM consumano meno memoria di quella che occorrerebbe nelle installazioni fisiche.
  • Memory ballon driver – è un driver che consente il trasferimento di memoria dalle VM poco impegnate ad altre VM. È installato insieme ai VMware Tools ed è tecnicamente chiamato detto vmmemctl.
  • Memory compression – tecnica impiegata nei periodi di contesa di memoria. Prevede la compressione delle pagine di memoria meno utilizzate, quelle che un sistema operativo guest posiziona nel file di swap su disco. Quelle pagine di memoria saranno compresse in RAM, pertanto la loro compressione e decompressione sarà più veloce rispetto alla lettura/scrittura su disco. La tecnica è trasparente rispetto ai sistemi operativi ospitati nelle macchine virtuali. Il risultato è un’occupazione di RAM fisica inferiore rispetto a quella necessaria in condizioni standard. ESXi tenta sempre di comprimere quelle pagine di memoria che possono essere ridotte a una dimensione di 2Kb. Di default, la cache di compressione ha una dimensione pari al 10% della memoria allocata alle VM, ma questi valori possono essere modificati tramite le impostazioni avanzate di ESXi. I parametri modificabili (nei menu Configuration > Advanced Settings su vSphere Client, Manage > Settings > Advanced System Settings su vSphere Web Client) sono i seguenti:
  • Mem.MemZipEnable = “1” abilita la memory compression; “0” disabilita la memory compression;
  • Mem.MemZipMaxPct = dimensione della cache di compressione, valore impostabile tra 5 e 100.

    vsphere memoria virtuale

L'autore

Alessio Carta

Responsabile sistemi presso un System Integrator con sede in Sardegna, si occupa di informatica e telecomunicazioni da oltre 10 anni. La sua formazione comprende una laurea in ingegneria, una specializazione IFTS in progettazione di reti telematiche, certificazioni Cisco CCNA, Cisco CCNA Security, MCP sui sistemi Windows Server e VCP su VMware vSphere (5.1, 5.5, 6.0). È istruttore presso una VMware IT Academy con sede a Cagliari.

banner5

fb icon evo twitter icon evo

Parola del giorno

L'acronimo SoC  (System on a Chip) nasce per descrivere quei circuiti integrati che, all'interno di un singolo chip fisico, contengono un...

>

YAML è un formato utilizzato per serializzare (ovvero salvare oggetti su supporti di memoria ad accesso seriale) dati, in modo...

>

Il termine Edge Computing descrive, all'interno di infrastrutture cloud-based, l'insieme di dispositivi e di tecnologie che permettono l'elaborazione dei dati ai...

>

L'acronimo FPGA  (Field Programmable Gate Array), descrive quei dispositivi hardware formati da un circuito integrato e con funzionalità programmabili tramite...

>

Il termine Agentless (computing) descrive operazioni dove non è necessaria la presenza e l'esecuzione di un servizio software (demone o...

>
Leggi anche le altre...

Download del giorno

Fiddler

Fiddler è un server proxy che può girare in locale per consentire il debug delle applicazioni e il...

>

Adapter Watch

Adapter Watch è uno strumento che permette di visualizzare un riepilogo completo e dettagliato delle informazioni riguardanti una determinata...

>

DNS DataView

DNS Lookup  è un tool a interfaccia grafica per effettuare il lookup DNS dal proprio PC, sfruttando i...

>

SolarWinds Traceroute NG

SolarWinds Traceroute NG è un tool a linea di comando per effettuare traceroute avanzati in ambiente Windows...

>

Network Inventory Advisor

Network Inventory Advisor  è uno strumento che permette di scansionare la rete e acquisire informazioni riguardanti tutti i...

>
Tutti i Download del giorno...

Archivio numeri

  • GURU advisor: numero 21 - maggio 2019

    GURU advisor: numero 21 - maggio 2019

  • GURU advisor: numero 20 - dicembre 2018

    GURU advisor: numero 20 - dicembre 2018

  • GURU advisor: numero 19 - luglio 2018

    GURU advisor: numero 19 - luglio 2018

  • GURU advisor: numero 18 - aprile 2018

    GURU advisor: numero 18 - aprile 2018

  • GURU advisor: numero 17 - gennaio 2018

    GURU advisor: numero 17 - gennaio 2018

  • GURU advisor: numero 16 - ottobre 2017

    GURU advisor: numero 16 - ottobre 2017

  • GURU advisor: numero 15 - luglio 2017

    GURU advisor: numero 15 - luglio 2017

  • GURU advisor: numero 14 - maggio 2017

    GURU advisor: numero 14 - maggio 2017

  • 1
  • 2
  • 3
  • Teslacrypt: rilasciata la chiave

    Gli sviluppatori del temuto ransomware TeslaCrypt hanno deciso di terminare il progetto di diffusione e sviluppo e consegnare al pubblico la chiave universale per decifrare i file. Read More
  • Proxmox 4.1 sfida vSphere

    Proxmox VE (da qui in avanti semplicemente Proxmox) è basato sul sistema operativo Debian e porta con sé vantaggi e svantaggi di questa nota distribuzione Linux: un sistema operativo stabile, sicuro, diffuso e ben collaudato. Read More
  • Malware: risvolti legali

    tutti i virus e in particolare i più recenti Ransomware, che rubano i vostri dati e vi chiedono un riscatto, violano la legge. Vediamo insieme come comportarsi, per capire anche se e quando bisogna sporgere denuncia. Read More
  • 1