Was ist ein Bottleneck?

5 Antworten

Ich zitiere mal aus einer anderen Antwort von mir zu einem ähnlichen Thema:

[...] Zudem ist ein bottleneck nichts Festes. Welche Komponente wann limitiert hängt von deiner Hardware, der Software, der Auflösung, den Einstellungen, der Szene und den Viewport ab.

Stell dir ein Frame in einem Spiel wie ein Malen-nach-Zahlen Bild vor. Die CPU muss die Szene berechnen, d.h. welches Objekt mit welchen Attributen befindet sich wo, wo sind die Lichtquellen, welche Animationen müssen ausgeführt werden, welchen Pfad darf die KI nehmen, wo müssen Kollisionen abgefragt werden, welche Schadenmodelle müssen auf welches Objekt angewandt werden usw.. In diesem Beispiel würde die CPU das Bild skizzieren und die Farbcodes für die verschiedenen Flächen anzeigen.

Ist die Szenenberechnung abgeschlossen wird das Frame zum Rendern an die GPU weitergegeben. Diese berechnet jetzt wie die komplexen Polygonmodelle innerhalb deines Viewports in einer Rastergrafik angezeigt werden, klatscht Texturen auf die Modelle, berechnet den Schattenwurf und Objektschatten von verschiedenen Lichtquellen, berechnet Sub pixel für die Kantenglättung bei MSAA und Supersample-Methoden, wendet Texturfilter an um die 2D Darstellung zu optimieren. Ist das Frame fertig berechnet werden meist noch post processing Effekte angewandt wie Weichzeichner, temporäre Kantenglättung, Blur Effekte, Godrays, chromatische Aberration oder Farbfilter. Dann wird das Bild an den Monitor ausgegeben. Im Malen-nach-Zahlen Beispiel, übernähme die GPU damit die Aufgabe des Menschen, sie malt das Bild aus.

Einer dieser Prozesse ist immer langsamer als der andere, entweder muss die GPU darauf warten, dass die CPU endlich die Szenenberechnung abschließt oder die CPU wartet darauf, dass die GPU endlich das vorherige frame gerendert hat.

Dabei ist die Last aber nicht immer gleichmäßig, es gibt feste Faktoren (z.B.:Wieviele Threads nutzt die Anwendung, in welcher Auflösung wird gespielt, in welchen Einstellungen) aber auch veränderlich (z.B. sofern sie ähnlich viele Polygone aufweisen ist es für die GPU völlig egal, ob du gerade durch einen Wald spazierst mit hunderten von Bäumen oder ob hunderte Spieler/ NPCs vor dir stehen und auf dich ballern, für die CPU ist das aber ein gigantischer Unterschied, denn für jeden NPC müsste er Logikberechnung durchführen, wie sie auf den Spieler reagieren, Wegfindungen, Kollisionsabfragen auch bei Spielern müsste er die Animationen berechnen, vermutlich physikalische Berechnung für Geschossflugbahnen, Schadensmodelle usw.), d.h. in einer Szene im Spiel kann die GPU, in der nächsten wieder die CPU begrenzen.

Fortnite z.B. ist nicht CPU fordernd. Das Gegenteil ist der Fall, da es nur auf zwei Threads läuft fordernd es die CPU nahezu gar nicht (du hast beim 3700x 16 Threads zur Verfügung). Dennoch limitiert die CPU, eben weil das Spiel nur begrenzt Ressourcen nutzten kann und somit v.a. Takt und IPC benötigt nicht hohen core count. Deine Einstellung sind auch falsch, da die GPU nicht limitiert, kannst du ohne Einbußen deiner fps die Grafik hochschrauben, du solltest aber Objekte im viewport entfernen, da diese von der CPU berechnet werden müssen (also: Sichtweite reduzieren).

In einem anderen Spiel wie BF2, Anno 1800 oder Assassin's Creed, die 16 Threads nutzten, sieht das ganze dann wieder völlig anders aus.

Wenn eine Komponente zu schwach ist, dass die andere ihre ganze Power nicht nutzen kann.

Kann man sowas 100% vermeiden? Nein.

Du kannst dein bestes geben, indem beide Komponenten in der gleichen Preisliga sind.

Außerdem kann dein Monitor deinen PC auch bottlenecken, denn eine RTX 2080 Ti und ein I9-xxxxx bringen dir auf einem FHD 60hz Monitor nichts.

MfG

Woher ich das weiß:eigene Erfahrung

Ist ein Flaschenhals.

Wenn der Flaschenhals zu dünn ist kann nicht ausreichend Flüssigkeit fließen.

Wenn die GPU nicht genug Daten von der CPU bekommt dann ist das ein Flaschenhals, oder auch umgekehrt wenn die CPU auf die GPU warten muss bis diese die Daten verarbeitet hat dann ist das auch ein Flaschenhals.

Woher ich das weiß:Berufserfahrung – Dozent f. Hardware&Softwareentwickl./Compu.-Reparaturdienst

Unter einem Bottleneck (einem symbolisch gemeinten Flaschenhals) versteht man ein eine Stelle, vor der sich Warteschlangen bilden, da alles dort durch muss, aber — wegen zu knapper Ressourcen dort — nicht schnell genug abgefertigt werden kann.

Wenn eine Komponente die andere stark ausbremmst.

Woher ich das weiß:Hobby – Dokumentationen und Artikel.