Kickstart schrieb:
Oder bin ich falsch damit?
Denn, wenn viele Programme einfach mit den ersten Kernen arbeiten, dann lasse ich diese frei und lass meine Games auf den ungenutzt laufen. So kommt sich weniger in die Quere.
Renegade334 schrieb:
Vor 1 oder 2 Versionen hatte ich da immer 20/24 Threads belegt (im Weltraum deutlich weniger). Ich habe damals vermutet, dass andere Spieler, viele Objekte, Wetter und/oder NPC stark die CPU belasten und war eher erstaunt, dass es mal ein Spiel außer Total War schafft so viele Threads halbwegs gleichmäßig zu belegen.
Da muss man denke ich einiges erklären....
Windows 10/11 ist sich bewusst welche Threads zum gleichen CPU Kern gehören und benutzt grundsätzlich alle Threads.
Thread 0 und 1 gehören zu Kern 0
Thread 2 und 3 gehören zu Kern 1
Thread 4 und 5 gehören zu Kern 2
usw.
Bei Zen2, 3 und 4 gibt es zusätzlich noch die Info welche Kerne die beste Qualität haben und daher minimal höher Boosten. Auch das kennt Windows und legt die Aufgaben mit einer höheren Wahrscheinlichkeit auf die entsprechenden Threads.
Es gab früher mal Programme, die fest einprogrammiert hatten, welche Aufgaben auf welchen Hardware-Threads laufen.
Das sind aber vor allem Spiele aus der Zeit der ersten dual und quadcore CPUs...also eher wenig relevant.
Die aktuellen Spiele benutzen zwar mehr oder weniger Programm-Threads und können diese auch unterschiedlich gut auslasten aber die Verteilung auf die Hardware-Threads übernimmt Windows.
Ab Windows 10 hat sich die Art der Lastverteilung ziemlich geändert.
Windows lässt einen Programmthread tendenziell nicht mehr sekundenlang auf einem Hardware-Thread sondern verschiebt diesen viele Male die Sekunde von Kern zu Kern(Je nach Situation)
So kann es so aussehen, als würde ein single Thread Programm, alle 16 Threads gleichmäßig auslasten.
Das sieht wie tolles Multithreading aus, aber es ist eigentlich grauenhaft für die Performance.
Denn die Arbeit findet weiterhin nacheinander statt, aber weil pausenlos von Kern zu Kern gewechselt wird, geht immer der L1&L2 Cache Bezug verloren und das Wechseln kostet ebenfalls Rechenzeit.
Warum ist Win10/
11 bloß so doof?
Kann ich nicht wirklich beantworten aber meine Theorie ist, dass einerseits Windows 10 für die schlecht gekühlten Ultrabooks entwickelt wurde und es damals von Vorteil war, wenn die Last gut verteilt wird und kein Kern drosselt.
Und andererseits hat es handfeste multithread Vorteile bei 100% CPU Auslastung. Da schiebt Windows praktisch in jede kleine Lücke neue Arbeit und kann die CPU Kerne besser auslasten als es Windows 7 konnte.
Edit: Ich habe mir gerade ein Video von Level1Techs angeguckt und da wird darauf eingegangen, dass Windows 11 schlauer wird mit dem Verteilen der Threads und dass der Höchstleistungsplan durch das deaktivieren des core parkings sogar Nachteile haben kann, weil das core parking die Threads besser zusammenhält anstatt sie zu verteilen....da muss ich mal selbst herumtesten.
Deine Idee, den ersten Kern freizulassen halte ich für wenig hilfreich. Windows wird die Hintergrundprozesse irgenwo hinlegen wo gerade wenig zu tun ist und nicht auf spezielle Kerne.
Es ist auch falsch, dass man an der Einzelauslastung der Threads ablesen kann ob das Spiel gut im Multithreading ist oder nicht. Wie schon gesagt verschiebt Windows 10/11 die Threads zu schnell und es hat keine Aussagekraft mehr.
Schau auf die GPU Auslastung um zu gucken ob die CPU schnell genug ist oder nicht.
Und schau auf die CPU Gesamtauslastung um zu sehen wie viele Threads ausgenutzt werden.
Bei einer CPU mit SMT/HT profitierst du erst ab ca 50% Auslastung von SMT oder kannst potentiell von mehr CPU Kernen profitieren....einen kleinen Bonus hat man meistens duch mehr Kerne aber 6 Kerne reichen meist aus.
Wenn du nicht möchtest, dass ein Programm SMT ausnutzt, dann erlaubst du dem Programm nur die Threads
0 2 4 6 8 10 12 14 oder
1 3 5 7 9 11 13 15
Bei einer CPU mit mehreren CCX oder CCDs liegen die Threads in Blöcken hintereinander.
Bei meinem 3950X sind es also
0-7 für CCX 0 auf CCD 0
8-15 für CCX 1 auf CCD 0
16-23 für CCX 0 auf CCD 1
24-31 für CCX 1 auf CCD 1