VMware Global Community
Tinto1970
Commander
Commander

Chi gestisce meglio lo SWAP: hypervisor o guest?

L'hypervisor crea nel datastore un file .vmdk che ha "swap" nel nome: lo usa per swappare temporaneamente su disco il contenuto della RAM fisica quando scarseggia, ad esempio se la somma della RAM di tutti i guest è più di quella fisica dell'host.

Il s.o. guest usa una file di swap per svuotare la ram fisica (o che crede essere fisica) su disco.

Domanda: è più efficiente se il sistema operativo guest fa swap o se lo fa l'hypervisor? Dipende anche, immagino, dal s.o. perché win lo swap in un certo modo lo usa comunque, linux lo inizia a usare solo se la ram fisica (o che crede essere fisica...) è esaurita...

--
Alessandro aka Tinto VCP-DCV 2023 | VVSPHT 2023 | VMCE 2024 | vExpert 2024 | Veeam Legend
please give me a "Kudo" if you find my answer useful
www.linkedin.com/in/tinivelli
my blog: https://blog.tinivelli.com
Tags (1)
Reply
0 Kudos
8 Replies
ldelloca
Virtuoso
Virtuoso

La risposta carogna sarebbe "meglio non swappare"..... 🙂

Anyway, la cosa è difficilmente gestibile, nel senso che le due cose funzionano indipendentemente una dall'altra.

A naso, mi viene da pensare che essendo un livello di astrazione software, lo swapping che si genera nella ram del guest è peggio, quindi meglio usare lo swap di ESXi (oltretutto a breve potrebbe esserci una novità per meglio gestire questa cosa.....).

Inoltre, in ESXi abbiamo anche page sharing e memory compression che aiutano al meglio a evitare swapping. Ci sarebbe anche il balloning, ma quella è un'ancora di salvezza per ESXi, non per la virtual machine.

Ci sarebbe anche poi da fare un conto della serva anche qua: quanto mi costano oggigiorno un paio di banchi di ram, piuttosto che ore e ore di fine tuning?

Ciao,

Luca.

--
Luca Dell'Oca
[Assegnare punti a una risposta utile è un modo di dire grazie]
Luca Dell'Oca | vExpert 2011-2012-2013-2014-2015-2016-2017, VCAP-DCD, CISSP #58353 | http://www.virtualtothecore.com | @dellock6 | http://www.linkedin.com/in/lucadelloca | If you find this post useful, please consider awarding points for "Correct" or "Helpful"
Tinto1970
Commander
Commander

Anyway, la cosa è difficilmente gestibile, nel senso che le due cose funzionano indipendentemente una dall'altra.

in modo un po' 'prepotente' (e, lo so, con qualche rischio...) si potrebbe togliere al guest la possibilita' di fare uno swap file, assegnare tanta RAM in modo che non ci sia swap se non in casi estremi.

Sì è discorso un po' accademico Smiley Wink

--
Alessandro aka Tinto VCP-DCV 2023 | VVSPHT 2023 | VMCE 2024 | vExpert 2024 | Veeam Legend
please give me a "Kudo" if you find my answer useful
www.linkedin.com/in/tinivelli
my blog: https://blog.tinivelli.com
Reply
0 Kudos
GiuseppeG
Expert
Expert

Accademico per accademico... una breve spiegazione di quando vsphere usa lo swap.

L'hypervisor usa lo swap della memoria solo come ultima risorsa in caso la memoria libera dell'host scenda sotto il 2% (e dopo aver applicato tutte gli altri metodi per reclamare la memoria, ossia il transparent page sharing e il ballooning).

L’uso dello swap da parte dell’hypervisor è “l’ultima spiaggia” in caso di necessità di recupero di memoria perche' e' il meccanismo che penalizza di più le performance delle VM sia perché’ il disco è più lento della memoria, sia perché può interagire in modo negativo con i meccanismi di gestione della memoria dei sistemi operativi guest delle VM:l’hypervisor non ha conoscenza di quali pagine siano da swappare e quali no (a livello di sistema operativo guest) e può quindi inficiare le politiche di gestione della memoria del sistema operativo guest. Inoltre quando una pagina viene riportata in memoria dallo swap dell’hypervisor, la VM resta bloccata fino al completo caricamento dal disco.

Anche il sistema operativo guest usa lo swap file quando è in ristrettezze di ram ma conoscendo quale uso e' effettivamente fatto delle sue pagine di memoria, puo' scegliere in modo migliore quali pagine swappare e quali no, per cui questo swap risulta piu' efficiente in termine di penalizzazione dei processi attivi.

