La performance sous VMWare – Partie 2 – Les optimisations proposées par VMWare

Cet article fait partie d'un groupe d'articles:

  1. Généralités
  2. Les optimisations proposées par VMWare
  3. Comment dimensionner une VM
  4. Les métriques spécifiques à la virtualisation à surveiller durant un test de charge

Outre les avantages de mutualisation et de souplesse offertes, l'ESX permet également des optimisations des ressources impossibles à réaliser avec des machines physique.

Optimisation de la mémoire RAM :

Pour économiser l'espace mémoire RAM, il y a 4 méthodes (par ordre décroissant de performance) :

  • Page sharing memory : page de mémoire partagée (très peu de perte de performances)
  • Ballooning : récupération de mémoire ram dans les VMs (très peu de perte de performances)
  • Memory compression : compression de la mémoire (peu de perte de performances)
  • Swap : mémoire RAM mise sur disque (très coûteux en performance)

Par défaut, l'ESX choisit la méthode la plus performante d'abord puis lorsque cela n'est plus possible, il utilise la méthode suivante.

Page sharing memory

Généralement, les VM ont des OS similaires : Windows Server, Red hat, AIX, Ubuntu server. Lorsque plusieurs VM fonctionnent simultanément avec le même OS, on remarque que nous avons un certain nombre d'éléments identiques en mémoire RAM : DLL, composants, instances, etc... On retrouve donc des éléments qui sont stockés en mémoire RAM de l'ESX plusieurs fois.
La fonctionnalité, dite « Share paging memory », consiste à ne stocker qu'une seule fois chaque élément. Cela permet donc d'économiser de la mémoire en RAM en mutualisant les éléments communs aux différentes VM.

VMWare_2_1

On obtient donc des systèmes sur VM qui consomment beaucoup moins de ressources RAM que si ils avaient été installés sur une machine physique.
Cette option est activée par défaut sur l'ESX.

Comment se déroule concrètement le share paging memory ?

  • Instanciation de la mémoire physique
  • Scan de la mémoire physique en tâche de fond pour trouver des pages mémoires qui pourraient être partagées (vitesse par défaut : 4Mo/sec par 1GHz de processeur)
  • Mise à jour des tables de correspondance
  • Libération de la mémoire qui n'est plus utilisée

Il n'y a donc pas de perte de performance autre que celle induite par la virtualisation (temps de la consultation de la table des correspondance pour accéder à la page mémoire demandée)

L'efficacité dépend de deux facteurs :

  • L'uniformité des systèmes d'exploitation et des applications sur les VMs. En effet, plus il y aura des éléments communs, plus les pages mémoire peuvent être mutualisées.
  • La taille des pages mémoires : Habituellement 4 Ko, la taille peut aller jusqu'à 2 Mo. Plus la taille mémoire par page est élevée, moins il sera possible de mutualiser les pages mémoires.

À noter qu'il peut y avoir des incompatibilités avec certaines machines et certains systèmes d'exploitation (cas remontés sur des Windows 2008 R2 64 bits). Dans ce cas, il faut désactiver cette optimisation.

Le ballooning

En général, plus un système d'exploitation a de la mémoire à sa disposition, plus il en utilise et pas forcément de manière la plus efficace.
Pour éviter ce phénomène qui gaspille l'espace mémoire, VMWare introduit la méthode du ballooning. VMWare crée un processus qui va consommer de plus en plus de mémoire. Le système va alors commencer à faire du ménage. La mémoire utilisée par ce processus pourra en réalité être utilisée par d'autres VM qui n'en ont plus besoin. Par cette méthode, l'ESX va pouvoir récupérer l'espace mémoire RAM gaspillée.

Étape n°1 :

VMWare_2_2

Étape n°2 :

VMWare_2_3

Memory compression

Lorsque les méthodes de share paging et de ballooning sont utilisées au maximum possible, l'ESX utilise la méthode de la compression de la mémoire RAM. Cela consiste à compresser à la voler la mémoire RAM et donc augmenter la capacité de mémoire RAM. Cette méthode induit une petite perte de performance dûe à la compression / décompression. Mais cela est plus performant que la méthode du swapping.

Cette option est activée par défaut sur VMWare.

SWAP

Le swap consiste à écrire sur le disque les informations contenues en mémoire RAM afin de libérer de la mémoire. En général, c'est les informations les moins utilisées qui sont écrites en premier.
Cette méthode est utilisée en dernier recours par VMWare. En effet, elle est coûteuse en terme de performance. Quand l'ESX commence à utiliser cette méthode, il faut commencer sérieusement à s'inquiéter et à prendre des mesures : ajouter de la mémoire RAM, ajouter de nouvelle machines physiques, mieux répartir les VMs entre les différents ESX, etc.

L'optimisation de l'espace disque : Disk sharing

Afin d'économiser de l'espace disque, l'ESX peut compter sur la méthode du disk sharing. Le concept est le même que celui du page sharing mais appliqué au stockage des données.
On part du même constat qu'un grand nombre de fichiers seront communs entre différentes VM du fait qu'ils utilisent les mêmes OS, les mêmes serveurs d'applications, les mêmes composants.

VMWare_3_4

Cette option est activé par défaut.

7 réponses à to “La performance sous VMWare – Partie 2 – Les optimisations proposées par VMWare”

  • Nicolas:

    Bonjour, une petite question sur le Ballooning.

    Faire du ballooning peut avec avoir la facheuse conséquence que l’OS de la VM commence à swapper donc par exemple la mémoire d’une Java VM qui commence à swapper c’est des temps de réponse utilisateur qui explose.

    Donc peut on faire du ballooning sans déclancher le swap de l’OS?

    • thibault.vandenbroek:

      Bonjour,

      Le processus qui réalise le ballooning est capable de déterminer la quantité de mémoire active et inactive présente sur la machine. Le processus ne gonfle que quand il y a de la mémoire inactive qui peut être swappée et qu’il a besoin de récupérer de l’espace mémoire pour une autre machine virtuelle. la mémoire inactive étant peu utilisée, le fait de swapper de la mémoire inactive ne va pas ralentir la machine.

      Thibault

  • Sébastien:

    Bonjour,

    Merci pour ces 2 articles riches d’enseignements, en attendant avec impatience la suite! 🙂

    Cordialement,
    Sébastien.

    • thibault.vandenbroek:

      Bonjour Sébastien,

      Merci pour l’intérêt porté sur cette série d’articles. Le 3ème épisode vient de sortir!

      Cordialement,

      Thibault

  • Hoggar:

    Bonjour,

    Merci pour ces infos et ces préco !
    sont-ils toujours à jour avec les nouvelles versions de vmware?

    Cordialement,

    Hoggar

    • thibault.vandenbroek:

      Bonjour,

      Je n’ai pas travaillé sur la dernière version de VMWare mais j’imagine que ces préconisations restent valables pour la plupart. Mais il est possible que des optimisations nouvellement proposées par VMWare ne soient pas listées ici.

      Cordialement,

      Thibault

  • MALYADI:

    Bonjour,
    je viens de decouvrir ce site par hasard, merci pour ces infos enrichissantes et precieuses.
    J’ai une question sur VMWARE svp
    pourquoi les metriques des performances (cpu, ram, ..etc) remontés par vmware sont differentes de celle remontées par les OS des VMs ? comment corriger ce dysfonctionnements svp

Laisser un commentaire

Merci d'effectuer cette opération simple pour valider le commentaire *

Mots-clés
RSS Feed