web-dev-qa-db-fra.com

Hyper-V et Hyper-threading: ON ou OFF?

Avec les nouveaux processeurs Xeon supportant l'hyper-threading, quelle est la sagesse actuelle en ce qui concerne l'utilisation (ou non) sur une machine hôte Hyper-V?

J'étais à l'origine sous l'impression que l'activation dans un environnement hôte virtuel pourrait être préjudiciable car les processeurs "supplémentaires" n'étaient pas de vrais noyaux. Cependant, j'ai également lu des commentaires (non confirmés) dans le sens de la SEP, faisant du travail acharné pour que Hyper-V fonctionne bien dans un environnement hyper-threading.

Quelqu'un a-t-il une information ou une expérience solide à cet égard? À votre santé!

23
CapBBeard

L'ancien problème avec Hyper-threading dans Virtual Server 2005, sans obtenir trop technique, le cache de la CPU était en train d'être empoisonné, c'est-à-dire qu'il ne faisait presque rien parce que les contextes de ce qui se passait sur chaque thread n'étaient pas liés - les causant de la compétition pour la cache sur puce.

Les jetons plus récentes ont des caches plus grandes et plus intelligentes, donc cela est moins problématique.

Est-il idéal d'avoir ou de désactiver? Cela dépend vraiment de la charge de travail. Si les deux threads arrivent à exécuter le même VM et la même tâche, il serait certainement certainement un avantage important d'avoir sur. S'ils faisaient des choses non liées avec beaucoup de choses aléatoires RAM E/S (plusieurs VMS différents par exemple) Cela ne ferait que la moitié du cache de la puce à la disposition de chacun - ce qui en théorie pourrait être plus lent - en réalité, il est rarement plus important.

Si vous avez des puces de génération plus âgées, bien que vous souhaitiez vérifier la tailles de cache de puce: dans la virtualisation, le cache plus grand que vous pouvez obtenir mieux. RAM== est vraiment beaucoup plus lent que les CPU - tout simplement pas aussi mauvais que des lecteurs de disque.

Remarque: Ce que vous lisez, ce qui dit "désactiver" a été trouvé sur les jetons qui étaient un noyau unique avec hyper-threading - par exemple ceci était une réponse officielle de retour dans la journée (2005/2006?) - http://www.virtualserverfaq.com/tiki-index.php?page=virtualServerhostDualCore

Steve Radich http://www.virtualserverfaq.com

Selon Windows It Pro, vous voulez le laisser sur:

R. Le nouveau processeur Intel Core I7 de quatre nœuds permet d'hyper-threading, qui divise chaque noyau de processeur dans deux noyaux virtuels à (potentiellement) améliorer les performances.

La préoccupation avec Hyper-V et Hyper-threading est que vous attribuez un certain nombre de noyaux de processeur à chaque machine virtuelle (VM). Imaginez que vous attribuiez un processeur chacun à deux VMS invité à partir de la console de gestion Hyper-V, pensant que chacun va utiliser un noyau séparé. Que se passe-t-il si l'hyperviseur attribue chacun des virus VMS au même noyau physique, chacun obtenant un noyau virtuel? Vous auriez potentiellement une performance moche et trois noyaux physiques ne faisaient pas beaucoup beaucoup, où vous auriez aimé chacun VM pour obtenir son propre noyau physique.

Heureusement, ce n'est pas le cas. Microsoft a fait beaucoup de travail autour de l'hyper-threading et de l'hyper-v. Essentiellement, alors que l'hyper-threading facilitera parfois la performance, elle ne fera jamais mal de performance, de sorte que l'hyper-threading soit activé.

21
Sean Earp

Les programmes qui sont conscients de l'hyperthreading sont capables de distinguer un noyau physique et d'un noyau logique (virtuel) et d'allouer des ressources en conséquence.

L'hyperthreading diminue le coût de la commutation contextuelle en permettant de stocker les États de deux processus à tout moment, au lieu d'un seul état à la fois. La commutation contextuelle est généralement considérée comme très coûteuse, car vous devez charger l'état complet d'un processus dans la CPU. Cela signifie que si vous avez un processus à forte intensité de la CPU en cours d'exécution, la CPU hyperthreadée peut fréquemment basculer entre ce processus et d'autres sans entraîner une grande partie d'une performance touchée.

L'avantage d'exécuter des serveurs virtuels est que vous pouvez créer un grand pool de ressources pouvant être attribuées à différents serveurs à la volée, au besoin. Cela inclut la réaffectation des cœurs de processeur et l'équilibrage de la charge sur tous les cœurs disponibles. Si l'hyperviseur ne connaît pas la différence entre un noyau physique et un noyau logique, alors vous avez raison - Certains noyaux physiques peuvent rester inactifs tandis que d'autres sont indispensables à 100% d'utilisation du processeur, tandis que les deux cœurs logiques sont en concurrence de la CPU. temps. Toutefois, si l'hyperviseur est capable de dire la différence entre les cœurs physiques et logiques, il essaiera d'équilibrer la charge de la CPU dans les CPU physiques avant d'attribuer plusieurs processus à deux noyaux logiques qui appartiennent au même noyau physique.

6
rob

Je n'ai pas étudié la question en détail, mais Microsoft ne recommande pas d'utiliser hyperthreading avec Exchange 2010 en raison de "planification et de surveillance des capacités". Vous voudrez peut-être tester vos propres charges de travail avant de choisir une configuration ou l'autre.

2
duffbeer703