E' questo il motivo per cui l'hypervisor usa il meccanismo di ballooning, che di fatto forza una paginazione a livello di sistema operativo guest, prima del meccanismo di swap: un modo tipico per un OS per decidere cosa swappare ad esempio è quello di swappare prima le pagine di memoria non usate da piu' tempo quindi che hanno meno probabilita' di essere usate, mentre lo swap dell'hypervisor deve per forza procedere "come uno schiacciasassi".

Quindi, a parte la risposta "meglio non swappare" io considero piu' efficiente lo swap a livello di guest che a livello di hypervisor.

Se vuoi approfondire come funziona la gestione della memoria in vsphere ti rimando a tre miei post in cui lo illustro per esteso (si, autopromozione Smiley Wink )

Giuseppe

@gguglie

http://virtualbyte.wordpress.com

Giuseppe | vExpert 2011, 2012 | @gguglie | http://virtualbyte.wordpress.com | | If you find this post useful, please consider awarding points for "Correct" or "Helpful"
ldelloca
Virtuoso
Virtuoso

Ecco, stavo per scrivere "accademico mica tanto" ed è arrivato Giuseppe. Direi che la spiegazione perfetta l'ha già data lui 🙂

Per ulteriormente "temperare le matite", tieni presente che ci sono scelte anche molto più estreme come quella di google, che ho adottato anche io in un paio di occasioni, con linux: nessuno swap. Se la macchina va in esaurimento, interverrà un'altra del cluster, ma per loro è peggio una macchina lenta che una macchina ferma. Certo, ovviamente lo dicono dall'alto del 1.5m presunti di server...

Nel "nostro" piccolo, in molti casi i parametri di kernel ottimizzabili via sysctl (ovvio, sto parlando di un sistema operativo serio, non quello di Redmond :-P) permettono di vedere cambi di performance notevoli. Già solo il parametro Swappiness ti può cambiare la vita...

Io continuo a restare del parere che se possiamo non swappare è meglio, visti i costi della ram 🙂

Cmq, 10 punti secchi a Giuseppe!

Ciao,

Luca.

--
Luca Dell'Oca
[Assegnare punti a una risposta utile è un modo di dire grazie]
Luca Dell'Oca | vExpert 2011-2012-2013-2014-2015-2016-2017, VCAP-DCD, CISSP #58353 | http://www.virtualtothecore.com | @dellock6 | http://www.linkedin.com/in/lucadelloca | If you find this post useful, please consider awarding points for "Correct" or "Helpful"
Reply
0 Kudos
drakpzone
Enthusiast
Enthusiast

Sottoscrivo in toto la risposta di Giuseppe. Lo swapping fatto dall'hypervisor e' per forza di cose meno efficente di quello del guest perche' nonha la visibilita' dei processi guest, e quindi agisce necessariamente come uno schiacciasassi. E' quindi da evitare come la peste, perche' in quanto 'ultima spiaggia', ha effetti di degrado delle performance su tutti i workload consolidati su quello specifico host.   PJ (@drakpz) vBastard

Reply
0 Kudos
AndreTheGiant
Immortal
Immortal

in modo un po' 'prepotente' (e, lo so, con qualche rischio...) si potrebbe togliere al guest la possibilita' di fare uno swap file, assegnare tanta RAM in modo che non ci sia swap se non in casi estremi.

Questo sarebbe un errore... almeno in ambiente VMware.

Ricordo che il baloon driver può richiedere al SO guest di liberare memoria vRAM.

E di solito questo comporta la paginazione a livello guest su disco (può anche non avvenire, la macchina guest ha pagine di memoria che possono essere semplicemente scartate, o area di cache che può essere convertita in pagine di memoria)... Chiaro se non c'è un pagefile (o uno swap in Linux) il baloon potrebbe non essere efficace.

Andrea

Andrew | http://about.me/amauro | http://vinfrastructure.it/ | @Andrea_Mauro
Reply
0 Kudos
ldelloca
Virtuoso
Virtuoso

Questo thread sarà utilissimo da citare in futuro a chi continua a chiedere perchè mai dovrebbe installare i vmware tools, dicendo "tanto va tutto comunque" 🙂

Ciao,

Luca.

--
Luca Dell'Oca
[Assegnare punti a una risposta utile è un modo di dire grazie]
Luca Dell'Oca | vExpert 2011-2012-2013-2014-2015-2016-2017, VCAP-DCD, CISSP #58353 | http://www.virtualtothecore.com | @dellock6 | http://www.linkedin.com/in/lucadelloca | If you find this post useful, please consider awarding points for "Correct" or "Helpful"
Reply
0 Kudos
Tinto1970
Commander
Commander

grazie a tutti!

--
Alessandro aka Tinto VCP-DCV 2023 | VVSPHT 2023 | VMCE 2024 | vExpert 2024 | Veeam Legend
please give me a "Kudo" if you find my answer useful
www.linkedin.com/in/tinivelli
my blog: https://blog.tinivelli.com
Reply
0 Kudos