CapFrameX - Capture und Analyse Tool

ZeroStrat

Lt. Commander
Dabei seit
Nov. 2017
Beiträge
1.488
Update vom 24.05.19 - CX mit eigener Capture Page

Hallo ComputerBase-Community,

ich habe in den letzten Monaten ein eigenes Frametime Capture und Analyse Tool entwickelt, das im Kern auf PresentMon aufsetzt.

Code + Infos auf GitHub: GitHub - DevTechProfile/CapFrameX: Frametime analysis tool
Offizieller Download-Link: Releases . DevTechProfile/CapFrameX . GitHub
ComputerBase Download-Link: https://www.computerbase.de/downloads/benchmarks/capframex-tool/

Warum habe ich die Zeit investiert, um ein eigenes Tool entwickeln?

Das Ziel war es, ein hoch genaues, zuverlässiges und komfortables Tool zu schaffen, was es mit der Zeit tatsächlich geworden ist.

Afterburner bietet ebenfalls vergleichbare Möglichkeiten, wenngleich der Analyseumfang geringer ist als bei CapFrameX. Das größte Manko ist die Mittelwertbildung über das eingestellt Sampling-Intervall. Dies kann beispielsweise zu Inkonsistenzen der Art führen, dass der Min-Wert größer ausfällt als das 0.1% Quantil. Um das zu umgehen, müsste das Sampling-Intervall auf 5ms, besser sogar 2ms eingestellt werden. Das kann allerdings einen negativen Einfluss auf die Gaming-Performance haben.

Ähnliches lässt sich beim Adrenalin Treiber für AMD Grafikkarten beobachten. Ein Sampling-Intervall von 2ms kann teils negative Auswirkungen auf die Performance haben.

Was ich hier erschaffen wollte, ist ein Tool, dass alle gängigen 3D APIs unterstützt und möglichst immer zuverlässig funktioniert , auch wenn unterschiedlichste Spiele gebencht werden. Alle interessanten Performance-Parameter sollen berechnet werden können und zwar konsistent und transparent. Der Quellcode ist öffentlich zugänglich und steht damit zur allgemeinen Diskussion. Alle Werte werden nach korrekten mathematischen Methoden berechnet. Durch den Open-Source Ansatz ist alle stets überprüfbar.

Das Tool kann von Profis eingesetzt werden, die ihre Benchmarks hochpräzise erstellen und komfortabel verwalten wollen. Alle Daten aus den Aufzeichnungen können per Kontextmenü ausgewählt und in die Zwischenablage kopiert werden, so dass ein Export nach Excel einfach und zügig durchgeführt werden kann.

Ich möchte ausdrücklich, dass CapFrameX ein Community-Projekt ist, daher ist konstruktive Kritik an dem Tool und Vorschläge für Verbesserungen immer gerne gesehen!

Bugs dürfen natürlich gerne hier oder auf GitHub (Issue) berichtet werden. Habt ihr Fragen? Ich beantworte sie gerne.

Viel Spaß beim Benchen!

Liste der Features für das nächste Release:
  • Redesign Comparsison Page

Record Liste
Diese Liste befindet sich immer im linken Bereich, egal in welchem View man sich gerade befindet.

Hier sind die Aufnahmen zu sehen, die man mit CapFrameX (oder auch mit OCAT) gemacht hat. Der Ordner wird dabei konstant überwacht und neu aufgenommene Benchmarks werden sofort an oberster Stelle eingefügt.
Im unteren Bereich gibt es Eingabefelder für die CPU und die GPU, die automatisch gefüllt werden und nach Bedarf verändert werden können. Über die Buttons neben den Zeilen kann der ursprüngliche Inhalt jederzeit wiederhergestellt werden.
Zusätzlich kann man jede Aufnahme mit einem eigenen Kommentar versehen, um die Aufnahmen von verschiedenen Spiele Settings oder OC Einstellungen auseinander halten zu können.

Nun zu den einzelnen Views:

Capture View
Mit dieser Seite startet CapFrameX.
Hier können die Einstellungen zum Aufzeichnen von Benchmarks getätigt werden. Auch funktioniert die Benchmark Funktion aktuell nur, solange man sich in diesem View befindet.

788093


Ganz oben gibt ein Infotext Auskunft über den aktuellen Status des Capture Service.

Darunter befindet sich die "Running processes" Liste. Hier tauchen automatisch alle laufenden Prozesse auf, die aufgenommen werden können.

