DIMENSIONNEMENT VCPU ET VNUMA

DIMENSIONNEMENT VCPU ET VNUMA

31 août 2020 0 Par Michael PERES

La virtualisation a apporté la flexibilité nécessaire pour créer rapidement des machines virtuelles avec diverses configurations de processeur virtuel (vCPU) pour un ensemble de workloads différents.

Cependant, à mesure que nous virtualisons des workloads toujours plus volumineux et plus exigeants telles que les grosses bases de données, en plus des dernières générations de processeurs qui possèdent jusqu'à 64 cœurs, une attention particulière doit être apportée à la configuration  vCPU et vNUMA pour garantir des performances optimales.

Nous n’allons pas étudier la configuration vCPU et vNUMA pour chaque type de workload, mais il est donc nécessaire de consulter les best practices, y compris du côté des éditeurs applicatifs.

Changement de comportement de VNUMA depuis vSphere 6.5

La présentation vNUMA sous vSphere 6.5 / 6.7 n’a plus d’adhérence par rapport aux cœurs de processeur. Désormais, vSphere présentera toujours une topologie vNUMA optimale (sauf si vous utilisez des paramètres avancés).

Vous devrez cependant toujours choisir judicieusement les valeurs du processeur et des cœurs par socket.

J’ai pu récupérer ce tableau dans les documents officiels des best practices VMware, qui décrit comment une machine virtuelle devrait être configurée sur un hôte physique à 10 cœurs à double socket pour garantir une topologie et des performances vNUMA optimales, quelle que soit la version de vSphere.

En général, les best pratiques suivantes doivent être suivies concernant vNUMA et les cœurs par socket :

  • Configurer la valeur CPU de la VM, égale à Cores per Socket, jusqu'à dépassier le nombre de cœurs physiques d'un seul nœud NUMA physique.

Exemple : Pour un hôte avec des processeurs à 8 cœurs, toute machine virtuelle avec 8 processeurs (ou moins) doit avoir la même valeur Cœurs per Socket.

  • Lorsque vous devez configurer plus de processeurs virtuels qu'il n'y a de cœurs physiques dans le nœud NUMA, divisez uniformément le nombre de processeurs virtuels sur le nombre minimum de nœuds NUMA.

Exemple : pour un hôte à 4 sockets, 8 cœurs et que la machine virtuelle a besoin de plus de 8 processeurs virtuels, un choix raisonnable peut inclure une machine virtuelle à 16 processeurs virtuels avec 8 cœurs par socket (pour correspondre à l'architecture de processeur à 8 cœurs)

  • N'attribuez pas de nombre impair de processeurs virtuels lorsque la taille de votre machine virtuelle dépasse un nœud NUMA physique.

Exemple : pour un hôte à 2 sockets et 4 cœurs, ne créez pas de VM avec 5 ou 7 processeurs virtuels.

  • Ne pas dépasser pas le nombre total de cœurs physiques de votre hôte.

Exemple : pour un hôte à 2 sockets et 4 cœurs, ne créez pas de machine virtuelle avec plus de 8 processeurs virtuels.

  • Ne pas activer pas l'ajout à chaud de vCPU. (Cela désactive VNUMA)
  • Les Monster VM de « taille correcte » doivent être des multiples de la taille physique NUMA.

Exemple : sur un système à 8 cœurs / nœuds, 8/16/24/32 vCPU; pour un système à 10 cœurs / nœuds, 10/20/40 vCPU

Concernant les attributs VNUMA avancés, voici quelques conseils, mais notez qu’en général, les valeurs par défaut sont les meilleures :

  • Si la machine virtuelle est plus grande que le nombre total de cœurs physiques (par exemple, une machine virtuelle 64 vCPU sur un hôte 40 cœurs / 80 threads), essayez numa.consolidate = false
  • Si Hyper-Threading est activé (généralement la valeur par défaut), numa.vcpu.preferHT = true peut aider (KB 2003582)
  • Si le nombre de cœurs par socket est trop restrictif, vous pouvez définir manuellement la taille de vNUMA avec numa.vcpu.maxPerMachineNode
  • Pour activer vNUMA sur une machine virtuelle avec 8 processeurs virtuels ou moins, utilisez numa.vcpu.min