Memory Ballooning in Linux / Unix su VMware ESXi

Oct 02 2020

Ho bisogno di aiuto per recuperare la memoria gonfiata in una macchina Linux / Unix. Per favore aiutatemi. Ho trovato alcune soluzioni ma non sono fattibili per me sul server di produzione.

Ho solo bisogno di sapere come posso recuperare la memoria gonfiata senza riavviare o spostare la macchina su un altro host.

Risposte

3 Stuggi Oct 11 2020 at 23:43

Il volo in mongolfiera avviene solo in alcune condizioni molto specifiche. Affinché VMware ESXi "gonfi" il driver del palloncino in una VM, l'host deve trovarsi in un conflitto di memoria molto intenso, generalmente inferiore al 4% della memoria libera sull'host.

L'idea con il balloon driver è che VMTools inizi a consumare memoria all'interno della VM, a cui il sistema operativo della VM risponde dando al balloon driver le pagine di memoria. Il balloon driver in realtà non ha bisogno di queste pagine per nulla, ma dice all'hypervisor quali pagine di memoria la VM non utilizza effettivamente per nulla, in modo che possano essere tranquillamente eliminate dall'hypervisor. Se questo non risolve il problema di conflitto di memoria sull'host, l'hypervisor continua a gonfiare il driver del fumetto, fino al 65% percento della memoria virtuale assegnata per impostazione predefinita, il che fa sì che il sistema operativo sulla VM inizi a scambiare su disco. Questo non è un ottimo risultato, ma è molto meglio dello scambio dell'hypervisor su disco poiché il sistema operativo sulla VM sa effettivamente quali pagine ha senso scambiare su disco.

Il modo per limitare il ballooning è disattivarlo per VM (non è un'ottima strategia) o riservare memoria per una VM. Se una VM ha diciamo 4 GB di RAM e una prenotazione di memoria di 3 GB, il balloon driver può gonfiarsi solo a 1 GB.

Poiché il ballooning è un po 'l'ultima strategia per ESXi, significa quasi sempre che hai troppa poca memoria installata sul tuo host.

2 MichaelHampton Oct 02 2020 at 01:18

È possibile impostare il sched.mem.maxmemctlparametro per la VM per specificare la quantità massima di memoria (in megabyte) che può essere recuperata dal guest tramite il memory ballooning. Questo può anche essere impostato su 0 per disabilitare completamente il ballooning per l'ospite.

Nota che se si sta verificando un ballooning, il tuo host molto probabilmente necessita di più memoria fisica per essere installato. Il ballooning consente a ESXi di prendere la memoria "inutilizzata" dai guest e di usarla per altri guest, ma i sistemi operativi moderni non hanno più la memoria "inutilizzata", poiché qualsiasi cosa hanno viene utilizzata, ad esempio, per la memorizzazione nella cache. Quindi le prestazioni degli ospiti possono essere ridotte quando questa memoria viene portata via.