[Sammelthread] Mikroruckler - Entstehung, Benches, Einfluss von GPU-Anzahl und CPU, Lösungsansatz

1. Einleitung

Da hier im Forum das Thema Mikroruckler immer mal wieder vorkommt, die wenigsten aber genau wissen, was das ist, woher es kommt und wie man damit umgeht, eröffne ich diesen Thread.

Das soll nun aber kein Monolog werden, sondern auch euer Wissen und eure Erfahrungen sind gefragt. Vieles ist auch mir noch unklar, und wenn ich irgendwo Quatsch schreibe, wäre ich für eine Richtigstellung (aber bitte mit Erklärung und evtl. Beleg) sehr dankbar. Wer gar ein paar Benchmarks beisteuern möchte, ist herzlich willkommen, dies zu tun.

Abkürzungen

MR: Mikroruckler
SGPU: Single-GPU, Rendering auf einer GPU
MGPU: Multi-GPU, Rendering auf mehreren GPUs (Crossfire/SLI)
SFR: Split Frame Rendering, mehrere GPUs rechnen immer an einem Bild
AFR: Alternate Frame Rendering, mehrere GPUs rechnen allein an aufeinanderfolgenden Bildern


2. Mikroruckler und ihre Entstehung

Normale Ruckler (oder auch Makroruckler) enstehen, weil man zu wenig fps hat. Für einen flüssigen Bildaufbau fehlen dann Einzelbilder. Diese Ruckler können sowohl bei Single-GPU als auch bei CF/SLI auftreten.

Mikroruckler treten auf, wenn man genügend Bilder in einer Sekunde hat, diese aber nicht gleichmäßig über dieses Zeitintervall verteilt sind. Das folgende Diagramm stellt dies anschaulich dar.
Von oben nach unten: SGPU, MPUG (AFR), MGPU (SFR) - Bild von Spasstiger aus dem 3DC



MR sind ein inhärentes Problem der AFR-Rendermethode. Wird gleichzeitig immer nur ein Bild bearbeitet, wie es bei SGPU und SFR der Fall ist, werden die Bilder einfach ausgegeben, wenn sie fertig sind (ohne VSync oder Triple Buffering). Bei AFR hingegen ist Synchronisationsarbeit nötig, wie das folgende Diagramme zeigen sollen:

50fps


40fps, 33fps:


Annahmen:

  • Es dauert 10 ms, bis die Daten für ein Bild bereit sind
  • Eine GPU rechnet deutlich länger an einem Bild (GPU-Limit)
  • Die Bildaufträge werden sequentiell abgearbeitet und herausgegeben, nicht auf einmal
  • Wir betrachten nur ein kleines Zeitintervall (< 1 Sekunde)

Alle zwei Bilder (bei zwei GPUs) tritt eine größere Verzögerung ein, weil die GPUs zu schnell hintereinander angefangen haben zu rendern. Dem Rendering voran geht die Datenverwaltung der Spieleengine, Berechnungen auf der CPU, Transfers zum RAM und per PCIe zur Hauptgrafikkarte.

Die Engine weiß nicht, wie lange dies alles dauert und wie lange die GPU(s) rendern werden. Sie kann also in der Regel die Geschwindigkeit, mit der sie die Daten rausgibt, nicht passend timen.
Hierzu auch Lars Weinand von Nvidia:

‪Nvidia - Mikro Ruckler - Die Erklärung - Patrick fragt!‬‏ - YouTube

Einen wichtigen Einfluss hat die CPU, die wohl maßgeblich die Vorbereitungszeit für ein Bild bestimmt.

Allerdings muss irgendeine Synchronisation stattfinden, denn wenn man das Diagramm weiterführen würde, würde der zeitliche Abstand zwischen vorausberechneten Daten und zugehörigem Bild immer größer werden (solange man im GPU-Limit bleibt).

Man misst MR mit Frametimeabständen, also der Zeit, die zwischen der Ausgabe der einzelnen Bilder liegt. In einem Graphen sieht das dann so aus:


Quelle: PCGH

3. Einfluss der CPU

Wie schon erwähnt, liegt die Ursache der MR wohl daran, dass die Bildaufträge an die Grafikkarten zu schnell herausgegeben werden. Als Lösungsansatz sei vorweggenommen, dass man nun entweder die Aufträge vor dem Rendering oder die Bildausgabe nach dem Rendering besser timen kann.

Im Optimalfall wartet keine Komponente auf die andere:



