Warum bringt Overclocking beim Prozessor etwas obwohl er nicht ausglastet ist?

hutschmek

Komplett-PC-Aufrüster(in)
Hallo,
hätte da mal eine Frage die mich schon längere Zeit beschäftigt aber habe bisher nichts im Internet darüber finden können.
Ich hatte jetzt schon öfters die Situation, das wenn ein Spiel mal nichts so läuft wie ich es gern hätte (Frame mäßig), dass das Übertakten der GPU nichts bringt und somit logischerweise der Mallus bei der CPU liegt.
Also rauf mit dem Takt des Prozessors per Multiplikator und schon hat man mehr FPS.
Was ich aber nicht so ganz verstehe ist, das der Prozessor (aktuell ein I7 3930K) ja gar nicht bei 100% Auslastung ist (kann ich im Screen meiner G19 Tastatur immer mitverfolgen).
Darum wäre ich sehr froh wenn mir Bitte jemand erklären könnte warum das Übertakten einer CPU etwas bringt obwohl sie ja gar nicht am Anschlag ausgelastet ist.
 
Dein i7 hat 6 Kerne. Also ist er nur zu 100% ausgelastet, wenn alle Kerne voll ausgelastet sind.

Kann ein Spiel jedoch nur 2 Kerne verwenden, liegt die Auslastung durch das Spiel bei 33%. Mit System sind es dann vielleicht 50%. Insbesondere Spiele die nur wenige Kerne ausnutzen profitieren stark von hoher IPC.

Also einfach mal mit Prozessexplorer schauen, wie viele Kerne ausgenutzt werden.
 
Weil ein CPU-Limit nicht erst bei 100% CPU-Last entsteht.
Liegt daran dass selbst moderne Spiele nicht alle vorhandenen Kerne ausnutzen.

Starte Prime mit einem Worker. Das ist ein 100%iges CPU-Limit. (Damit simulieren wir ein Spiel, das nur einen Thread beherrscht, das sind übrigens geschätzte 90% aller Games, die so aussehen^^)
Schau Dir die Auslastung im Task-Manager an.
Was passiert: Windows lässt an diesen EINEM Thread ALLE Kerne (ein bisschen) Arbeiten. Und zwar innherhalb eines Anzeigezyklus vom Taskmanager. Da macht 100ms der Kern Null etwas, dann 100ms der Kern Eins, dann weitere 100ms der Kern vier ....


cpu-limit_ein_thread_3kjcs.jpg

Wenn man das verbietet, dann sieht man aber was wirklich passiert:
primetvu8j.jpg

Und davon lassen sich sehr viele User sehr verwirren :-)

Sobald Du meine angehängten Bild verstehst, verstehst Du die ganze Problematik.
 
Zuletzt bearbeitet:
Ich wills einfach mal Plastisch darstellen dann wirds denke ich schnell klar.

Angenommen, du hast 6 Autos. Diese repräsentieren deine 6 Kerne.
In jedes deiner Autos passen 10 Kästen Bier. Wenn ein Auto 10 KLästen befördert ist es zu 100% ausgelastet.

1. Aufgabe: Bringe 6000 Kästen Bier vom Lager zum Rockfestival!
--> Du (und deine 5 Freunde) laden deine Autos voll und fahren los, hin und her. Ihr müsst 100x mit allen Autos fahren bis alle Kästen da sind, die Auslastung war insgesamt 100% weil immer alle Autos voll waren und am fahren.

Das geschieht, wenn du etwa ein Renderbild erstellst (Cinebench zum Beispiel). Die Aufgabe ist klar, sehr intensiv und super parallelisierbar. Die CPU läuft auf 100%.

2. Aufgabe: Bringe das Leergut während des Rockfestivals zum Recycling!
--> Du (und deine 5 Freunde) sammeln leere Bierflaschen ein und immer dann wenn ein Auto voll ist fährt derjenige los.
Nun kommen nicht immer gleich viele Flaschen an weil Leute unregelmäßig trinken. Manchmal kommen so viele gleichzeitig, dass die Autos nicht ausreichen. Manchmal kommen aber so wenige, dass nur ein Auto fahren muss und die anderen unnötig sind. Vielleicht muss man auch noch verschiedene Flaschen an verschiedene Ziele fahren und auch mal mit nem halb leeren Auto fahren usw.

Das geschieht, wenn du spielst. Die Aufgabe ändert sich ständig weil das Spiel (und du) dynamisch ist. Viele Dinge müssen gleichzeitig bedacht werden und manche Dinge müssen auf andere warten (die Reaktion des Spiels kannst du erst berechnen nachdem der Spieler eine Aktion gemacht hat... du kannst ja nicht wahrsagen).
All diese verschiedenen Effekte führen dazu, dass die CPU nicht voll ausgelastet werden kann.


Was du jetzt mit OC machst ist, schnellere Autos zu verwenden (Chiptuning halt :ugly:). Damit kannste alle Flaschen schneller dahin bringen wo sie hin sollen, dein problem aus Aufgabe 2 löst das aber nicht. Trotzdem gehts schneller. ;)
 
Also mir ist schon klar das die Spiele nicht alle 6 Kerne auf einmal ausnutzen. Aber nehmen wir jetzt mal an ein Spiel nutz 4 davon. Ich sehe ja im Display meiner G19 mit Hilfe von CoreTemp die Auslastung der einzelnen Kerne und da ist keiner auch nur annähernd an 100% auslast. Sollte dann nicht erst eine Erhöhung des Taktes etwas bringen wenn die 4 Kerne die das Spiel nutzt auf 100% sind.
Sorry ich blicke es irgendwie immer noch nicht so ganz. Liegt aber auch evtl daran das es jetzt fast 2 Uhr ist und ich eigentlich so langsam mal ins Bett sollte ^^
 
