[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:
Inoffiziell - wohl spätestens ab 295.xx offiziell (soweit ich das mitbekommen habe, gab es in diesem Asus Alpha (älter als der 290.53er) ja einen Eintrag, auch wenn noch ohne Funktion).
Aber das ist ja eh egal, hauptsache es geht schon. :d

MfG
Edge
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
grüße. ein freund von mir hat ab und zu mikro ruckler in BF3. aber nur ganz sporadisch

sein system

Athlon II X4 @ 3,42 ghz
4 GB DDR2
AMD HD6870 1GB

er spielt auf Ultra Details mit AA auf 2 und AF auf 1 in der auflösung 1920x1080

er im durchschnitt hat er 40-60 fps jeh nach map.

doch alle 20 sec ca. hat er ganz kurz mal nur einen Frame.
er beschreibt es so als bliebe in diesem kurzen moment das spiel kurz stehen.

woran kann dies liegen ?
 
vram zu Ende..dann leert die Karte und die FPS gehen wieder hoch, mit den Detail etwas runter gehen.
 
vram ist der grafik karten ram ? soll er also details auf medium stellen oder eher auflösung auf 1680x1050 gehen ? weil mit meiner gehen 6870 geht das.
 
ja, muß er testen was besser ist..medium oder Auflösung, event. auch beides...
 
also er hat die lags selbst auf low details 1280x1024. woran kann dies liegen ?

vorher mit seiner HD4890 die drin war, hatte er diese Ruckler nicht.
 
Kann auch am Prozessor liegen. JKlingt erstmal komisch, aber bei mir war es so.
Habe meinen Phenom X4 810 durch einen Core i5 2500k ersetzt und nun habe ich keine Mikroruckler mehr.
Habe eine GTX 570.

EDIT: Wenn er vorher die Ruckler mit gleichem Prozessor nicht hatte schließe ich oben genannten Grund aus.
 
also
X4 & HD4890 low details 1280 = flüssig (20 fps)
X4 & Hd6870 low details 1280 = mikro ruckler (70 fps)

logik ?

---------- Post added at 15:47 ---------- Previous post was at 15:29 ----------

also er hatte mit seinem X4 und der 4890 bei SC2 auf High keine Lags und keine V sync probleme
jetzt hat er mit der neuen karte auf Ultra Lags und v sync probleme.

wenn er Scrollt sehen die bilder so aus. http://www.nhancer.com/help/images/VSync.png
 
Zuletzt bearbeitet:
Das sind aber jetzt nicht die Mikroruckler, um die es hier in diesem Thread eigentlich gehen soll, nämlich die durch AFR bedingten. Vielleicht machst du ein extra Thema auf, da lesen auch sicher mehr Leute mit.
 
Hallo der Max

ich bin der "glückliche" Besitzer einer PowerColour6870x2.

Leider ist bei BF3 kein flüssiges Spielen damit möglich.
hab aber bisher immer ohne Vsync gespielt.

Was wäre denn die beste Lösung ?
VSync an + Framelimiter?

hab vorher mit DxTory experimentiert,Limiter auf 60 FPS gesetzt(Monitor ebenfalls 60 Herz),allerdings war das Spiel dann auf Grund von "Schlieren" auch kaum spielbar (VSync war aus). Weiß jemand warum ?
 
Also die besten Ergebnisse habe ich in BF3 mit V-Sync ohne Framelimiter erreicht.
Hatte vorher einen Framelimiter von 118 drin.
Dieser soll bei V-Sync für einen geringeren Inputlag sorgen, der bei V-Sync eben auftritt.

Aber in BF3 ist es lustigerweiße so das ohne Framelimiter kaum Inputlag auftritt.

mfg
 
Interessant, SLI-Microruckler entstehen ja oft bei Framedrops .. Deswegen fahre ich mit Framelimiter auf 58 am Besten. Vsync brauch ich dann nimmer, da fast 60Hz - aber ohne Inputlag.
118 hätte ich auch gerne konstant mit passenden Monitor, aber welches Grafiksetup schafft das?!
 
BF3 Ultra Settings, 2048x1152, 118 Min-FPs??

Die Lösung

1.jpgGeforce_GTX_690_Quad_SLI_Performance.jpg
 
Zuletzt bearbeitet:
Ja ok - da glaub ich die stabilen 118 Min-FPS, aber 2k ist es mir nicht wert. ;)
Dann erst nächstes Jahr.
Zudem glaub ich, droppt Quad-SLI ab und an noch mal unter 118. Oder? Mach doch mal Fraps Messungen.. Multiplayer mit Action. Wäre ja mal interessant..
 
Zuletzt bearbeitet:
mit meiner 6870x2 ist BF3 uaf jeden Fakk eine Katastrophe,schon bei hoch fängt es an zu ruckeln
ich hoff die machen da noch was,oder hat wer noch ne idee woran es lieen könnte ?
 
Das ist doch nix.. inGame inAction, mit Fraps aufzeichnen, ... ein Screenshot sagt nix aus. (auch wenn 92 durchs Scope recht gut wäre^^)
Frameverlauf und Frame-Abstände mit Fraps mal mittracken :d
 
Zuletzt bearbeitet:
Moin,

es ist vollbracht, dass System ist fast komplett:


Habe gestern mal ne Runde BF 3 angezockt, hatte dabei aber das Gefühl, dass es doch etwas ruckelig ist. Ich habe mich über SLI schon umfassend belesen, trotzdem frage ich nochmal: Muss ich noch irgendwelche Einstellungen tätigen, SLI-Profile erstellen, bearbeiten oder den SLI Rendering Modus ändern?! Das SLI habe ich natürlich erstellt.

Edit: Unterbau ist ein 3930K stock, damit läßt sich ein CPU-Limit wohl ausschließen.
 
Zuletzt bearbeitet:
Für BF3 nicht

Und das CPU-Limit kannst Du Prüfen. Das musst Du nicht vermuten.


Gerade bei BF3 geht da einiges. Besonders bei vollen 64er Servern und CPU lastigen Maps

3930k@4.6


3930K@5Ghz


Ob 3930K oder 2600K macht übrigens bei BF3 keinen Unterschied
 
Zuletzt bearbeitet:
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