Braucht die CPU noch länger, befinden wir uns im "CPU-Limit":



Das Rechenzeitverhältnis CPU/GPU an einem Bild ist hier wichtig, weil es darauf ankommt wie stark die o.g. Bremsung ist, was die Wartezeit und damit die Mikroruckler beeinflusst. An obigem Beispiel (selbe Framerate, immer noch 33fps) sehen wir also:


  • Braucht die CPU/Engine nur 10 ms, mikroruckelt es
  • Braucht die CPU/Engine 30 ms, mikroruckelt es nicht

Die These ist also:
Eine langsamere CPU vermindert je nach Engine/Spiel Mikroruckeln (im GPU-Limit!!!)

fdsonne und ich haben hierzu ein paar vorläufige Benchmarks gemacht. Erst möchte ich seine Werte präsentieren, da bei meinen Messungen wohl irgendwas schiefgelaufen ist und die Ergebnisse keinen Sinn ergeben (obwohl wir dasselbe gemessen haben).

Unigine Heaven, VSync aus. Linksk 4,5 GHz, rechts 2,2 GHz


Man sieht zumindest in diesem Beispiel:
Mit sinkender CPU-Leistung (Annäherung das optimale Lastverhältnis) nehmen die Mikroruckler ab!

Hier eine eigene Messung mit GTA 4. System ist ein 2600K und zwei GTX580 3GB im SLI.
Das Ergebnis ist überdeutlich. Nicht vergessen: Wir befinden uns hier trotz nur 1600 MHz aufgrund der hohen Bildqualitätseinstellungen (Auflösung!) im GPU-Limit! Die fps ändern sich nicht/kaum.



Und hier Mafia 2:


3. Einfluss der GPU-Anzahl

Bei gleichen fps sollte ein Gespann mit mehr GPUs auch stärkere Mikroruckler produzieren:



Hier ein Benchmark aus Unigine Heaven, immer mit denselben fps und anderselben Stelle:



Es ist schwierig, hier einen Trend herauszulesen. Ich schau mal, ob mein Kumpel das noch mit Mafia 2 testen kann, da sieht man es glaub deutlicher.

4. Lösungsansatz

Dass bei höheren fps die Frametimes gleichmäßiger werden, ist kein Geheimnis. Zwar hat man je nach Spiel manchmal auch noch bei 60+ fps ein unrundes Spielerlebnis, aber in der Regel ist man ab ca. 50 fps gut dabei.

Jetzt gibt es aber auch solche Leute wie mich, die sich ein Multi-GPU-System anschaffen, um möglichst maximale Einstellungen zu fahren. Also SGSSAA, Downsampling, 3DVision, Eyefinity und was es noch alles gibt. Selbst mit den stärksten Systemen kann es vorkommen, dass man deutlich unter 60 fps fällt. Dann trüben Mikroruckler massivst das Spielerlebnis. Ein halbwegs aktuelles Worst-Case Beispiel ist Mafia 2, das unter 50 fps praktisch unspielbar ist mit mehr als einer GPU.

Aber es gibt Abhilfe, und zwar in Form eines Framelimiters. Die genaue Funktionsweise kenne ich leider nicht, jedoch vermute ich stark, dass neben der Begrenzung der Framerate die x Bilder pro Sekunde gepuffert und gleichmäßig ausgegeben werden. Sehr anschaulich sieht man das auch wieder bei Mafia 2:



Ohne Limiter bewegen wir uns bei 33fps und es ist alles andere als flüssig. Mit auf 30 fps gesetztem Limiter werden sämtliche Mikroruckler eliminiert - das Spiel ist komplett flüssig. Frametimes sagen nicht die ganze Wahrheit. Manchmal kann die Verteilung derselbigen sehr gleichmäßig aussehen und doch ist es "unrund". In ausnahmslos allen Spielen, die ich getestet habe, sorgt ein fps-Limiter für ein absolut flüssiges Spielerlebnis (in meinem Rahmen von 30-40 fps, in dem ich mich auch mit einer GPU bewegen würde). Es gab sehr positives Feedback auch von anderen Leuten, die mit einem Limiter experimentiert haben.

Welche Software ist also hier zu empfehlen?
Ich kenne mehrere Programme, aber nur eines funktioniert (soweit ich es bisher ausprobiert habe) in allen APIs, in 32 und 64bit und ist in der Testversion kostenlos: Dxtory 2.0

Dxtory.com | Home

