Forum: PC Hard- und Software Ruckler bei Hyperthreading?


von cpu (Gast)


Lesenswert?

Hallo!

Was an dem Gerücht dran, dass es bei Intel Hyperthreading-CPUs zu 
Rucklern in Spielen kommt?

von (prx) A. K. (prx)


Lesenswert?

Technisch gesehen nichts. Man kann allerdings bei nebenläufiger 
Programmierung Fehler machen, die bei manchen CPU-Konfigurationen völlig 
einbrechen.

von klausr (Gast)


Lesenswert?

cpu schrieb:
> Was an dem Gerücht dran, dass es bei Intel Hyperthreading-CPUs zu
> Rucklern in Spielen kommt?

Das hat nichts mit dem Hyperthreading zu tun, sondern wenn man zwei 
Grafikkarten (oder zwei Grafikkarten-Chips auf einer Karte) zusammen 
schaltet, um einen höhere Framerate zu bekommen. Dann können 
Mikroruckler entstehen. -> 
http://extreme.pcgameshardware.de/grafikkarten/138660-erklaerung-mikroruckler.html

von cpu (Gast)


Lesenswert?

Erstmal danke für die Antworten.

Warum berichten so viele in Foren von Rucklern mit Hyperthreading, die 
nur eine GPU haben?

von Rolf M. (rmagnus)


Lesenswert?

Meiner Erfahrung nach kann Hyperthreading in manchen Fällen die 
Performance durchaus deutlich einbrechen lassen. Es macht nun mal nicht 
aus einem Kern zwei, sondern tut nur so. Das ist ein Hack, der je nach 
Situation gut funktionieren kann oder auch nicht.

von cpu (Gast)


Lesenswert?

Aber du rätst mir nicht davon ab?

von (prx) A. K. (prx)


Lesenswert?

Rolf M. schrieb:
> Meiner Erfahrung nach kann Hyperthreading in manchen Fällen die
> Performance durchaus deutlich einbrechen lassen.

Wie generell bei nebenläufiger Programmierung. Was auf einer Singlecore 
CPU ohne SMT wunderbar funktioniert, dass kann bei Multicore CPUs oder 
SMT ganz bös einbrechen, wenn der Programmierer bestimmte Aspekte davon 
nicht beachtet. Zugriff auf gemeinsamen Speicher und unpassend 
programmierte Spinlocks sind solche Kandidaten.

Kenne das konkret aus einem kommerziellen Programm, dessen Programmierer 
dabei ganz bös auf die Nase fiel. Tipp von mir ergab kleine Änderung mit 
grosser Wirkung.

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

cpu schrieb:
> Aber du rätst mir nicht davon ab?

Was erwartest du jetzt? Wenn du Probleme hast, schalte es ab und schau, 
ob sie dann weg sind. Wenn ja, lass es aus, wenn nicht, kannst du's ja 
wieder einschalten.

von Rolf M. (rmagnus)


Lesenswert?

A. K. schrieb:
> Rolf M. schrieb:
>> Meiner Erfahrung nach kann Hyperthreading in manchen Fällen die
>> Performance durchaus deutlich einbrechen lassen.
>
> Wie generell bei nebenläufiger Programmierung. Was auf einer Singlecore
> CPU ohne SMT wunderbar funktioniert, dass kann bei Multicore CPUs oder
> SMT ganz bös einbrechen, wenn der Programmierer bestimmte Aspekte davon
> nicht beachtet. Zugriff auf gemeinsamen Speicher und unpassend
> programmierte Spinlocks sind solche Kandidaten.

Das ist aber was ganz anderes, als das, worüber ich rede. Klar kann man 
sich durch ungeschickte Programmierung Multiprozessor-Performance kaputt 
machen. Aber man liest einiges im Internet über teils eklatante 
Performance-Einbrüche nicht nur bei Spiele, und das nicht durch 
Multiprocessing generell, sondern ganz speziell durch Hyperthreading. 
Programme sind teilweise auf vier echten Kernen erheblich schneller als 
auf 8 virtuellen.

von (prx) A. K. (prx)


Lesenswert?

Rolf M. schrieb:
> Das ist aber was ganz anderes, als das, worüber ich rede.

Nein. Missverständnis.

> Klar kann man
> sich durch ungeschickte Programmierung Multiprozessor-Performance kaputt
> machen.

Gibt es auch, hatte ich aber nicht gemeint.

Ein Programm mit solcherart falscher Programmierung bricht bei 
Hyperthreading massiv ein. Genau das was du aufführst.

> Multiprocessing generell, sondern ganz speziell durch Hyperthreading.

Beispiel:

Ein hohl drehendes Spinlock, das ohne Berücksichtigung von 
Hyperthreading programmiert wurde, behindert aufgrund ungebremster 
Ressourcenverwendung den anderen Thread des Cores massiv, ohne jene 
sinnvolle Tätigkeit. Behindert dabei u.U. genau den Thread, der das 
Spinlock grad blockiert. Ohne Hyperthreading tritt dieser Effekt nicht 
auf.

Eigens dafür hatte Intel zusammen mit Hyperthreading den anderswo als 
NOP ausgeführten PAUSE Befehl gebracht, der seinen Thread für etliche 
Takte lahm legt. In dieser Zeit stehen dem anderen Thread des Cores alle 
Ressourcen zu Verfügung. Pack diesen Befehl in die Schleife vom Spinlock 
und der Spuk ist weg.

https://software.intel.com/sites/default/files/m/d/4/1/d/8/17689_w_spinlock.pdf

: Bearbeitet durch User
von cpu (Gast)


Lesenswert?

ok, danke. Ich habe meine Entscheidung getroffen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.