Hyper Threading et machines virtuelles?

15

J'ai déjà regardé ce fil: Hyper-V et Hyper-threading: activé ou désactivé? , mais la seule réponse est spécifique à Windows ....

Je construis un serveur VM (en utilisant Proxmox VE si cela fait une différence) et je me demandais comment l'hyper threading peut affecter les machines virtuelles ...

Plus précisément, si je maximise le nombre de machines virtuelles, l'hyper-threading aiderait-il ou nuirait-il aux performances?

De plus, les plus grandes machines virtuelles seront un serveur Terminal Server avec environ 30 clients (4 cœurs / 8 Go de RAM) et un serveur de fichiers si cela vous aide.

Mise à jour: Le serveur est un Dell R410 avec un RAID 10 de 1 To, 32 Go de RAM et un double Intel Xeon E5530 (je ne suis pas sûr du modèle exact, mais c'était un E55xx avec 2+ Ghz)

Mise à jour: la plupart des VM seront sur KVM.

Soviero
la source
Veuillez fournir les spécifications du serveur que vous prévoyez d'utiliser.
ewwhite
Aussi curieux. Pourquoi Promox VE contre ESXi?
ewwhite
Probablement en raison de la limite ESXI de 16 Go de RAM sur la licence gratuite
Tacticus
3
J'ai choisi Proxmox plutôt que ESXi parce que Proxmox a quelques fonctionnalités supplémentaires comme la gestion complète à partir d'une interface graphique Web, le clustering, les spécifications du serveur ne sont pas artificiellement limitées par les licences et quelques autres dont je ne me souviens pas très bien. De plus, 2.0 inclura l'authentification AD qui est très utile pour nous, je ne sais pas si ESXi le fait ...
Soviero
1
Avez-vous regardé oVirt?
dyasny

Réponses:

12

En général, je laisse HyperThreading ON pour les serveurs hôtes VM (VMWare ESXi, KVM, HyperV, etc.). Cela s'applique aux processeurs Intel Nehalem et plus récents (série 5500 et plus). Unités d'exécution supplémentaires disponibles pour planifier plusieurs machines virtuelles.

Vous pouvez également réévaluer le dimensionnement de vos systèmes invités. En règle générale, il est préférable de commencer petit sur l'allocation de processeur avec des machines virtuelles. Puisque vous parlez d'un serveur de terminaux, je déplacerais en fait cela vers 2 CPU virtuels plutôt que 4 vCPU. Il est plus facile pour l'hyperviseur de planifier le temps processeur pour les machines virtuelles avec un plus petit nombre de cœurs . La RAM est toujours critique, alors assurez-vous d'en mettre beaucoup à disposition.

Voir: http://omtconcepts.com/wp/?p=14

ewwhite
la source
Comment exactement deux threads sont-ils plus rapides que quatre?
Soviero
3
Pas plus rapide ... Plus facile à planifier. Voir mon montage. La machine que vous mentionnez aura 8 cœurs au total (16, avec HyperThreading). Il est plus difficile de trouver les ressources pour planifier un invité 4-vCPU que les 2-vCPU. Vous aurez plus de conflits (et donc des performances plus faibles). Si vous prévoyez d'exécuter d'autres invités virtuels sur ce serveur, il est judicieux d'utiliser 1 et 2 invités vCPU.
ewwhite
3
Votre point sur la planification s'applique uniquement aux hyperviseurs qui effectuent une «planification de gangs» où ils tentent d'exécuter une approximation de «tout ou rien» des processeurs virtuels en même temps. Pour les hyperviseurs qui le font, l'ajout de processeurs virtuels rendra la machine virtuelle plus difficile à planifier. Je comprends que Kevin a mis à jour sa question pour stipuler qu'il veut utiliser KVM, principalement. Mais je tiens à souligner que Hyper-V ne fait pas de planification de gangs. Il repose sur la paravirtualisation du système d'exploitation invité pour éviter d'avoir à planifier des gangs.
Jake Oshins
Je ne savais pas cela sur Hyper-V, mais cela s'applique aux autres hyperviseurs majeurs.
ewwhite
1
KVM ne programme pas les gangs. En fait, seul VMWare fait cela, et même ils ont ajouté des mécanismes pour détendre la folie de planification des gangs dans la v5
dyasny
4

Ça dépend vraiment. Si, comme vous le dites, vous allez "max out", ce qui signifie, je suppose, une surutilisation du CPU (attribuez plus de cœurs de CPU virtuels que vous en avez, ou exactement autant que vous en avez), alors HT devrait certainement être sur.

Si vous n'utilisez pas trop, il est généralement préférable de tester sous vos charges spécifiques - parfois HT peut réellement nuire aux performances.

Dyasny
la source
Je prévois d'allouer exactement autant de cœurs / threads que possible, mais je ne prévois pas de surallouer.
Soviero
Pensez-vous que le système d'exploitation hôte ne nécessite aucun temps processeur? Et si vous allouez autant de v-cores que de threads avec HT activé, vous utilisez en fait au moins 70 à 80%, car même lorsque HT ajoute aux performances, c'est généralement de 20 à 30% en haut, pas de 100%, comme on pourrait le supposer à partir du nombre de threads.
dyasny
Ok, donc pas plus de 12 "cœurs" (75% sur 16) alloués?
Soviero
1
Je suppose que je n'étais pas assez clair. Vous POUVEZ surutilisation, et selon les charges dans les machines virtuelles, le processeur peut ne pas devenir du tout le goulot d'étranglement. De plus, vous ne devez jamais affecter plus de CPU à une machine virtuelle que ce dont elle a absolument besoin, car plus la machine virtuelle a de processeurs, plus elle est difficile à planifier, donc beaucoup de v-cpus peuvent réellement nuire aux performances. Quant au gain de performances de 20% par hyperthreading - ce n'est pas un absolu, le nombre peut être légèrement supérieur, inférieur, nul ou même négatif - en fonction des charges VM.
dyasny
Ah d'accord. Je vous remercie.
Soviero
3

De nombreuses variables affectent les performances des machines virtuelles. HT n'est qu'une des autres variables, mais cela dépend également de la configuration de la machine virtuelle.

L'une des variables qui affectent HT dépend du type d'hyperviseur utilisé.

Si vous utilisez des machines virtuelles légères comme VZ, VServer, etc., il est bien évident que HT apporterait des avantages appropriés car ces machines virtuelles ne sont en fait pas étroitement isolées et ressemblent davantage à l'exécution de logiciels multithreads.

Si vous utilisez des machines virtuelles lourdes comme KVM, Xen HVM, etc., il est possible que HT interfère avec les choses, par exemple lorsqu'une VM se voit allouer deux processeurs mais finit par utiliser un HT chacun sur des cœurs différents.

Donc, la meilleure chose à faire est encore de tester votre configuration pour voir ce qui vous convient.

sybreon
la source