Dxtory ist eigentlich ein Captureprogramm für Video/Audio/Screenshots in Spielen, doch es hat auch einen Limiter integriert, der einwandfrei funktioniert:



Zwei sehr angenehme Eigenschaften dieser Software sind, dass man
  • das Limit völlig frei einstellen kann und nicht an 30 oder 60 fps gebunden ist
  • das Limit nur einmal pro Spiel einstellen muss, weil es eine Profilverwaltung gibt

Die Testversion hat nur eine (meiner Ansicht nach verschmerzbare) Einschränkung:
A license purchase site is displayed, when a program is terminated.
 
Zuletzt bearbeitet:
So hier sind meine Ergebnisse mit 3 GPU-s in Metro in GPU limit:

 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Erstmal danke für die sehr schöne Ergebnisse, auch wenn ich sie nicht ganz verstehe :fresse:
Das ist jetzt genau andersrum wie das, was fdsonne und ich beobachtet haben.

Allerdings hast du ja Radeons, fdsonne und ich haben Geforces. Vielleicht ist die CPU-Last in bei dir anders. Ich teste Metro auch mal, sobald ich Zeit habe.

Interessant auch, dass bei dir mit 3 GPUs MR auftreten, andere aber berichten, mit 3 Radeons tritt eine Glättung im Vergleich zu zwei GPUs auf.
 
Erstmal danke für die sehr schöne Ergebnisse, auch wenn ich sie nicht ganz verstehe :fresse:
Das ist jetzt genau andersrum wie das, was fdsonne und ich beobachtet haben.

Allerdings hast du ja Radeons, fdsonne und ich haben Geforces. Vielleicht ist die CPU-Last in bei dir anders. Ich teste Metro auch mal, sobald ich Zeit habe.

Interessant auch, dass bei dir mit 3 GPUs MR auftreten, andere aber berichten, mit 3 Radeons tritt eine Glättung im Vergleich zu zwei GPUs auf.

Möglicherweise lag diese Glättung auch daran dass man mit 3 gpu-s wieder in CPU limit war. Denn es wurde auch berichtet dass die Frames mit 3 gpu-s kaum gestiegen sind, in Metro Skalieren die 3 GPU-s aber gut.
 
