Auswirkungen auf die Leistung von Hyper-Threading

9142
Bonita Montero

Ich habe gerade einen Artikel auf Heise Online gelesen (siehe Tabelle, der Rest ist deutsch), in dem behauptet wird, dass Hyper-Threading Single-Threading-Programme verlangsamt, obwohl sie nicht den zweiten Thread eines Core verwenden. Dh wenn Sie HT im BIOS deaktivieren, wird die Single-Threaded-App etwas schneller ausgeführt.

Ist das wahr oder handelt es sich um einen Messfehler? Hat jemand Quellen über Benchmarks, die dasselbe behaupten?

4

4 Antworten auf die Frage

5
jgorosdev

Es ist wahrscheinlich kein Messfehler. Tatsächlich ist dies eine ewige Debatte über die Leistung von Spielen, da diese normalerweise so ausgelegt sind, dass sie die maximale Single-Core-Leistung bieten. Gemäß diesem Artikel aus dem Intel- Artikel von Intel lautet das Hyperthreading:

Die Hyper-Threading-Technologie von Intel ermöglicht es, ein physisches Prozessorpaket als zwei separate logische Prozessoren innerhalb des Betriebssystems wahrzunehmen. Für Hyper-Threading-Technologie aktivierte Prozessorressourcen duplizieren, markieren oder teilen den Großteil der Ressourcen. Die gemeinsame Nutzung von Ressourcen ermöglicht eine effizientere Verwendung des Prozessors für eine signifikante Leistungssteigerung, bei weniger als 5% Diegröße und Stromverbrauch im Vergleich zu einem Einzelprozessorpaket. Die Hyper-Threading-Technologie kann jedoch keine Leistungserwartungen aufweisen, die der von Multiprocessing entsprechen, bei der alle Prozessorressourcen repliziert werden.

In der Tabelle, die Sie gezeigt haben, testet Cinebench einen einzelnen Prozessorkern. Kurz gesagt, HT (HyperThreading) aktiviert zwei virtuelle Kerne für einen physischen Kern (den, der im Test ausgewertet wird). Wenn der Test auf dem Starten eines einzelnen Prozesses basiert, der nicht aufgeteilt werden muss, verschlechtert die gemeinsame Nutzung von Ressourcen zwischen zwei Kernen das Testergebnis, da das Gleichgewicht, wenn es aktiv ist, nicht auftritt, wenn es deaktiviert ist (Windows und Cinebench sehen nur ein Einzelprozessor).

Wenn wir einen weiteren Test von Tom's Hardware hinzufügen, um ihn mit der angezeigten Tabelle (Cinebench R11.5) zu vergleichen:

Und Multithreading:

Die Ergebnisse zur Single-Thread-Leistung unterscheiden sich nicht so sehr von den Ergebnissen, die Sie auf Ihrer Seite angezeigt haben. Es ist wichtig zu beachten, dass die beiden logischen Prozessoren, die getrennte Ausführungszustände Ressourcen gemeinsam nutzen, wie beispielsweise den Systembus oder Cache haben, so dass sie nicht immer die Aufgaben parallelisieren, und es kann manchmal passiert Faden Abwürgen in diesem erwähnten Artikel bedeutet das, dass in den einzelnen Bei einem Thread-Stresstest könnte die gemeinsame Nutzung der Ressourcen dazu führen, dass einige Threads in eine Warteschlange geraten, was zu einem etwas schlechteren Leistungsergebnis führt.

Sie können hier auch sehen, wie unterschiedliche Szenarien in verschiedenen Spielen im Artikel von overclock.net lauten. Die Ergebnisse behaupten, dass die Leistung in einigen Fällen beeinträchtigt wird. Ich glaube nicht, dass dies als "Deaktivieren von HT verbessert die Single-Thread-Leistung" verstanden werden muss, sondern als "das Spiel ist für maximal 4 Kerne optimiert" oder "die HT nicht ausnutzt". Die erste Annahme kann durch das Lesen einiger Artikel wie diesem bestätigt werden. Dies zeigt, wie die Single-Core-Leistung eines i3 die Leistung verbessert, wenn HT aktiviert ist, im Vergleich zu i7, bei dem dies nicht der Fall ist.

Zusammenfassend haben wir gesehen, dass es kleine Fälle gibt, in denen das Deaktivieren von HyperThreading minimale Verbesserungen gegenüber der Single-Thread-Leistung aufweist. Das Gesamt-Kosten-Nutzen-Verhältnis reicht jedoch nicht aus, um das Deaktivieren von HyperThreading zu behaupten. Wenn das Betriebssystem und die Software für die HT-Architektur ausgelegt sind, lohnt es sich nicht, sie zu deaktivieren.

Antwort aktualisiert jgorosdev vor 7 Jahren 0
2
Itai

Ja und es sollte offensichtlich sein. Wenn Sie HT aktivieren, werden doppelt so viele Kerne wie angekündigt.

