Ruckler bei Hyperthreading?

Gast #4220231
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
#4220292
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.
#4220315
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.
#4220324
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren