La performance sous VMWare – Partie 3 – Comment dimensionner une VM

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

Après avoir étudié le comportement de VMWare, nous allons maintenant nous concentrer sur comment dimensionner une VM.

Stratégie de performance

Le dimensionnement d'une VM se défini par 4 notions :

  • Processeur
  • RAM
  • Disque-dur
  • Réseau

Avant de définir les performances de chacun des 4 paramètres, il faut réfléchir à une stratégie de performance des VMs.

Il faut donc se poser les questions suivantes :

  • Quelles sont les applications critiques pour mon entreprise ?
  • Quels sont les coûts du non-fonctionnement d'une application ?
  • Etc.

La quantité de ressources réservées dépend de la criticité de l'application et doit être définie de manière à ce qu'il n'y ait pas trop de ressources réservées pour éviter du gâchis de ressources et qu'il y en ait assez pour que l'application continue à tourner quelque soit la charge des autres VMs.

Pour cela, on peut utiliser plusieurs méthodes :

  • Laisser un certain temps la VM en rodage en surveillant les consommations du processeur
  • Réaliser un test de charge nominal ou pic sur l'application pour relever les ressources nécessaires au fonctionnement de la VM.

Lorsqu'une application est déployée, il existe généralement des préconisations de ressources machines. Il est donc recommander de les suivre dans une premier temps.
Souvent, les éditeurs demandent des pré-requis « large » afin d'être certains de ne pas rencontrer de problèmes de performance. Après une période d'observation des ressources consommées par l'application en production, il est possible d'adapter ses ressources machines disponibles aux besoins réels. Cela permet de réduire le gaspillage de ressources ou bien au contraire de donner plus de ressources par rapport à ce qui étaient prévues initialement.

De manière générale, il est possible de réserver des ressources minimum à une VM afin de garantir que l'application ait les ressources requises. On peut également fixer des ressources maximum afin de permettre à la VM d'utiliser plus de performance sans pour autant mettre en péril les autres VMs. Cela permet également de limiter l'utilisation de ressources lors d'un problème de performance survient sur une VM.

Processeur

Pour dimensionner le processeur d'une VM, nous pouvons jouer sur 5 paramètres :

  • GHz réservé
  • GHz Max
  • vCPU réservé
  • vCPU Max
  • Pondération

Les ressources réservées sont réservées, c'est-à-dire qu'elles ne pourront pas être utilisées par d'autres VMs. En conséquence, on ne peut pas réserver plus de ressources qu'il n'y en a réellement.
Les ressources maximum sont les ressources que la VM pourra utiliser au maximum. Il n'y pas de contraintes sur cette valeur mais cela ne veut pas dire pour autant qu'il faut mettre une valeur excessive. En effet, la valeur maximale est un moyen d'éviter qu'une VM sature l'ensemble de la machine physique et ralentisse les autres VMs.

Pour réaliser les réglages, il y a quelques règles simples à suivre :

  • vCPU : penser à vérifier que l'application est multithead. Si l'application est multithread, alors vous pouvez utiliser plusieurs vCPU. Dans le cas contraire, une seule vCPU est utile car l'application ne pourrait pas utiliser plusieurs core en même temps (une deuxième vCPU peut cependant être utile pour les tâches de l'OS). Le nombre de vCPU ne doit pas dépasser le nombre de cœurs disponibles sauf dans le cas de VMs en multithreadé où chaque core multithreadé permet de recevoir 2 vCPU.
  • GHz : Valider que le réglage ne puisse pas aboutir à un cas impossible :
    Imaginons que votre serveur physique ait les caractéristiques suivantes : 8 processeurs à 2 GHz hyperthreading (donc 2 x 8 vCPU possibles) :

    • Réglage à 1 vCPU et 2 GHz au total : OK
    • Réglage à 2 vCPU et 2 GHz au total : OK
    • Réglage à 2 vCPU et 4 GHz au total : OK
    • Réglage à 2 vCPU et 6 GHz au total : Cas impossible : avec 2 vCPU, on ne peut avoir que 2 x 2 GHz soit 4 GHz
    • Réglage à 10 vCPU et 5 GHz au total : Cas possible que dans le cas où les 10 vCPU sont hyperthreadés.
    • Réglage à 18 vCPU et 6 GHz au total : Cas impossible : la machine ne dispose que de 8 processeurs multithreadés, soit 16 vCPU maximum.
  • Réglage hyperthreading : L'activation de l'hyperthreading peut apporter un gain de performance si l'application est conçu pour du multithreading.

    Attention, le processeur de la machine physique ne peut pas être à la fois en multithreadé et non multithreadé.

    Le paramètre de l'affinité de la VM au processeur permet de regrouper toutes les VMs qui utilisent l'hyperthreading sur les mêmes processeurs. Il faut donc bien réfléchir avant de créer la VM.

  • Pondération : permet de gérer les priorités en cas de conflits de ressources (Cf. Partie 1). Plus la valeur est importante, plus la VM est prioritaire. Ce paramètre dépend donc de la criticité de l'application et de votre stratégie de performance.

RAM

Pour dimensionner la RAM d'une VM, nous pouvons jouer sur 3 paramètres :

  • MBytes réservé
  • MBytes Max
  • Pondération

La manière de réserver les ressources sont similaires à la CPU mais en plus simple car il n'y a pas les vCPU à régler.
Les ressources réservées sont réservées, c'est-à-dire qu'elles ne pourront pas être utilisées par d'autres VMs. En conséquence, on ne peut pas réserver plus de ressources qu'il n'y en a réellement.
Les ressources maximum sont les ressources que la VM pourra utiliser au maximum.

Il est important de ne pas mettre le maximum.

En effet, les OS ont tendance à utiliser le maximum de la mémoire disponible. On dépasserait facilement la taille de la mémoire réelle, entraînant un phénomène de « SWAP » sans même que l'OS s'en rende compte. Mieux vaut mettre une valeur de maximum plus faible afin d'obliger l'OS à faire le ménage dans sa mémoire RAM (en particulier sur le cache et le tampon).

Disque

Le dimensionnement des disques se joue sur 3 paramètres :

  • MBytes réservé
  • MBytes Max
  • IOPS Max

Comme pour la RAM, les ressources réservées sont réservées, c'est-à-dire qu'elles ne pourront pas être utilisées par d'autres VMs. En conséquence, on ne peut pas réserver plus de ressources qu'il n'y en a réellement.
Les ressources maximum sont les ressources que la VM pourra utiliser au maximum.
Contrairement à la RAM, l'OS n'utilise pas plus d'espace disque s'il y a un peu ou beaucoup de mémoire. La limite maximum est donc là en garde-fou et il peut être fixée plus librement.

Afin d'éviter qu'une VM consomme trop de ressources du disque-dur en terme de débit, il est préconisé de paramétrer les ressources IOPS Max (IOPS : Cf. partie 1). Cela permet d'éviter qu'une VM sature les accès disque-dur.

Réseau

Le dimensionnement du réseau se joue sur 2 paramètres :

  • Partage de ressources (Pondération) : bas / normal / haut / personnalisé. Ce paramètre permet de définir la priorité entre différentes machines qui souhaitent utiliser les ressources machines.
  • Débit en Mbits : débit de la carte réseau virtuel de la VM. La VM ne peut dont pas dépasser ce débit. Par exemple, si le débit paramétré est 10 Mbits, l'OS verra une carte réseau de 10 Mbits.

Nous verrons dans une quatrième partie les métriques performance spécifiques à surveiller durant un test de performance ou en production.

4 réponses à to “La performance sous VMWare – Partie 3 – Comment dimensionner une VM”

  • Greg:

    Bonjour thibault,
    Merci pour ces articles passionnants.
    J’ai vraiment hâte de lire le dernier épisode

  • Hoggar:

    Merci pour cet articke intéressant, quel est la regle qui permet de redimmensioner une vm (comment calculer le ratio de la charge sur une
    periode ?
    Merci

    • thibault.vandenbroek:

      Normalement, l’éditeur de la solution donne des préconisations. Il faut donc les appliquer. On peut ensuite optimiser après une période d’observation de plusieurs jours d’utilisation. Cela veut donc dire qu’il faut du monitoring sur les serveurs (CPU, RAM, disque; réseau). Ensuite, il faut observer sur la période d’utilisation de l’application et non lorsque qu’il ne se passe rien! Il faut également faire en sorte d’avoir une bonne granularité du monitoring afin de pouvoir remarquer les pics d’utilisation. Avec tout ça, on peut ensuite décider la manière de redimensionner la VM.

  • patrick:

    Je souhaite créer un espace de teste VMWARE avec plusieurs ESXI pour 20 personne afin de leurs pemetre de faire des testes . l’idée et de faire de la virtualisation sur un serveur esxi (nested virtualisation)
    Chaque utilisateur auras droit a :
    Deux serveurs ESXI ,
    Un vcenter installé sur l’un des deux esxi pour faire le clustering .
    Un espace de stockage .
    Deux machine win7 seront installé sur chaque serveur esxi .

    Afin de calculer les besoins en matériel hard nécessaire pour contenir l’ensemble des machines j’ai commencé par poser les besoins minimums pour chaque serveur comme suit :
    2 VCPU
    4GO de ram (8go recommandé)
    2 cartes réseau virtuel

    Donc au total il me faut un serveur capable de faire tourner 40 serveur
    Maintenant pour les besoins hard pour l’esxi mère faut-il faire la somme ? ou il ya une formule pour faire les calculs ??
    Si non pour la consommation d’un esxi dans ce cas en MHZ comment le calculer ??
    Merci

Laisser un commentaire

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

Mots-clés
RSS Feed