Darunter können die Einstellungen für den Hotkey, die Dauer der Aufnahme (0=unbegrenzt) und die Art der Rückmeldung ("Voice", "simple" und "none") festgelegt werden.

Ganz unten kann man einen Logger ausklappen, der genauere Infos zu den Ereignissen ausgibt, wie z.b. Start und Stop Zeitpunkt der Aufnahme, Länge der Aufnahme ect.

Mit Betätigung des Hotkeys wird eine Aufnahme gestartet und kann, unabhängig von der eingestellten Zeit, auch wieder gestoppt werden.
Da der Capture Service nur einen Prozess zuverlässig erfassen kann, funktioniert dies nur dann automatisch, wenn genau ein Prozess in der Liste vorhanden ist.

Die beiden abweichenden Szenarien (kein Prozess und mehr als ein Prozess in der Liste) werden dem Nutzer beim Drücken des Hotkeys durch eine Sprachansage mitgeteilt und die Messung wird vorerst nicht gestartet.

Sollte mehr als ein Prozess auftauchen, muss erst einer der Prozesse manuell ausgewählt werden, damit man die Aufnahme starten kann. Der Infotext gibt einem hier ebenfalls diese Anweisung.


Um diesen Fall zu vermeiden, da er ein Minimieren des Spiels erfordern würde, gibt es die Ignore Liste, die über die Schaltfläche im unteren Bereich der Running processes Liste aufgeklappt werden kann.

788099


Hier stehen alle Prozesse drin, die man nicht erfassen möchte.
Beim ersten Start von CapFrameX sind hier bereits viele Prozesse integriert, die Liste der laufenden Prozesse sollte also entweder ziemlich übersichtlich oder sogar bereits komplett leer sein.
Weitere ungewünschten Prozesse können dann ausgewählt und mit den Pfeil Buttons in die Ignore Liste verschoben und auch wieder von dort entfernt werden.

Sobald die Ignore Liste mit allen ungewünschten Prozessen gefüllt ist, muss man sich um nichts mehr kümmern, man startet einfach ein beliebiges Spiel und drückt den Hotkey zum Aufnehmen.
Und sollte zwischendrin doch noch mal ein Prozess auftauchen, bekommt man das über die Sprachmeldung mit.

Single Record View
Hier werden die getätigten Messungen ausgewertet.

788094


Im oberen Bereich kann man zwischen Frametime Graphen, FPS Graphen, und den L-Shapes(Perzentil Verteilung der Frametimes) wählen. Die genauen Frametime- und Zeitwerte können dabei auch per Rechtsklick in die Zwischenablage kopiert werden, um sie anderweitig auszuwerten.
Im unteren Bereich sieht man verschiedene Performance Parameter, die ebenfalls per Rechtsklick in die Zwischenablage kopiert werden und über die Data/Chart Settings nach Beleiben angepasst werden können.

788095


Daneben zeigt ein Kuchendiagramm den Anteil der Zeit, in der die Frametimes 2.5x höher als der Durchschnitt waren, das Spiel also merklich geruckelt hat.
Oben rechts befindet sich noch ein Screenshot Button, mit dem man diese Ansicht (ohne die Record Liste links) als PNG Datei abspeichern kann.

Darüber befindet sich ein globales Optionsmenü
788096


Moving average window size = Die Spanne der Frames, mit der die average Linie beim Frametime Graphen berechnet wird.
Stuttering factor = Der Faktor, um den ein Frame die durchschnittliche Frametime überschreiten muss, bevor er als Ruckler betrachtet wird.
Observed directory = Das Verzeichnis, in dem die Aufnahmen gespeichert werden oder OCAT Aufnahmen hineingezogen werden können.
FPS values rounding digits = Die Anzahl der Nachkommastellen bei den Performance Parametern.
Screenshot directory = Das Verzeichnis, in dem Screenshots gespeichert werden.

Record Comparison View
Hier können mehrere Messungen miteinander verglichen werden.

788097


Der rechten Liste kann man bis zu 7 Messungen per Drag and Drop oder per Doppelklick hinzufügen. Oberhalb der Liste gibt es Optionen um die Beschriftung der Messungen zu ändern(Datum/Zeit, CPU, GPU, Custom Comment) und zwischen absoluten FPS Werten und relativen Prozentwerten zu wechseln.

Im Diagramm können die Frametime Graphen und die L-Shapes miteinander verglichen werden, ein Mouseover über die Einträge in der Liste hebt den jeweiligen Graphen hervor.
Unten werden Balkendiagramme angezeigt, die die Average, P1 und P0.1 FPS darstellen.