Wenn Dein Spiel tatsächlich 4 Kerne voll nutzen würde, dann wärst Du spätestens bei 100*4/12 Auslastung auf der G19 Anzeige im CPU Limit. Das kommt doch gut mit Deinen Beobachtungen hin. Weiß jetzt gar nicht warum Dich das so verwundert.
 
Alk ein Punkt hast du vergessen. Da ja alle Bier trinken können nicht immer alle fahren. Somit hat man zwar 6 Autos die man gerade befüllen könnte aber keine 6 Fahrer. 2 Autos bleiben also stehen und die Arbeit muss von 4 Autos erledigt werden.
 
Also mir ist schon klar das die Spiele nicht alle 6 Kerne auf einmal ausnutzen. Aber nehmen wir jetzt mal an ein Spiel nutz 4 davon. Ich sehe ja im Display meiner G19 mit Hilfe von CoreTemp die Auslastung der einzelnen Kerne und da ist keiner auch nur annähernd an 100% auslast. Sollte dann nicht erst eine Erhöhung des Taktes etwas bringen wenn die 4 Kerne die das Spiel nutzt auf 100% sind.
Sorry ich blicke es irgendwie immer noch nicht so ganz. Liegt aber auch evtl daran das es jetzt fast 2 Uhr ist und ich eigentlich so langsam mal ins Bett sollte ^^

Dann gehen wir doch mal etwas näher auf "Auslastung" ein...

Wenn du ein Spiel hast, das 4 Threads (nicht:Kerne) anspricht/auslastet hast du bei einem 5820K eine CPU Auslastung von 33% (da dieser 12 Threads gleichzeitig bearbeiten kann durch SMT - in obigem Beispiel sind das 6 Autos mit jeweils einem Anhänger dran).

Die Auslastung die dir im Task-Manager und in Tools angezeigt wird hat streng genommen aber nicht mal was mit der realen Belastung der CPU zu tun, denn diese Kennt Windows gar nicht. ;-)
Was da angezeigt wird ist das Verhältnis von der maximal möglichen Befehlsanzahl die der Scheduler pro Sekunde verarbeiten kann zur aktuell anliegenden. Wie viel Arbeit die CPU tatsächlich mit den Aufgaben hat spielt keine Rolle. Wenn ein CPU-Kern beispielsweise 1000 Aufgaben pro Sekunde annehmen kann (stark vereinfacht, es sind natürlich sehr viel mehr und die Zahl ist nicht konstant) und Programme ihm 500 Aufgaben in einer Sekunde geben würde eine Auslastung von 50% angezeigt. Dass die 500 Aufgaben alle "Berechne 0+0" lauten und die CPU das Ergebnis "0" nach einem einzigen Taktzyklus hat und 99,9% der Zeit mit nichtszun/Leerzyklen verbringt "weiß" die Auslastungsanzeige nicht.

Das ist der Grund, warum die "100%" Auslastung von Cinebench beispielsweise sehr viel weniger Abwärme erzeugt als die "100%" Auslastung von Prime95. Letzteres Programm stellt einfach komplexere Aufgaben, die mehr Teile der CPU stärker belasten bei jedem einzelnen Schritt. Versteife dich also nicht so extrem auf Auslastungsanzeigen, die sind wenn überhaupt nur ein grober Anhaltspunkt. Wie oben schon gesagt wurde kann eine CPU schon mit einer Auslastungsanzeige von 10% komplett am Anschlag sein wo sie in anderen Anwendungsgebieten bei 90% Anzeige noch Luft nach oben hat.
 
Dieser Bier Quatsch kann doch nicht als Vergleich dienen - ohne zu Wissen wie viele Flaschen in einer Kiste drin sind.

@ TE

Dir muss bewusst sein das die "Auslastung" die bei der GPU und CPU angezeigt wird nur ein theoretischer Wert ist.

Die Auslastung, als Beispiel 100%, die du siehst bedeutet nichts anderes das die CPU / GPU die maximalen Befehle pro Arbeitszyklus bekommt die sie "aufnehmen" kann. Wenn eine CPU / GPU zu 100% ausgelastet sind kann sie keine neuen Befehle mehr annehmen.

100% sind aber auch nicht 100%. Prime, Linx und co erzeugen zwar eine 100%ige Auslastung aber es gibt erhebliche Unterschiede. Das siehst du am besten wenn du mal auf die Temperatur / Spannung achtest die in diesem Moment anliegt.

Anders rum bedeutet es aber auch das overclocking etwas bringt wenn eine CPU nur zu 30% ausgelastet ist ( WoW war da nen schönes Beispiel für ). Es kann z.B. sein das bestimmte Funktionseinheiten in dieser CPU zu 100% ausgelastet sind, andere aber nur zu 20%. Das wird dann einfach als 50% Auslastung total interpretiert und man ist im CPU Limit obwohl es nicht danach aussieht...

Verstanden?

Edit: Alk war 13 Sekunden schneller!
 
Das war wohl mein Denkfehler denn ich dachte die Angaben die gemacht werden sind als reell anzusehen. Jetzt wird mir das schon sehr viel klarer.
Vielen Dank für die vielen netten Antworten.
 
Grob technisch gesagt, sinken mit höherem Takt auch die Latenzen (Zeit zwischen den Befehlen, grob: Zeit zwischen den einzelnen Taktsignalen)

Ist die Taktfrequenz höher, werden demnach die benötigten Daten schneller durch die CPU "gedrückt"
 
Zurück