Hyper-V und Hyper-Threading: Ein oder aus?

23

Was ist der aktuelle Stand der Dinge, wenn die neuen Xeon-CPUs Hyper-Threading unterstützen (oder nicht), wenn sie auf einem Hyper-V-Hostcomputer verwendet werden?

Ich hatte ursprünglich den Eindruck, dass das Einschalten in einer virtuellen Host-Umgebung nachteilig sein könnte, da die "zusätzlichen" CPUs keine echten Kerne waren. Ich habe jedoch auch (unbestätigte) Kommentare in Anlehnung an MS gelesen, die harte Arbeit leisten, um Hyper-V in einer Hyper-Threading-Umgebung zum Laufen zu bringen.

Hat jemand fundierte Informationen oder Erfahrungen in dieser Hinsicht? Prost!

CapBBeard
quelle

Antworten:

5

Das alte Problem mit Hyper-Threading in Virtual Server 2005 war, ohne übermäßig technisch zu werden, dass der CPU-Cache vergiftet wurde, dh es wurde fast nichts zwischengespeichert, da die Kontexte der Vorgänge in den einzelnen Threads nicht miteinander in Beziehung standen - was dazu führte, dass sie um das Problem konkurrierten On-Chip-Cache.

Neuere Chips haben größere und intelligentere Caches, sodass dies weniger problematisch ist.

Ist es ideal ein- oder auszuschalten? Das hängt wirklich von der Arbeitsbelastung ab. Wenn auf beiden Threads dieselbe VM und dieselbe Task ausgeführt wird, wäre dies mit ziemlicher Sicherheit ein großer Vorteil. Wenn sie nicht verwandte Dinge mit vielen zufälligen RAM-E / A-Vorgängen ausführen (zum Beispiel mit mehreren verschiedenen VMs), würde dies dazu führen, dass nur die Hälfte des Cache-Speichers für jeden verfügbar ist - was theoretisch langsamer sein könnte -. In der Realität ist dies selten mehr der Fall.

Wenn Sie Chips älterer Generation haben, möchten Sie möglicherweise die Chip-Cache-Größen überprüfen: In der Virtualisierung können Sie den größeren Cache besser nutzen. RAM ist wirklich VIEL langsamer als CPUs - nur nicht so schlecht wie Festplatten.

ANMERKUNG: Was Sie lesen, das besagt, dass "Ausschalten" in Bezug auf die Chips gefunden wurde, die einkernig mit Hyper-Threading waren - Dies war beispielsweise die offizielle Antwort von damals (2005/2006?) - http: //www.VirtualServerFAQ .com / tiki-index.php? page = VirtualServerHostDualCore

Steve Radich http://www.VirtualServerFAQ.com

Steve Radich-BitShop.com
quelle
21

Laut Windows IT Pro möchten Sie es eingeschaltet lassen:

A. Der neue Intel Core i7-Prozessor mit vier Kernen ermöglicht Hyper-Threading, bei dem jeder Prozessorkern in zwei virtuelle Kerne aufgeteilt wird, um die Leistung (potenziell) zu verbessern.

Bei Hyper-V und Hyper-Threading besteht das Problem darin, dass Sie jeder virtuellen Maschine (VM) eine Reihe von Prozessorkernen zuweisen. Stellen Sie sich vor, Sie weisen zwei Gast-VMs über die Hyper-V-Verwaltungskonsole jeweils einen Prozessor zu, wobei Sie davon ausgehen, dass jeder einen separaten Kern verwenden wird. Was passiert, wenn der Hypervisor jede der VMs demselben physischen Kern zuweist und jede einen virtuellen Kern erhält? Sie würden möglicherweise eine miese Leistung erzielen und drei physische Kerne würden nicht viel bewirken, wenn Sie sich gewünscht hätten, dass jede VM ihren eigenen physischen Kern erhält.

Zum Glück ist das nicht der Fall. Microsoft hat viel an Hyper-Threading und Hyper-V gearbeitet. Während Hyper-Threading manchmal die Leistung verbessert, beeinträchtigt es nie die Leistung. Daher sollte Hyper-Threading aktiviert sein.

Sean Earp
quelle
Hmm danke für die Antwort. Das kann sein, was ich ursprünglich gelesen habe. Sie sagen, man soll es anlassen, aber es scheint ziemlich leer zu sein; Ich bin nicht besonders überzeugt. Vielleicht bin es nur ich.
CapBBeard
6