Ich hab mir Metro am WE auch geholt im MM für nen 10er... Könnte das also auch mal nachtesten...
Die Frage ist, wie gut sind die Ergebnisse vergleichbar. Weil die Szenen ja nicht einfrierbar sind :( Ist halt schwer exakt gleiche Szenen zu finden.
 
Ich habe einfach den Character nicht bewegt und beim Runtertakten bin ich mit alt+tab aus dem Spiel gegangen. Somit sollten beide Szenen exakt gleich sein.
 
Ja schon klar, es geht mir eher darum, verschiedene FPS Werte für den Vergleich zu finden. Also ich hab oben in Heaven mit 30, 60 und 90 FPS getestet um zu sehen, wie sich die MR in verschiedenen FPS Bereichen verhalten. Das ganze dann wiederholt mit 4500MHz und 2200MHz... Und gar nen 1600MHz Run hinterher...

Heaven ist halt deswegen gut, weil man die Kamera einfrieren kann und dann über die Tess Regler die FPS beeinflussen kann bis es passt.
 
...und dann über die Tess Regler die FPS beeinflussen kann bis es passt.

Damit das in anderen Spielen nicht nötig ist, müsste man sich eine Stelle suchen, die schon mit dem niedrigeren CPU-Takt immer noch GPU-limitiert ist. Also erst die richtige Stelle/Einstellungen finden und dann benchen. Dann muss man sich um die fps keine Gedanken machen.

Es sei denn, man will so wie du gleich 3 fps-Werte untersuchen. Das wird dann deutlich kniffliger. Man könnte höchstens die GPU-Taktraten nach unten anpassen, dann muss man sich nichtmal bewegen oder neustarten, damit andere AA-Einstellungen über den Inspector greifen. Ob das an anderer Stelle Probleme verursacht, müsste man untersuchen. Aber bei den CPUs hat man es ja auch so gemacht - warum nicht auch mit den GPUs?

On-the-fly Veränderung der abgeforderten CPU- und GPU-Leistung wäre hier extrem nützlich. Wenn mal stufenlose Regler da sind, weiß man nie so genau, was die beeinflussen (GTA 4 z.B.). Da ist Heaven eine sehr praktische Ausnahme.

Edit:
Bei Nvidia wäre Downsampling eine schöne Möglichkeit. Vorher ein paar abgestuften Auflösungen anlegen und dann hat man im Spiel viel mehr Freiheit bei den Einstellungen (zum Ändern der Auflösung muss man idR das Spiel nicht neustarten).
 
Zuletzt bearbeitet:
Stimmt die GPU Taktraten könnte man anpassen... Man müsste mal probieren ob das den von mir angepeilten FPS Bereich schafft. Könnte aber schwer werden. Schließlich müsste im vollständigen GPU Limit quasi bei 1/3 GPU Takt 30FPS kommen um annähernd 90FPS bei vollem GPU Takt zu bekommen.

Na mal schauen, ich werd mich mal dran versuchen...
Hab aber das Game wie gesagt noch nicht angefangen. Muss also von ganz vorn beginnen ne Stelle zu suchen. Mal schaun.
 
So hier sind meine Ergebnisse mit 3 GPU-s in Metro in GPU limit:


Das ist aber echt krass scheiße! :kotz:
Angeblich sollten doch die MR fast wech sein mit drei AMD GPUs!

Kannst du das auch mal mit Vsync und oder FPS limiter testen??

Ich glaube auch das die MR erst wech sind wenn man mit Vsync 60FPS hat und nicht drunter einbricht! Weil ich habe das gefühl das sobald ich mit Vsync weniger als 60FPS auch MR spüre aber solange ich nicht unter diese 60FPS komme alles in butter ist!
Genauso wenn ich Vsync + FPS limiter mit sagen wir mal 40FPS zocke ist alle ok solange ich nicht unter diese 40FPS komme!
 
Zuletzt bearbeitet:
Das kann ich bestätigen mit dem Limiter. Wenn ich ihn auf einen gewissen Wert einstelle, MUSS ich diese fps immer halten können. Also wenn ich irgendwo 35fps minimum schaffe, darf ich nicht auf 40 limitieren.
 
Oder ein intelligenter Puffer, wie ihn zumindest Nvidia (mit sehr mäßigem Erfolg) einsetzt. Aber es mikroruckeln ja auch nicht alle Spiele. Crysis läuft wohl sehr smooth zum Beispiel.
 
Bin ich mal gespannt, wie es sich macht. Seit dem G80 kein SLI mehr gefahren, nur kurz Crossfire getestet mit der HD5xx0, das war schon nicht mehr spielbar, zumindest in BC2. Irgendwo habe ich was gelesen mit Vsync und 120Hz wäre eine Lösung?
 
Oder ein intelligenter Puffer, wie ihn zumindest Nvidia (mit sehr mäßigem Erfolg) einsetzt. Aber es mikroruckeln ja auch nicht alle Spiele. Crysis läuft wohl sehr smooth zum Beispiel.

Meinst du Crysis 1 oder 2?
Laut Interview mit NV funkt nämlich der Puffer in Crysis 1 ausnahmsweise nämlich nicht wie er soll ;) Was man seitens NV auf die enorme Datenflut in dem Spiel schiebt. Bzw. auf die Engine, welche für PCs beim Release von Crysis ausgelegt wurde und somit zwar heute schneller läuft, aber es in der Verwaltung eben hapert...

Bin ich mal gespannt, wie es sich macht. Seit dem G80 kein SLI mehr gefahren, nur kurz Crossfire getestet mit der HD5xx0, das war schon nicht mehr spielbar, zumindest in BC2. Irgendwo habe ich was gelesen mit Vsync und 120Hz wäre eine Lösung?

Also ich kann BC2 ziemlich ordentlich mit zwei 470ern spielen... MR keine Spur... Ganz anders eben der Heaven Bench. Wo selbst bei 60FPS+ extreme Hänger drin sind. Was auch die Frametimes bestätigen.
 
Meinst du Crysis 1 oder 2?
Laut Interview mit NV funkt nämlich der Puffer in Crysis 1 ausnahmsweise nämlich nicht wie er soll ;) Was man seitens NV auf die enorme Datenflut in dem Spiel schiebt. Bzw. auf die Engine, welche für PCs beim Release von Crysis ausgelegt wurde und somit zwar heute schneller läuft, aber es in der Verwaltung eben hapert...

Es kommt sicher auch auf die Szene an. Ein Kumpel kann Crysis 1 ohne MR spielen (ich glaube sogar mit 4 Karten). Die Frametimes, die er mir gezeigt hat, waren einwandfrei.
 
@scully

