Récemment, j’ai rencontré un message bizarre sur un serveur Hyper-V (normal, me diront certains). Une VM refusait de se lancer avec le message « ressources insuffisantes » alors que le serveur hôte disposait clairement de beaucoup de ressources CPU/RAM/Disques disponibles. Finalement, au bout de quelques essais la VM démarrait quand même. J’ai résolu le soucis en diminuant légèrement la mémoire allouée à la VM. Que s’est-il passé ?
En cherchant un peu, je suis tombé sur plusieurs articles qui apportent peut-être une ébauche d’explication.
Connaissez-vous NUMA ? NUMA signifie ‘Non-Uniform Memory Access‘. Il s’agit d’une caractéristique du processeur qui est exploitée dans un environnement multi-CPU. Pour schématiser, pour des raisons de performances, la RAM n’est pas gérée de façon globale par tous les CPU. Elle est divisée en portion égales chacune attribuée en priorité à un CPU. Ainsi, une VM dont les vCPU seront alloués sur un CPU verra sa mémoire allouée dans la mémoire physique réservée à ce CPU.
Si votre VM utilise plus de mémoire qu’il n’est attribuée au CPU, elle fonctionnera quand même mais les performances risquent d’être dégradées en raison de la négociation qui va s’amorcer avec le second CPU qui gère la mémoire manquante au premier CPU.
Dans l’expérience que je citais plus tôt, je pense que la VM refusait de se lancer immédiatement car elle utilisait plus de RAM que n’en gérait son processeur.
Comme quoi, même si l’hyperviseur fait bien son travail dans la répartition des ressources, il vaut mieux réfléchir avant de donner toutes les ressources à toutes les VM pour un fonctionnement optimal (hein, martial ! 😉 )
A lire : http://frankdenneman.nl/2010/02/sizing-vms-and-numa-nodes/ & http://blogs.msdn.com/b/virtual_pc_guy/archive/2007/05/16/numa-and-virtual-server.aspx
Bonjour
Dans ce cas le SP1 du W2008 R2 devrait améliorer la situation avec l’allocation de mémoire dynamique, qu’en penses-tu ?
http://technet.microsoft.com/fr-fr/library/ff817651%28en-us,WS.10%29.aspx