3700X nicht voll ausgelastet (Hunt:Showdown)

EvilSquirrel schrieb:
Mir war dann nur der nächste Schritt nicht klar, dass die CPU auch dann voll ausgelastet ist, wenn mehrere Kerne teilbelastet sind. Das wurde ja oben erwähnt.
Wie gesagt hab ich oben relativ einfach erklärt, einfacher geht es normalerweise garnicht.

Ganz einfach kannst du das mit dem Cinebench nachvollziehen, in dem du einmal den Singlecore Test, und den danach dem Multi Test. Einfach 100% auslastung durch die Anzahl der Threads teilen, dann hast du die Volle Auslastung eines Kernes, mehr geht bei einer anwendung die nur 1 Kern auslasten kann nicht. Der Rest ist einfache Mathematik der Grundschule
 
Ich hake hier mal mit einer Verständnisfrage ein, die ich auch bei @EvilSquirrel glaube herauszulesen:

Wenn die CPU auf einem Kern limitiert (wie im Screenshot von @peterX, wo ja der Scheduler nur die Last zwischen zwei Threads hin- und herschiebt), die Auslastung für diesen einen Kern aber wie im Beispiel von OP nur bei 70% liegt, was limitiert dann technisch gesehen?
Reden wir dann von Interfaces (IF, Cache-Bandbreite oder eben Ram), die die benötigten Daten nicht schnell genug bereitstellen können? Oder ist es so, dass man z.B. unter Umständen mit einem Befehlssatz die Auslastung gar nicht auf 100% geschoben bekommt, weil Teile der CPU dann ungenutzt bleiben?

Ich denke, das entspricht auch der Frage, wie die 100% überhaupt ermittelt werden. Würde erwarten, dass die %-Auslastung der Anteil der Zeit ist, während dem die CPU nicht im Leerlauf ist. Aber "die CPU" besteht ja aus verschiedenen Ausführungseinheiten, die unabhängig voneinander aktiv oder inaktiv sein können (richtig?).

Ich meine damit explizit nicht, dass die Gesamtauslastung einer Multicore-CPU <100% liegt, sondern beziehe mich auf einen einzelnen Kern (oder sogar Thread). Als würde mein Spiel nur einen Thread nutzen können und bei z.B. 70% Auslastung im CPU-Limit hängen. Wieso schafft es nicht die 100%, obwohl es eigentlich möchte?
 
  • Gefällt mir
Reaktionen: timmey77 und EvilSquirrel
Nureinnickname! schrieb:
Wie gesagt hab ich oben relativ einfach erklärt, einfacher geht es normalerweise garnicht.

Der Rest ist einfache Mathematik der Grundschule

Was sollen so herablassende Kommentare, muss das echt sein?
Von dir sehe ich hier nur einen Post (zumindest mit dem Nutzernamen) und da erklärst du nichts sondern stellst nur was fest.

In dem Screenshot auf den du dich beziehst liegt die höchste Threadauslastung bei 69%.
1644404113339.png

Dass damit ein Kern/Thread ausgelastet ist habe ich inzwischen mitbekommen, wusste ich nur vorher nicht. Mein Verständnis von dem Wort "voll ausgelastet" sind/waren >90% (und zwar auf Kern/Thread basis).

Dass ich mich bei Auslastung auf die gesamt CPU Zahl beziehe die der Task Manager ausspuckt habe ich nirgends auch nur ansatzweise geschrieben, es wird mir trotzdem mehrfach unterstellt :freak:


@buddha281 Genau so wie du schreibst.
Wo liegen da die Grenzen pro Thread oder im Gesamtkontext?
 
  • Gefällt mir
Reaktionen: timmey77
buddha281 schrieb:
Ich meine damit explizit nicht, dass die Gesamtauslastung einer Multicore-CPU <100% liegt, sondern beziehe mich auf einen einzelnen Kern (oder sogar Thread). Als würde mein Spiel nur einen Thread nutzen können und bei z.B. 70% Auslastung im CPU-Limit hängen. Wieso schafft es nicht die 100%, obwohl es eigentlich möchte?
Windows ist ein Multi-Tasking-OS.
D.h. ein Prozess bekommt die CPU in Zeit-"Scheibchen". Als Windows noch ein DOS-Aufsatz war, gab es immer wieder Prozesse, die den Prozessor "für sich" vereinnahmt, und jegliches Multitasking damit unterbunden haben. Z.b. beim Speicher einer Datei auf eine Diskette. Da konnte man NIX mehr am Rechner machen, bis das fertig war. Aber eventuell erinnern sich daran nicht mehr so viele User. Ist ja schon eine Weile her^^

Und jetzt das kleine und pikante Detail. Beim Ende einer Zeit-Scheibe wird der Zustand des Prozesses gespeichert, und wenn er dann wieder "drann" ist, und eine neues Zeit-Scheibchen bekommt, dann wechselt er gerne mal den Kern. DAS ist was ihr seht.
Damit keine Hotspots entstehen oder einfach weil ein Core gerade nix zu tun hat.

Das macht Windows von sich aus so.
Das ein Thread einen Kern komplett auslastet ist eigentlich nur dann der Fall, wenn der Programmierer dieses Gebaren EXPLIZIT verbietet. Also dem Windows Sheduler von hinten ins Knie schießt.
ODER aber wenn CPPC bzw. Intel Turbo Boost 3.0 aktiv sind.

