Limitations du processeur Hyper-V

14

Nous avons récemment acheté un serveur qui exécute Hyper-V 2008 R2 bare metal. Le serveur dispose de deux processeurs Intel Xeon quad-core avec hyperthreading, donc si je comprends bien, cela nous donne 16 cœurs. Dans Hyper-V, nous avons créé une machine virtuelle exécutant Windows Server 2008 R2 avec 4 processeurs virtuels. L'écran des paramètres du processeur me dit que cela représente 25% de la puissance de traitement totale du système. Est-ce à dire que les 75% restants ne peuvent pas être exploités par le système d'exploitation virtuel? Nous allons exécuter quelques autres machines virtuelles, mais celle-ci est destinée à SQL Server et nous aimerions lui fournir autant de puissance que possible.

Scott
la source
5
Vous voulez être extrêmement prudent lors de l'allocation de vCPU à une machine. Cela signifie que la machine virtuelle doit attendre jusqu'à ce que 4 processeurs physiques soient disponibles en même temps avant de pouvoir s'exécuter. Voir ici
Holocryptic
6
En ce qui concerne l'hyperthreading, jetez un œil à cet excellent manuel
Hyppy
4
Holocryptic, votre déclaration était vraie pour les anciens systèmes VMWare, mais elle n'a jamais été vraie pour Hyper-V. Hyper-V ne «planifie pas les gangs» des processeurs virtuels.
Jake Oshins

Réponses:

15

Un vCPU ne peut être mappé qu'à un seul processeur physique. Vous ne pouvez pas prendre 4 processeurs physiques et créer un seul processeur virtuel quatre fois plus rapide; ce n'est pas comme ça que ça fonctionne.

Hyper-V est limité à l'attribution de 4 vCPU à une machine virtuelle (la dernière fois que j'ai vérifié). Si vous avez besoin d'une puissance CPU importante, passez au physique, il n'y a aucun sens à ajouter une surcharge de virtualisation à quelque chose qui nécessite beaucoup de CPU et parallèle en premier lieu.

En outre, comme le note Holocryptic, si vous attribuez 4 vCPU à une machine virtuelle, cette machine virtuelle ne peut pas fonctionner tant que Hyper-V n'a pas acquis 4 cœurs de processeur physiques pour les exécuter. Selon votre configuration, cela pourrait être une pierre d'achoppement majeure (par exemple, si vous avez une machine à 6 cœurs avec un tas de 4 machines virtuelles vCPU, une seule ne fonctionnera jamais à la fois, les deux autres cœurs resteront toujours essentiellement inutilisés). Selon Jake Oshins, cela n'était vrai pour aucune version d'Hyper-V. Il déclare que Hyper-V n'utilise pas la planification des gangs pour le CPU; comme presque tous les autres hyperviseurs. Par conséquent, si un cœur de processeur phystique est disponible, Hyper-V peut l'utiliser pour exécuter une machine virtuelle multi-processeur. (Également mentionné, Hyper-V peut ne pas utiliser tous les cœurs physiques disponibles à l'époque en raison du partitionnement NUMA)

Remarque: SQL n'utilise pas nécessairement tous les cœurs que vous pouvez lui lancer en premier lieu. Cela dépend vraiment de l'utilisation que vous en faites et de la parallélisabilité de la charge.

Chris S
la source
Je suis d'accord, mais les frais généraux sur les processeurs virtuels ne sont presque rien et entrent rarement en jeu.
Nate
4
Chris, la note d'Holocryptic est tout simplement fausse. Hyper-V n'attend pas que 4 CPU virtuels soient disponibles avant de planifier un processeur virtuel à partir d'une machine virtuelle 4 VP. Hyper-V planifie un processeur virtuel chaque fois qu'il a un processeur physique libre pour l'exécuter, avec quelques mises en garde. Par exemple, il recherche des processeurs physiques dans le même nœud NUMA physique que le reste de la machine virtuelle.
Jake Oshins
3

Oui, ce que Chris a dit. Si vous avez besoin de plus de 4 CPU dans une machine virtuelle Hyper-V, alors créez deux serveurs SQL en virtuel et répartissez vos bases de données ou passez au physique. En fonction de votre licence de serveur SQL, vous pourrez peut-être ajouter plus de serveurs SQL en virtuel (sur le même hôte physique) sans augmenter les coûts de licence, mais lisez le livre blanc sur les licences virtuelles SQL pour plus d'informations.

Je conviens également que si SQL manque de puissance CPU avec 4 CPU virtuels, vous avez soit une utilisation sérieuse de l'application, soit les commandes SQL sont mal écrites.

Bret Fisher
la source
1
Re: "... ou les commandes SQL sont mal écrites." Ceci est presque garanti chaque fois que du code fourni par le fournisseur est en jeu.
Skyhawk
En effet, la plupart du trafic de base de données est constitué de choses OLTP provenant de notre système ERP. Nous avons également un système de workflow du même fournisseur. Les trucs personnalisés écrits en interne sont un petit pourcentage.
Scott
Notre ancienne base de données fonctionne au maximum sur 4 cœurs logiques (deux processeurs double cœur), nous nous attendons donc à avoir besoin de plus que cela.
Scott
0

Environ 4 core core limit:

Dans la section du fichier de configuration de VM:

[processeurs] [count type = ”integer”] 16 [/ count]

Vous disposez maintenant d'un processeur 16 cœurs.

MISE À JOUR: Il semble que la capture d'écran soit nécessaire

entrez la description de l'image ici

Nime Cloud
la source
0

suivez ce guide

http://surminski.eu/2012/04/17/hyper-v-how-to-add-more-than-4-cores-to-a-virtual-machine/

vous pouvez localiser le fichier de configuration vm xml sous le répertoire "Virtual Machines" du répertoire VHD de la VM, le fichier de configuration sera nommé sous l'ID de la VM. Le lien ci-dessous est une référence.

référence: fichier de configuration VM xml

assurez-vous de modifier le fichier de configuration VM xml avec le bloc-notes / notepad ++ ouvert sous les privilèges d'administrateur

Shuliyey
la source