Report View
Die Report View ist eine simple Ansicht, um alle in den Messungen enthaltenen Daten kompakt darzustellen. Auch hier können die Daten wieder mit einem Rechtsklick in die Zwischenablage kopiert werden.

788092


Synchronization View
Auf der Synchronization View ist es möglich, die Funktionsqualität des eigenen Monitors bzw. dessen Sync-Technik zu überprüfen. Das Ziel einer adaptiven Sync-Technik wie FreeSync oder G-Sync ist es, dass die Frames mit möglichst wenig Verzögerung auf dem Monitor angezeigt werden, wenn sie die Render Pipeline verlassen. Deswegen sollten die Kurven "Frametimes" und "Display changed times" idealerweise nahezu gleich aussehen. In diesem Fall folgt die Bildaktualisierung des Monitors den Frametimes des Systems adaptiv, was zu einem flüssigen Spielerlebnis führt.

Das Histogramm im unteren Bereich zeigt die diskrekte Verteilung der Bildaktualisierungszeiten. Unten rechts befindet sich ein Kuchendiagramm, das anzeigt, wie viele Frames "gedroppt", also letztlich nicht angezeigt wurden.

788098
 
Zuletzt bearbeitet:

ZeroStrat

Lt. Commander
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
1.488

killertomate285

Lt. Commander
Dabei seit
Mai 2011
Beiträge
1.162
Nunja ich bin gerade auf Arbeit und kann das Programm nicht testen. Das werde ich mal tun und die Feedback geben.

Das ich damit nichts anfangen kann meinte ich so, das ich sehr selten benche, meistens nur beim Übertakten oder beim ausloten der Grafikeinstellungen wenn ich ein neues PC Spiel installiere. :D
 

ZeroStrat

Lt. Commander
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
1.488
@killertomate285: Ok, so hast du es gemeint. Wenn du selten benchst, kannst du die Software natürlich auch nutzen. Das Schöne ist, dass die Installation bei OCAT und CapFrameX klein ist. Es werden keine Dienste oder Updatetrigger gestartet. Die Software tritt nur in Erscheinung, wenn man sie wirklich braucht.
 

Kuomo

Ensign
Dabei seit
Apr. 2018
Beiträge
194
Ist das Echtzeit, gar ein Overlay, oder lässt es "nur" Logs schön aussehen? ;)
Habe mich bisher mit OCAT null beschäftigt.
 

ZeroStrat

Lt. Commander
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
1.488
Ist das Echtzeit, gar ein Overlay, oder lässt es "nur" Logs schön aussehen? ;)
Habe mich bisher mit OCAT null beschäftigt.
OCAT und CapFrameX arbeiten Hand in Hand. OCAT zeichnet die Logs auf und CX liest die Daten ein wertet sie aus. Es ist schon ein wenig mehr als nur eine hübsche Darstellung. ^^

Es gibt eine komplette Analyse einer Aufzeichnung. Es gibt Vergleiche mit benutzerdefinierten Kommentaren, Systeminfos, L-Shape Kurven für Glattheitsanalysen, Stuttering Parameter, ein adaptives Streuungsmaß und in Zukunft kommt noch vieles mehr. Letztlich ist ein sehr komfortables und präzises Werkzeug.

Gibt's im Forum beispielsweise mal Streit über glatte Frametimes, CapFrameX sagt euch die Wahrheit. ^^ Einfach die L-Shapes vergleichen und die Sache ist geklärt.
 
Zuletzt bearbeitet:

Affenzahn

Lt. Commander
Dabei seit
März 2017
Beiträge
1.484
Wäre ohne den Lesertest jetzt voll an mir vorbei gegangen.

Super Tool. Vielen Dank dass du deine Arbeit kostenlos mit der Community teilst! 👍
 

cm87

Rear Admiral
Dabei seit
Apr. 2018
Beiträge
6.077
Hatte gestern am Abend auch das Vergnügen mit deinem Tool zu arbeiten. Vielen Dank an dieser Stelle für die tolle Arbeit.

Wenn es für dich ok ist, möchte ich gerne dein Tool auch in meinem Thread (AMD RAM OC Community) verlinken und die Leute darauf aufmerksam machen. Werde meine zukünftigen Tests auch dementsprechend mit OCAT und CapFrameX umsetzen.

Respekt.

Liebe Grüße
Manuel
 

Haldi

