VMware vSphere: Configuration CPUs, vCPUs et cœurs
Dimanche 3 avril 2011Configuration du nombre de cœur (core) par CPU
Lorsque l’on assigne un vCPU à une VM, l’on donne accès à un cœur (core) sur un processeur à la fois. Dans la majorité des cas, cela est bien suffisant. Ceci dit, dans certaines situations, plus de puissance est nécessaire. Il est alors possible de donner accès à notre VM à plus d’un cœur en ajoutant multiples vCPUs. Deux problèmes peuvent alors survenir.
Premier problème
Du temps processeur peut être perdu dans le cas où les applications s’exécutant sur le système d’exploitation ne supporte pas le multitâches (multi-threading). La VM ayant multiples processeurs tente d’exécuter chaque tâche processeur en parallèle en réservant chacun des processeurs. Dans le cas où une application ne peut envoyer ses tâches en parallèles, du temps processeur est perdu.
Deuxième problème
Un problème de licence peut survenir. Une application peut carrément ne pas fonctionner dans le cas où l’application est licenciée pour 1 CPU et que notre VM affiche plusieurs processeurs. Respectons les licences d’utilisation!
Pour contrer les enjeux mentionné ci-dessus, VMware a développé une technique permettant de configurer correctement l’utilisation de multiples cœurs dans un ou plusieurs processeurs physiques. Sachant que chaque vCPU donne accès à un cœur, il faut donner 4 vCPUs à notre machine virtuelle et lui indiquer que notre processeur possède 4 cœurs. Dès lors, notre système d’exploitation n’affichera plus 4 processeurs mais bien un processeur avec 4 cœurs.
Voici comment configurer une VM avec un « CPU Quad Cores »
- Arrêter votre machine virtuelle
- Aller dans les propriétés de la VM

- Cliquer sur « Configuration Parameters » sous l’onglet « Options » dans la section « General »

- Ajouter la ligne cpuid.coresPerSocket = 4

- Appliquer les changements en cliquant sur « OK » puis démarrer votre machine virtuelle
Sous Windows, il est possible de valider votre configuration avec l’outil CPU-Z « freeware »
Voici quelques exemples de configuration…
- Pour avoir 1 CPU avec 4 cœurs dans Windows : 4 vCPU / cpuid.coresPerSocket = 4
- Pour avoir 4 CPU avec 2 cœurs dans Windows : 8 vCPU / cpuid.coresPerSocket = 2
- Pour avoir 2 CPU avec 2 cœurs dans Windows : 4 vCPU / cpuid.coresPerSocket = 2
Note: Le nombre maximal de vCPU disponible dans une VM est le nombre de cœur physiquement disponible.
Controle des cœurs utilisés
Il est aussi possible de contrôler et de restreindre quel cœur sera utilisé par une VM. Voici comment indiquer à notre VM d’utiliser seulement les cœurs 0, 1, 2 et 7 de vos deux processeurs « Quad Cores »
- Arrêter votre machine virtuelle
- Aller dans les propriétés de la VM
- Dans « Advanced CPU » sous l’onglet « Resources » dans la section « Scheduling Affinity » taper, 0-2,7

- Appliquer les changements en cliquant sur « OK » puis démarrer votre machine virtuelle
Voilà, votre machine virtuelle utilise donc 4 cœurs spécifique et votre système d’exploitation ne voit qu’un seul processeur ayant 4 cœurs
Référence
Virtual Machine Administration Guide
http://www.vmware.com/pdf/vsphere4/r41/vsp_41_vm_admin_guide.pdf
CPU tools
http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&externalId=1030067
Setting the number of cores per CPU in a virtual machine
http://kb.vmware.com/kb/1010184