Tearing ist so minimal mit 120Hz, dass ich nur noch ohne VSync spiele. Bin selbst überrascht, dass es so gut funktioniert. Dann war das wohl nur Schmarn mit dem Bezug auf MR, konnte mir das auch nicht erklären.

@fdsonne

Zum Glück ist Heaven kein Spiel ^^
 
logisch ist kein Spiel, sollte nur das krasse Gegenbeispiel darstellen ;)
Irgendwo hab ich mal was gelesen von, das NV dort, wo es auf Performance ankommt, scheinbar die MRs deutlich raushängen lässt und dort, wo es weniger auf absolute Performance ankommt, mit dem Puffer gut gegenwirkt.
Das deckt sich auch mit meinen Messungen... Die Games, die oft als Benches rangezogen werden, zeigen auch verstärkt MRs. Andere weniger interessante Games fürs Benchen teils sogut wie gar nicht... Synthetische Benches ala 3DMark oder Heaven sind auch ganz schlimm...
 
Ich würde stumpf behaupten das man die MR nur killen kann wenn man die FPS per Limiter abregelt und zwar so das man auf keinen fall unter diese FPS kommt die man abregelt dann noch Vsync dazu und es sollte passen!
z.B. wenn man min 65FPS erreicht und daher bei 60FPS limitiert sollten keine MR auftreten!
 
Zuletzt bearbeitet:
das mag sein... Aber das ist nicht Sinn der Sache... Ich denke hier sind die Hersteller gefragt. Machbar ist das syncronisieren der Frametimes durchaus. Ich wüsste nix, was dagegen spricht.
 
das mag sein... Aber das ist nicht Sinn der Sache... Ich denke hier sind die Hersteller gefragt. Machbar ist das syncronisieren der Frametimes durchaus. Ich wüsste nix, was dagegen spricht.

Warscheinlich die schlechtere Skalierung und mehr input lag.

---------- Beitrag hinzugefügt um 23:30 ---------- Vorheriger Beitrag war um 23:28 ----------

Das ist aber echt krass scheiße! :kotz:
Angeblich sollten doch die MR fast wech sein mit drei AMD GPUs!

Kannst du das auch mal mit Vsync und oder FPS limiter testen??

Ich glaube auch das die MR erst wech sind wenn man mit Vsync 60FPS hat und nicht drunter einbricht! Weil ich habe das gefühl das sobald ich mit Vsync weniger als 60FPS auch MR spüre aber solange ich nicht unter diese 60FPS komme alles in butter ist!
Genauso wenn ich Vsync + FPS limiter mit sagen wir mal 40FPS zocke ist alle ok solange ich nicht unter diese 40FPS komme!

Metro hat in den Optionen kein VSync, womit könnte man noch den fps begrenzen, ich kenne grade keine Tools.
 
Warscheinlich die schlechtere Skalierung und mehr input lag.

---------- Beitrag hinzugefügt um 23:30 ---------- Vorheriger Beitrag war um 23:28 ----------



Metro hat in den Optionen kein VSync, womit könnte man noch den fps begrenzen, ich kenne grade keine Tools.
Treiber!! Und dann noch das Downsampling tool das kann auch die FPS limitieren!
 
Da ich auf höhere Qualitätseinstellungen nicht verzichten will, muss ich zwangsläufig einen Limiter verwenden. Ohne spiele ich überhaupt nicht mehr. Es mag nicht die optimale Lösung sein, weil man Flüssigkeit einbüsst (ich stelle meistens auf 35-40), aber mir persönlich reichen diese fps bei super BQ aus. Ist halt nicht jedermanns Sache.
 
dann mir Radeon Pro ein profil erstellen!
 
Hallo,
ich hab mal eine Frage an die Intel CPU user, ich bin da nicht so bewandert:
Wie schnell bzw gut funktioniert denn die Fehlerkorrektur?
Schnellere Prozessoren durch mehr Rechenfehler? - Nachrichten bei HardTecs4U

Beim neuen 3DM11 gibt es beim Graphics Test Nr#4 eine Stelle wo die FPS extreme abnehmen.
Das müsste bei der großen Skulptur sein, das finde ich immer noch flüssig, weil keine FPS Drops auftreten.
Müsste ich mal die Frametimes messen...

MfG
 
Zuletzt bearbeitet:
So hier sind nochmal Frametimes in Metro mit 60fps limiter:



Wie man sieht hat man mit Limiter keine Probleme mit Mikroruckler
 
Ah, den Limiter-Part wollte ich ja auch noch einbauen :)
Kommt die Woche.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh