ESXi: Occupation RAM avec VM Windows et VM Linux

12

Transcript of ESXi: Occupation RAM avec VM Windows et VM Linux

Page 1: ESXi: Occupation RAM avec VM Windows et VM Linux

ESXi: Occupation RAM avec VM_Windows et

VM_Linux

R. Babel, A. Ouadahi

April 10, 2011

1

Page 2: ESXi: Occupation RAM avec VM Windows et VM Linux

Contents

1 Introduction 3

2 TPS 3

2.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 L'implémentation ESXi . . . . . . . . . . . . . . . . . . . . . . . 3

3 Large Pages 4

3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43.2 Compatibilité avec TPS . . . . . . . . . . . . . . . . . . . . . . . 43.3 Conditions d'utilisation des Large Pages sous ESX . . . . . . . . 4

4 Con�guration 5

5 Mesures expérimentales 5

6 Conclusion 7

7 Synthèse 7

7.1 Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

A Bibliographie 9

B Annexes 10

2

Page 3: ESXi: Occupation RAM avec VM Windows et VM Linux

1 Introduction

Lors des laboratoires, nous avons pu observer un comportement inattendu dumécanisme Transparent Page Sharing (TPS). Alors que sur les VM WindowsXP, les e�ets du TPS sont notables dès leur mise en marche, il demeure presquetotalement ine�cace sur les VM Linux (kernel 2.6.24).

Pour comprendre ce phénomène nous avons commencé par étudier le fonction-nement de TPS ainsi que la gestion de la mémoire d'ESXi, puis nous chercheronsà déterminer les solutions d'utilisation de TPS les plus adaptées.

2 TPS

2.1 Principe

Du fait des pages de mémoire read-only et du code redondant, la mémoirecomporte de nombreuses pages identiques. Partant de ce constat, le TPS permetde fusionner ces pages pour gagner en espace mémoire. Ce phénomène estd'autant plus vrai dans le cas des machines virtuelles, ou plusieurs systèmesd'exploitation identiques peuvent fonctionner en simultané.

2.2 L'implémentation ESXi

Lors des accès mémoire en écriture, ESX va intervenir pour tenter de partagercette page.

Figure 1: Mécanisme du TPS

Un hash de la page est tout d'abord e�ectué, puis utilisé comme clef pourchercher dans une table contenant les pages qui ont déjà été référencées. Si lavaleur du hash correspond à une entrée existante, une comparaison complète de

3

Page 4: ESXi: Occupation RAM avec VM Windows et VM Linux

leur contenus est alors e�ectuée, et si les deux pages sont e�ectivement iden-tiques, un label copy-on-write est appliqué, et la page redondante supprimée.Le copy-on-write (COW) implique que lorsqu'une demande d'accès en écrituresur la page est faite, une copie est crée et attribuée en lieu et place de la page de-mandée. Si aucune correspondance n'est trouvée dans la table, une Hint Frameest créée. Si par la suite une comparaison positive avec la Hint frame est réal-isée, son contenu est alors hashé à nouveau. Dans le cas ou le hash a changé, laHint Frame est simplement supprimée. Dans le cas contraire, une comparaisoncomplète des contenus est e�ectuée, et les pages sont partagées si ils sont iden-tiques. L'overhead total du au TPS est inférieur à 0.5% de la mémoire totaledu système[11].

3 Large Pages

3.1 Principe

Certaines architectures d'instructions CPU peuvent supporter plusieures taillesde pages, notament des tailles très supérieures à celle standard de 4kB. L'utilisationdes Large Pages (ou Huge Pages) permet de réduire la charge du cache TLB(Translation Lookaside Bu�er), ce qui peut augmenter les performances jusqu'à15%[7] pour de grandes allocations, tout en conservant un usage de la mémoireraisonable pour des petites allocations. En e�et, avec l'augmentation de lataille de la mémoire, des pages plus grandes permettent de diminuer le nombred'entrées dans le TLB, et donc de diminuer la quantité de misses.

3.2 Compatibilité avec TPS