Die konzentrieren nämlich die Arbeit (soweit als möglich) auf den besten Kern des Prozessors (wenn er es denn Windows mitteilt und der Sheduler es versteht, d.h. abhängig von CPU und Windows-Version) bzw. auf das beste CCX (denn auch ein Wechsel der Kerne aus einem CCX auf ein anderes CCX (falls mehrere vorhanden) ist ein Performace-Killer, weil damit alle Daten im Cache verloren gehen.

Kann man ganz einfach nachprüfen, indem man z.b. Prime mal nur mit einem Worker laufen lässt.

DAS erwartet ihr doch, oder?
primetvu8j.jpg


SO sieht es aber nur aus, wenn CPPC/Intel-Turbo-Boost aktiv sind.

DAS hier unter dem Text aber ist der "Normalzustand", so verteilt Windows die Arbeit von einem Thread über alle Kerne. Das ist das gleiche Programm, wieder nur ein Worker. Normalzustand.
Und darüber stolpern alle seit dem Jahr 2005.
Windows verteilt die Arbeit über die Kerne. Und zwar mehrere 1000x pro Sekunde, so schnell, das kein Programm das "richtig" anzeigen würde. Der Taskmanager ist also nur eine "Näherung" an das was eigentlich passiert.
cpu-limit_ein_thread_3kjcs.jpg



2005 war das noch viel einfacher zu sehen. Aber viele User haben sich damals noch nicht damit beschäftigt.
Damals waren praktisch alle Programme noch Single-Threaded. D.h. sie nutzen nur einen einzigen Prozess.
Und wenn man einen Dual-Core hatte, dann lief da nicht ein Kern auf 100%, sondern beide Kerne auf 50%.
So einfach war das damals.
Der Unterschied zu heute ist gar nicht so groß. Heute haben wir nur mehr Kerne, und die Games nutzen nicht alle Kerne. Nur merken es die User jetzt erst, weil sie sich jetzt langsam von ihren 4-Kernern trennen, die die Games noch ganz gut auslasten konnten^^
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: buddha281
EvilSquirrel schrieb:
Wo liegen da die Grenzen pro Thread oder im Gesamtkontext?
Das ist eine gute Frage, die leider gar nicht so einfach zu beantworten ist, da ein CPU-Limit auch von so vielen Faktoren abhängig ist.

Ein CPU-Limit muss nicht automatisch heißen, dass deine CPU schlecht ist. Beispiel:
Du spielst CoD auf max. Settings mit DLSS/FSR in Full HD mit einer RTX 3070/RX 6700 XT aufwärts. Deine Grafikkarte ist sehr wahrscheinlich nicht bei 100% Auslastung, sprich langweilt sich -> CPU-Limit.

Warum? Ganz einfach. Wie viele FPS du in einem Spiel hast, hängt in erster Linie von der CPU ab. Du hast also in besagtem Szenario um die 150-200 FPS, bist aber in einem CPU-Limit -> GPU langweilt sich.

Dem kann man entgegen wirken, in dem man die Auflösung hochdreht, dadurch hat die GPU mehr zu tun. Der CPU ist es nämlich relativ wumpe in welcher Auflösung du spielst. Das wird einem auch deutlich, wenn man den Thread von @HisN abarbeitet, wo man sehen kann, wie viele FPS deine CPU schafft. Ein CPU-Limit wird erzeugt und dafür wird beispielsweise auch die Auflösung runtergedreht.
 
@Drewkev Danke für deine Antwort. Ja die Basics kenne ich. Auch dass immer irgendwas limitiert ist klar und auch normal (und die Auflösungsübung habe ich ja auch durchgeführt). Das war auch quasi nie mein Problem.

Ich wollte das Verhalten der CPU verstehen und warum Einzelne Threads nicht zu 100% oder mit max. Boost laufen und ob das normal ist.
So wie @HisN das in seinem Post erklärt, (danke!)

Das heißt also, dass ich auf Grund der Werte die ich so mir anzeigen kann davon ausgehen muss, dass die CPU an ihrem (aktuellen) Limit arbeitet, wenn die Threads "einigermaßen" und mehrere auf einmal belastet sind (wenn nicht gerade alle Threads auf 10% laufen oder so).
 
  • Gefällt mir
Reaktionen: HisN
Danke für die Erklärungen. Die Info, die mir fehlte, war die neue Threadzuweisung nach Task-Unterbrechung. Ergibt zwar Sinn, bin aber nicht drauf gekommen :D
 
  • Gefällt mir
Reaktionen: EvilSquirrel und HisN
EvilSquirrel schrieb:
Was sollen so herablassende Kommentare, muss das echt sein?
Sollte nicht herablassend sein, nur lassen sich durch ein bisschen logisches denken und eigeninitiative etliche Threads sparen, und vieles ist denk ich mal in der Hinsicht selbsterklärend.
Ergänzung ()

EvilSquirrel schrieb:
Von dir sehe ich hier nur einen Post (zumindest mit dem Nutzernamen) und da erklärst du nichts sondern stellst nur was fest.
Ja der Post ist wohl verschwunden, hast recht
 
Zuletzt bearbeitet:
Zurück
Oben