Dies soll mehr Parallelisierung ermöglichen, da die meisten Programme nicht ausreichend multithreadig sind. Wenn Sie jedoch ein Programm vollständig mit Multithreads versehen, überschreiben Sie Ressourcen und es kommt zu einem Leistungsabfall, nur weil der zusätzliche Overhead pro Thread auftritt. So klein dies auch sein mag, mit einer Anwendung, bei der 100% der CPU über eine beliebige Anzahl von Prozessorkernen und Prozessoren verwendet werden konnte, führte die Aktivierung von HT zu einem Leistungsabfall von ca. 2-3%.

Im Falle eines isolierten Singlethread-Programms klingt es jetzt so, als sollte es keine Rolle spielen, da das Programm selbst Ressourcen nicht überfordern kann, sondern sich daran erinnert, dass das Betriebssystem auch denkt, dass es zusätzliche Kerne gibt und dass Ressourcen überlastet werden können. Selbst wenn noch nicht verwendete Kerne vorhanden sind, kann man den Overhead messen, der durch den Scheduler verursacht wird, der den Thread nicht optimal platziert und an einen einzelnen realen Kern bindet.

Diese Beobachtungen basieren auf über einem Jahrzehnt Echtzeit-Softwareentwicklung und Benchmarks. Es gibt eindeutig einen beobachtbaren Unterschied, wenn auch einen sehr kleinen, wenn man versucht, die Leistung eines Systems zu maximieren.

0
LawrenceC

Keine Benchmarks, aber wahrscheinlich wahr, basierend auf den folgenden:

Aus dem Wikipedia-Artikel zu "Hyper-Threading":

Beim Ausführen von zwei Programmen, die die volle Aufmerksamkeit des Prozessors erfordern, kann es jedoch so aussehen, als würde eines oder beide der Programme leicht verlangsamen, wenn die Hyper-Threading-Technologie aktiviert ist. Dies liegt daran, dass das Wiedergabesystem des Pentium 4 wertvolle Ausführungsressourcen bindet und die Prozessorressourcen zwischen den beiden Programmen angleicht, wodurch die Ausführungszeit unterschiedlich hoch wird.

Dies gilt nicht, wenn SMT deaktiviert ist - das Betriebssystem verteilt dann Threads zwischen Kernen und nicht zwischen Hardwarethreads.

Moderne Intel- (und AMD-) CPUs führen eine " spekulative Ausführung " durch, bei der sie Befehle vor dem aktuellen Befehlszeiger abrufen und vorab ausführen, um die Ergebnisse zu erhalten, wenn die tatsächliche Ausführung aufholt.

Dinge wie nicht erwartete Verzweigungen und Unterbrechungen führen dazu, dass die CPU ihre Spekulation wegwirft und neu beginnen muss, und es klingt, als würde SMT weitere Situationen einführen, in denen dies auftreten kann. Für "gerade Aufgaben", die sich nicht mit vielen Bedingungen (z. B. GPU-ish-Aufgaben) verzweigen oder befassen, bietet dies wahrscheinlich einen Vorteil.

0
Alex Cannon

Wenn Sie HT aktiviert haben, teilt sich die CPU in zwei logische CPUs auf, und beide CPUs sind erheblich langsamer als der einzelne Kern, aus dem sie kamen, aber die kombinierte Leistung liegt bei über 100%. In den Pentium 4-Tagen könnten Sie einen CPU-Kern in zwei logische Kerne aufteilen, die etwa 55% so schnell sind. Nachdem das Hyper-Threading wieder zur Core-Architektur hinzugefügt wurde, ist es besser als 55% geworden.

Das Problem ist, dass das Betriebssystem dazu tendiert, die logischen Kerne als physische Kerne zu behandeln, sodass eine Task mit hoher Priorität neben einer Task mit niedriger Priorität in demselben CPU-Kern ausgeführt werden kann. Jetzt bekommen beide Threads oder Tasks die gleiche CPU-Aufmerksamkeit, obwohl sie nicht auf die Prioritätsunterschiede zurückzuführen sein sollten. Wenn Sie einen Benchmark ausführen, kann das Betriebssystem Aufgaben mit niedriger Priorität in den logischen Kernen planen und das Benchmark-Programm verlangsamen. Wenn einer der logischen Kerne frei wird, wird HT natürlich deaktiviert und der verbleibende Kern kehrt auf 100% Geschwindigkeit zurück.

Stellen Sie sich einen ausgelasteten Server mit einem CPU-intensiven Bildschirmschoner vor. Der Bildschirmschoner wird eingeschaltet und obwohl er auf niedrige Priorität gesetzt ist, wird der CPU-Kern in zwei Teile aufgeteilt, die um 65% schneller sind. Nun stehen dem Server nur noch 65% eines CPU-Kerns zur Verfügung.