lundi 11 mars 2013

Hyper-V 3 - Qu'est-ce que le "Smart Paging" ?

Hyper-V dans sa nouvelle version propose désormais une nouvelle fonctionnalité : Le Smart Paging.

Préambule : comprendre la mémoire dynamique dans Hyper-V

Pour bien comprendre à quoi le Smart Paging peut bien servir, il faut tout d'abord comprendre le fonctionnement de l'allocation de mémoire dans Hyper-V et plus particulièrement de la mémoire dynamique (ajouté par Microsoft depuis le release du SP1 de Windows Server 2008 R2 et Microsoft Hyper-V Server 2008 R2 SP1).

Pour voir tout ceci, direction les "Settings..." d'une machine virtuelle (VM).



Ok, cliquez sur "Memory". Voici donc l'écran en question.


Vous pouvez déjà vous rendre compte que, parmi les options de la mémoire dynamique, apparaît une nouvelle possibilité : Minimum RAM.

Mais rappelons d'abord brièvement l'utilité de chacune des options disponibles pour la mémoire dynamique.

1) Startup RAM : il s'agit de la quantité de mémoire RAM allouée par Hyper-V à la VM au démarrage. Cette quantité de RAM doit correspondre à la quantité de mémoire dont a besoin la VM pour démarrer.

2) Minimum RAM : il s'agit de la quantité minimum de mémoire RAM au-dessous de laquelle plus aucune mémoire ne pourra être libérée par Hyper-V sur la VM  C'est donc la mémoire minimale dont a besoin votre VM pour tourner. La suppression de RAM se fait par la technologie de "Ballooning" présente au sein de chaque VM.

3) Maximum RAM : c'est la mémoire maximale attribuable par Hyper-V à la VM. L'ajout de mémoire se fait par la technologie "HotAdd".

4) Memory Buffer : Il est basé sur le "Current Commit", autrement dit sur la mémoire allouée à l'instant t à la VM par Hyper-V. La valeur par défaut du Memory Buffer est paramétré à 20%.

Le Memory Buffer se calcule comme suit :


Memory Buffer(MB) = (1 / (1 - Memory buffer(%)) - 1) x Current Commit(MB)


L'objectif de ce Buffer est de permettre l'allocation très rapide de mémoire RAM supplémentaire lorsque la charge s’accroît sur la VM.  Le Memory Buffer est donc une zone sur chaque VM où est pré-allouée de la RAM. Lors d'une montée en charge, le Global Memory Object (GMO) tentera donc en premier lieu (dans un processus pouvant aller jusqu'à 4 étapes si nécessaire) de fournir la RAM nécessaire via ce Memory Buffer.

Ce Memory Buffer est borné à droite par la valeur Maximum RAM.

À retenir :
a) Vous définirez une valeur basse à cette zone tampon lorsque le logiciel fonctionnant à l'intérieur de la VM essaie d'utiliser autant de RAM que disponible. C'est typiquement le cas d'un serveur SQL.
b) Une valeur haute sera utilisée dans le cas où vous avez un process qui peut avoir besoin d'un système de cache fichier important ou bien dans le cas où une application demande fréquemment une importante quantité de RAM supplémentaire et ensuite la relâche.
c) La mémoire cible de chaque VM est donc l'addition du Current Commit Charge (borné par les valeurs Minimum RAM et Maximum RAM) et du Memory Buffer.

5) Memory Weight

Lors de la version beta du SP1 de 2008 R2, ce paramètre s'appelait "Memory Priority". Il a pour objectif de déterminer la façon dont les VMs sont impactées lorsqu'il y a lieu de redistribuer la mémoire. Le paramètre ne garantit en rien la disponibilité de la mémoire. C'est une des raisons qui, à l'époque, a poussé Microsoft à modifier le nom de ce paramètre.

À quoi sert le Smart Paging ?

Nous y voilà. Nous avons passé en revue les différentes options que nous confère Hyper-V, et abordé très brièvement le fonctionnement de l'allocation dynamique de RAM par l'hyperviseur Microsoft.

Dans sa précédente version, vous pouviez rencontrer un problème de taille lors du redémarrage d'une VM ou de l'hyperviseur. En effet, la mémoire étant allouée dynamiquement, elle est soit ajoutée, soit supprimée. On peut donc arriver à une situation où une VM (ou plusieurs) se retrouvent à un seuil d'allocation de mémoire inférieure au paramètre "Startup RAM" tout en respectant le paramètre "Minimum RAM". Dans ce cas, la VM ne pouvait pas redémarrer, où seulement certains services. Peu pratique n'est-ce-pas ?

C'est la qu'intervient la nouvelle fonctionnalité délivrée par Microsoft. En effet, désormais si lors du démarrage d'une VM, Hyper-V n'est pas capable d'allouer suffisamment de RAM (correspondant au paramètre Startup RAM) et qu'il n'est pas non plus possible de récupérer la RAM nécessaire depuis les autres VMs, un fichier "Smart Paging" sera créé à l'endroit spécifié (comme ci-dessous) et utilisé par la VM en lieu et place de mémoire RAM.



Le fichier n'est créé que lorsque c'est nécessaire. La mémoire rendue disponible par ce mécanisme est présente jusqu'à la fin du processus de démarrage de la VM. Hyper-V se charge de désallouer cette RAM par la technologie de "Ballooning" et ce jusqu'à ce que la VM arrête d'utiliser le "Smart Paging". C'est donc bien un mécanisme temporaire (ne devant pas durer plus de 10 minutes) utilisé seulement dans le cas du démarrage et dans aucun autre cas. Dès que la VM arrête d'utiliser ce fichier, il est supprimé.

Aucun commentaire:

Enregistrer un commentaire