La fête de NUMA ou pourquoi il faut réfléchir un peu avant de créer une VM 1

La fête de NUMA ou pourquoi il faut réfléchir un peu avant de créer une VM

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.

La fête de NUMA ou pourquoi il faut réfléchir un peu avant de créer une VM 2

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

A propos Olivier Olejniczak

Cofondateur de SynerGeek.fr. Passionné d'informatique, je m'intéresse plus particulièrement aux technologies de virtualisation et de stockage. J'apprécie la liberté et la quasi-absence de frontières à mon imagination qu'offre l'OpenSource et Linux. Professionnellement, je travaille exclusivement avec les outils Microsoft. Les pieds bien sur terre et ancrés dans le quotidien de l'entreprise, j'aime faire partager mes découvertes et contribuer à un meilleur usage des technologies. Vous aussi, rejoignez-nous sur Synergeek et partagez votre expérience!

Je vous propose également...

Héberger 2 serveurs accessibles en TSE derrière un serveur Zeroshell 3

Héberger 2 serveurs accessibles en TSE derrière un serveur Zeroshell

Je continue l’exploitation des usages du petit routeur/pare-feu ZeroShell. Toutefois, cette distribution est utilisée à …

PowerShell : Programmation MultiTâches 9

PowerShell : Programmation MultiTâches

Il peut être intéressant, afin d’optimiser le temps de traitement de tâches n’ayant pas un …

1 commentaire

  1. 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