Rear Admiral
Dabei seit
Feb. 2009
Beiträge
5.811
So...
Um nochmal auf das Thema zurück zu kommen...
Was heißt bei dir normal? Ungesynct sieht dein Fall 1 (normal) überhaupt nicht aus. Ungesynct wäre ein Zick-zack-Verlauf mit großen Sprüngen und der Anteil der dropped Frames wäre nicht 0. Auch mit VSync und Tripple Buffer hat man Zick-zack-Verläufe, aber zumeist keine dropped Frames.
Kann es sein das du mit einem 60Hz Monitor rechnest? Und da ich ein 144Hz benutzte alle Frames korrekt dargestellt werden, daher keine Dropped Frames existieren solange ich nicht über 144FPS habe?

P.S
das wäre evtl noch ein Feature Request.
Eine Feste Linie auf 16.6ms oder 7ms je nach wahl um die Refresh Rate des Monitors auf dem Graphen direkt im Blick zu haben. Tolle Idee?
 

ZeroStrat

Lt. Commander
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
1.488
Wenn es für dich ok ist, möchte ich gerne dein Tool auch in meinem Thread (AMD RAM OC Community) verlinken und die Leute darauf aufmerksam machen. Werde meine zukünftigen Tests auch dementsprechend mit OCAT und CapFrameX umsetzen.
Ja, selbstverständlich. Ich möchte natürlich, dass das Tool breit eingesetzt wird. :) Verlinke doch mal den Thread, dann mache ich da mit.

Kann es sein das du mit einem 60Hz Monitor rechnest? Und da ich ein 144Hz benutzte alle Frames korrekt dargestellt werden, daher keine Dropped Frames existieren solange ich nicht über 144FPS habe?
Dein Kurvenverlauf war adaptiv. Sicher, dass keine Sync-Technik aktiv war? Ich mache mal ein paar Beispiele fertig für typische Szenarien.

das wäre evtl noch ein Feature Request.
Eine Feste Linie auf 16.6ms oder 7ms je nach wahl um die Refresh Rate des Monitors auf dem Graphen direkt im Blick zu haben. Tolle Idee?
Ja, sehr guter Vorschlag. Man könnte sogar ein Band darstellen mit frei konfigurierbaren Werten. Nehme ich mit auf in die ToDo-Liste!
 

cm87

Rear Admiral
Dabei seit
Apr. 2018
Beiträge
6.077

Haldi

Rear Admiral
Dabei seit
Feb. 2009
Beiträge
5.811
Dein Kurvenverlauf war adaptiv. Sicher, dass keine Sync-Technik aktiv war? Ich mache mal ein paar Beispiele fertig für typische Szenarien.
Super sache... Eigentlich sollte nix Aktiv gewesen sein... Vsync in den Settings von Metro Off. FreeSync deaktiviert.
Wenn man weiss wies ausschaut isses einfacher zu erkennen.



P.S Das mit Datum und Zeit sortierung musst du auch nochmal überarbeiten.... das geht ja gar nicht so.
1550772547414.png


P.S 2:
Das MousOver PopUp macht des öftern mal Halteschwierigkeiten und will nimmer weg ;)
1550772686540.png

Auch wenn man nen anderes Fenster drüber hat.
 

ZeroStrat

Lt. Commander
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
1.488
Das Adorner Popup Overlay ist ne lästige Sache, ja. Was meinst du mit Datum und Zeit Sortierung? Was passt da nicht?

Edit: Da hast du doch deinen "Zick-zack-Verlauf". Im Benchthread sieht man auch mal ein Beispiel. Taxxor hat was gepostet.
 
Zuletzt bearbeitet:

.courson

Cadet 3rd Year
Dabei seit
Feb. 2012
Beiträge
47
Hi,
die Sortierung nach Tag stimmt. Beim Beispiel stimmt auch die Sortierung nach Zeit innerhalb dem 20. Beim 21. sind die Einträge der Zeit nach aber anders herum als beim 20.

Sieht fast so aus als ob da nach dem 12h System (7, 11) sortiert würde und nicht nach 24h (11, 19 anstelle 19, 11) - bildlich gesprochen.

PS: Fehlermeldungen nach dem Schema "X geht nicht" sind nicht so hilfreich wie "X geht nicht, da es sich wie y verhält, wo z erwartet wäre" ;)
 

Haldi

Rear Admiral
Dabei seit
Feb. 2009
Beiträge
5.811
Zeit ODER Datum lässt sich sortieren... aber nicht nach beiden, was eigentlich Sinnvoll wäre oder?
ist Zeit Absteigend ist das Datum Aufsteigen, und umgekehrt.