Le mécanisme de TPS a été conçu pour fonctionner avec des pages de 4kB; ene�et, les probabilités de présence de pages identiques sont beaucoup plus faiblesavec des Large Pages (entre 2 et 4MB). Pour parer à ce problème, VMware afait le choix d'une stratégie pouvant donner à penser que le TPS est désactivé.En e�et le TPS se contente d'analyser les Large Pages à la recherche de blocsde mémoire identiques à l'intérieur de celle ci, puis, lorsque la mémoire vient àmanquer, le mécanisme de share-before-swap va casser les Large Pages en blocsde 4kB pour que TPS puisse fonctionner normalement. Il est a noté qu'à partirdes versions les plus récentes d'ESX 4.0, les zeroed pages (pages ne contenantque des 0), sont directement cassées en blocs de 4kB et partagées.

3.3 Conditions d'utilisation des Large Pages sous ESX

ESX peut utiliser les Large Pages pour deux raisons : premièrement si l'OS dela VM guest en demande l'utilisation, et deuxièmement si c'est le MMU quile fait. Le MMU (Memory Management Unit) est responsable de l'accès à lamémoire demandée par le processeur. Il se charge notament de la translationentre adresse logique et adresse physique. De nos jours, ESX a le choix entreun MMU logiciel, ou un MMU matériel mis à disposition dans le CPU. C'estle VMM qui décide lequel choisir en fonction de la machine de l'host. Intelo�re une solution de support hardware de la virtualisation du MMU sous lenom de EPT, et AMD fait de même sous le nom de RVI. La solution hardwarepermet d'économiser le temps CPU que le MMU software d'ESX utilisait pour

4

Page 5: ESXi: Occupation RAM avec VM Windows et VM Linux

la translation d'adresses, mais force par défaut l'utilisation des Large Pages pourdes questions de performances. En e�et, en hardware on accède plus souvent auTLB qu'en software, ou une partie des informations nécéssaires à la translationd'adresse sont stockées en dehors du CPU (Shadow Page Table). Les LargesPages permettent alors de diminuer le stress sur le TLB.

Des tableaux indiquant le choix par défaut du VMM selon le CPU et l'OSsont disponibles en annexe (�gures 5, 6 et 7).

4 Con�guration

Le choix par défaut du mode de MMU utilisé peut être modi�é de deux façons:

Via vSphere, en e�ectuant pour la VM voulue Edit Setting, puis l'ongletOptions et règler l'entrée CPU/MMU Virtualization (�gure 2).

Via le �chier de con�guration de la VM (*.vmx), à l'aide des lignes suivantes:

monitor.virtual_exec = software | hardware | automaticmonitor.virtual_mmu = software | hardware | automaticLes logs permettent de connaître la con�guration actuelle.

Figure 2: Con�guration du mode de MMU sous vSphere

On peut également forcer l'utilisation ou non des Large Pages, soit au niveauglobal via le paramètre du Mem.AllocGuestLargePage situé dans l'onglet Con-�guration/Logiciel/Paramètres avancés/Mem, soit au niveau d'une VM via le�chier de con�guration avec la ligne :

monitor_control.disable_mmu_largepages = TRUE

5 Mesures expérimentales

Nous avons procédé à des tests sur une machine avec un CPU Intel sans EPT.Nous n'avons lancé que des VM Linux (car il n'y a pas de Large Pages sous

5

Page 6: ESXi: Occupation RAM avec VM Windows et VM Linux

Windows XP, et seul un MMU hardware permet de forcer leur utilisation),et fait varier le paramètre Mem.AllocGuestLargePage qui permet ou interditl'utilisation des Large Pages sur toutes les VM lancées.

Les résulats sont conformes à nos prédictions : sans Large Page (�gure 3), ona de la mémoire partagée dès le départ, alors qu'avec Large Page (�gure 4) onen a que lorsque la mémoire est overcommited (lors de nos mesure, la mémoirepartagée est montée jusqu'à 1Go avec 8 VM Ubuntu con�gurées à 512Mo deRAM chacune). En outre, il est a noté qu'avec les Large Pages, la quantitéede mémoire partagée augmente beaucoup plus lentement, et ne prévient pastotalement le swap.

Figure 3: TPS sans Large Pages

6

Page 7: ESXi: Occupation RAM avec VM Windows et VM Linux

Figure 4: TPS avec Large Pages

6 Conclusion

7 Synthèse

Les avancées dans la virtualisation matérielle on poussé VMware à modi�er lecomportement de certaines fonctions d'ESX. La documentation sur les change-ments e�ectués n'est pas forcémment très accessible, et on pourrait croire à laprésence de bugs dans certaines fonctionnalités d'ESX alors que leur comporte-ment est simplement di�érent.