Programme, die Hyperthreading kennen, können zwischen einem physischen und einem logischen (virtuellen) Kern unterscheiden und Ressourcen entsprechend zuweisen.

Hyperthreading senkt die Kosten für die Kontextumschaltung, indem es ermöglicht, dass die Zustände von zwei Prozessen zu einem bestimmten Zeitpunkt gespeichert werden, anstatt jeweils nur einen Zustand. Die Kontextumschaltung wird normalerweise als sehr kostspielig angesehen, da Sie den gesamten Status eines Prozesses in die CPU laden müssen. Dies bedeutet, dass bei Ausführung eines CPU-intensiven Prozesses die Hyperthread-CPU häufig zwischen diesem und anderen Prozessen wechseln kann, ohne dass dies zu erheblichen Leistungseinbußen führt.

Der Vorteil des Betriebs virtueller Server besteht darin, dass Sie einen großen Ressourcenpool erstellen können, der bei Bedarf im laufenden Betrieb verschiedenen Servern zugewiesen werden kann. Dies umfasst die Neuzuweisung von CPU-Kernen und die Lastverteilung auf alle verfügbaren Kerne. Wenn der Hypervisor den Unterschied zwischen einem physischen und einem logischen Kern nicht kennt, haben Sie Recht - einige physische Kerne sind möglicherweise im Leerlauf, während andere auf 100% CPU-Auslastung festgelegt sind, während beide logischen Kerne um CPU konkurrieren Zeit. Wenn der Hypervisor jedoch den Unterschied zwischen physischen und logischen Kernen erkennen kann, versucht er, die CPU-Last auf die physischen CPUs zu verteilen, bevor er zwei logischen Kernen, die demselben physischen Kern angehören, mehrere Prozesse zuweist.

rauben
quelle
2

Ich habe das Problem nicht im Detail untersucht, aber Microsoft empfiehlt die Verwendung von Hyperthreading mit Exchange 2010 aufgrund von Problemen mit der Kapazitätsplanung und -überwachung nicht. Möglicherweise möchten Sie Ihre eigenen Workloads testen, bevor Sie die eine oder andere Konfiguration auswählen.

duffbeer703
quelle
-2

Hyperthreading: Wow, freie Prozessoren!

Schalte es aus. Während moderne Implementierungen von simultanem Multithreading (SMT), auch als Hyperthreading bezeichnet, den CPU-Durchsatz für die meisten Anwendungen absolut verbessern können, überwiegen die Vorteile von Exchange 2013 die negativen Auswirkungen nicht. Es stellt sich heraus, dass die Speichernutzung auf Exchange-Servern erheblich beeinträchtigt werden kann, wenn das Hyperthreading aktiviert ist, da der Garbage Collector des .NET-Servers Heaps zuweist. Der Server-Garbage-Collector überprüft beim Start einer Anwendung die Gesamtzahl der logischen Prozessoren und weist jedem logischen Prozessor einen Heap zu. Dies bedeutet, dass sich die Speichernutzung beim Start für einen unserer Dienste, der den Server-Garbage-Collector verwendet, nahezu verdoppelt, wenn das Hyperthreading aktiviert ist, im Vergleich zu dem Zeitpunkt, zu dem es deaktiviert ist. Diese signifikante Zunahme des Gedächtnisses, Zusammen mit einer Analyse des tatsächlichen Anstiegs des CPU-Durchsatzes für Exchange 2013-Workloads in internen Labortests haben wir eine Best-Practice-Empfehlung erhalten, wonach das Hyperthreading für alle Exchange 2013-Server deaktiviert werden sollte. Die Vorteile überwiegen nicht die negativen Auswirkungen.

Kopiert von: http://blogs.technet.com/b/exchange/archive/2013/05/06/ask-the-perf-guy-sizing-exchange-2013-deployments.aspx

user226342
quelle
3
Ich bin verwirrt; warum sprichst du von Austausch? Die Frage ist über Auswirkungen auf Hyperv. Und tatsächlich besagt der Absatz unter dem kopierten Hyper-Threading, dass ein virtualisierter Exchange-Server nicht betroffen ist, wenn ich ihn richtig lese.
Andy