Zum Thema Sync...
Unigine Heaven Medium Details 3840x1080 so das zwischen 120 und 170FPS sind, also perfekt die 144Hz ausgetestet.
Standard ohne Nix:
1550775417104.png


VSync On:
1550775463806.png


FreeSync Ultimate Engine (Im Monitor... son spezial dingens) Vsync Off
1550775490996.png


FreeSync Vsync Off:
1550775508498.png



P.S. 3
Feature Request Nr75
Export as png.
is ja toll das alle Leute Screenshots vom Fenster machen und hier Hochladen, aber jeder hat ne andere Fenstergrösse oder System Infos in der Seite drin.
Nen Knopf der Automatisch den Aktuellen Graphen als PNG speicher auf feste grösse 1600x900 oder so wäre evtl was.
Ob man den Graphen automatisch auf 0-60ms Skalieren will, und alles was drüber is einfach ignorieren da eh Ausreisser auf 60ms oder 120ms irrelevant, ist ne andere frage...


Das wenn man einmal die Skalierung ändert die so bleibt auch wenn man daten wechselt ist super!
 

Anhänge

Zuletzt bearbeitet:

ZeroStrat

Lt. Commander
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
1.488
Ok, ich verstehe, was ihr meint. Es geht um eine kombinierte Sortierung. Im Moment werden die Spalten völlig unabhängig voneinander sortiert...

@Haldi: Das sind perfekte Beispiele für Sync-Szenarien. 👍

Edit: Ich habe die Punkte im Anfangsbeitrag aufgenommen.
 
Zuletzt bearbeitet:

Taxxor

Admiral
Dabei seit
Mai 2011
Beiträge
7.174
@ZeroStrat Ein Vorschlag für die Comparisons:
Für mich als Laie klingt das eventuell nach viel Aufwand, aber es wäre schön, wenn man hier horizontale Balkendiagramme machen könnte mit einstellbaren Werten und nicht automatisch jeweils avg, 1% und 0.1% für jeden Bench.
Dann könnte man verschiedene Einstellungen auch optisch ganz leicht vergleichen, wie man es von eigentlich allen anderen Seiten kennt.
Will ich z.B. die Auswirkungen von verschiedenen RAM Einstellungen auf die 0.1% Werte testen, könnte ich dann 5 verschiedene Benches reinladen und als Wert nur die 0.1% auswählen.
Dazu noch die Möglichkeit, die einzelnen Benches entweder manuell zu sortieren oder auf- bzw. absteigend nach Wert.
Und das absolute Optimum wäre dann noch eine relative Prozentanzeige im Balken bei Mouseover, wie man es auch hier bei CB hat. Die bisherige relative Anzeige mit 100% für den besten Wert würde aber auch ausreichen^^

Grafisch sähe das dann so aus, im linken Dropdown Menü nur die 0.1% ausgewählt und im rechten Dropdown Menü die Sortierung absteigend nach Value(sorry für die Paint Skills^^)

comparison.jpg

Die Farben vielleicht nicht wie im Bild pro Benchmark sondern wie bisher eine Farbe für jeden Wertetyp. Im Bild hätten dann alle die gleiche Farbe weil alles 0.1% ist.

Btw: Es ist kein Zufall, dass meine Wünsche dazu führen, dass diese Vergleichsdiagramme fast genau so aussehen, wie hier bei Computerbase, für mich ist diese Darstellung einfach die beste, die ich kenne.
So gut die Tests bei Tomshardware oder Gamersnexus auch sind, so nervig ist es auch, dort prozentuale Unterschiede zu bestimmen, weil man nur ein simples Bild hat mit den FPS Werten und sich die Prozente alle selbst ausrechnen muss.
 
Zuletzt bearbeitet:

Taxxor

Admiral
Dabei seit
Mai 2011
Beiträge
7.174
@ZeroStrat Ja, das mit dem relativen Vergleich habe ich auch schon gesehen und ja auch oben noch mit einem Edit erwähnt.

Aber gerade bei so einem Fall wie auf deinem Screenshot, wo man nur 2 Benches hat, ist es für den optischen Vergleich mMn vorteilhafter, wenn beide Balken(paare), die man vergleicht, auch dicht aneinander sind.
Dann wäre aber die Beschriftung schwierig(zumindest wenn man nicht mindestens drei Werte anzeigen lässt), weswegen horizontale Balken dann besser wären.
 
Top