C'est l'un des défaut des solutions non Open-Source, où certains détails tech-niques restent opaques à l'utilisateur, comme certains détails de l'implémentationdu TPS. Par exemple, durant nos recherches pour comprendre le fonctionnementde ce mécanisme, nous n'avons pas su répondre à la question suivante : Lorsde l'exécution du mécanisme copy-on-write, un compteur est décrémenté pourchaque copie créée. Lorsque le compteur arrive à 1, est ce que la frame esttransformée en Hint, Supprimée, ou laissée telle quelle ?

7.1 Best Practices

De nombreux systèmes d'exploitation (Windows Server 2003 SP1, 2008, 2008R2, Windows XP 64 bits, Windows Vista, Windows Seven, Linux à partir du

7

Page 8: ESXi: Occupation RAM avec VM Windows et VM Linux

noyau 2.6) sont capables de tirer partie des "super pages". Ceci peut nouspermettre de choisir la bonne stratégie selon nos objectifs. On peut soit priv-ilégier l'économie de RAM en désactivant les larges pages ce qui permettraà TPS de fonctionner normalement, soit vouloir privilègier les performanceset laisser le support des Large Pages actifs (15% de performances en plus),sachant que de toute façon, TPS se mettra automatiquement en marche encas d'overcommitment (mais son fonctionnement est dans ce cas moins ef-�cace, et il est probable d'avoir tout de même du swap). Ces choix peu-vent être fait soit au niveau global, soit au niveau de chaque VM (paramètresMem.AllocGuestLargePage et monitor_control.disable_mmu_largepages).

En résumé, il y a deux cas de �gure, soit on veut béné�cier des perfor-mances des Large Pages, auquel cas il n'y a rien à paramètrer (en sachant queseule la présence d'un MMU hardware permet de forcer l'utilisation des LargePages pour un OS qui n'en dispose pas), soit on veut pro�ter au maximum dumécanisme de TPS, et dans ce cas il su�t de désactiver le support des LargePages.

8

Page 9: ESXi: Occupation RAM avec VM Windows et VM Linux

A Bibliographie

References

[1] Jean-Baptiste Emeriau. La gestionde la memoire dans ESX 4. 2010. url:http://wattmil.dyndns.org/technique?start=1.

[2] Duncan Epping. Virtualized MMU and Transparent page sharing. 2009.url: http://www.yellow-bricks.com/2009/03/06/virtualized-mmu-and-tp/.

[3] Andre Leibovici. TPS, Large Memory Pages and your VDI environment.2011. url: http://myvirtualcloud.net/?p=1797.

[4] NiTRo. TPS & vMMU (le retour) - MAJ. 2010. url: http://www.

hypervisor.fr/?p=1879.

[5] NiTRo. Virtualized MMU, RVI & TPS. 2009. url: http : / / www .

hypervisor.fr/?p=580.

[6] Liz Stinson. esx.txt. 2004. url: http://stanford.edu/~stinson/cs240/cs240_1/revs/esx.txt.

[7] Various. Page (computer memory). 2011. url: http://en.wikipedia.org/w/index.php?title=Page_(computer_memory)&oldid=420138187.

[8] VMware. Large Page Performance. 2008. url: http://www.vmware.com/files/pdf/large_pg_performance.pdf.

[9] VMware. Performance Evaluation of AMD RVI Hardware Assist. 2009.url: http://www.vmware.com/pdf/RVI_performance.pdf.

[10] VMware. Virtual Machine Monitor Execution Modes in VMwarevSphereTM4.0. 2009. url: http://www.vmware.com/files/pdf/perf-vsphere-monitor_modes.pdf.

[11] Carl A. Waldspurger. Memory Resource Management in VMware ESXServer. 2002. url: http://www.waldspurger.org/carl/papers/esx-mem-osdi02.pdf.

9

Page 10: ESXi: Occupation RAM avec VM Windows et VM Linux

B Annexes

Figure 5: Technologies des processeurs AMD Opteron

10

Page 11: ESXi: Occupation RAM avec VM Windows et VM Linux

Figure 6: Modes par défaut du VMM pour les processeurs AMD

11

Page 12: ESXi: Occupation RAM avec VM Windows et VM Linux

Figure 7: Modes par défaut du VMM pour les processeurs Intel

12