CapFrameX - Capture und Analyse Tool

ZeroStrat

Captain
Dabei seit
Nov. 2017
Beiträge
3.343
Hallo ComputerBase-Community,

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

Record Liste
Egal in welchem View man sich gerade befindet, die Record Liste befindet sich immer auf der linken Seite.
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 eingefügt.
Im unteren Bereich gibt es mehrere Eingabefelder für die CPU, GPU und RAM, die automatisch gefüllt werden und nach Bedarf verändert werden können. Über die Buttons neben den Zeilen kann der Inhalt jederzeit wieder auf den vom System ausgegebenen Wert gestellt werden.
Da standardmäßig der Prozessname verwendet wird, kann im Feld "Game" der gewünschte Name des Spiels eingegeben werden, sofern er noch nicht in der mitgelieferten Liste enthalten ist, die mit jeder neuen Version erweitert und mit der eigenen verglichen wird.
Zusätzlich kann man jede Aufnahme mit einem eigenen Kommentar versehen.

Globale Nagigationsleiste
Am oberen Rand befinden sich die Reiter für die verschiedenen Views, ein Screenshot Button, ein direkter Link zur CX Github Seite und ein Optionsmenü.

Optionen
1_global_options.png

Moving average window size = Die Spanne der Frames, mit der die average Linie beim Frametime Graphen berechnet wird.(Analysis View)
Stuttering factor = Der Faktor der durchschnittlichen Frametimes, ab dem ein Frame als Ruckler betrachtet wird.(Analysis View)
Observed directory = Das Verzeichnis, in dem die Aufnahmen gespeichert werden oder OCAT/Presentmon Aufnahmen hineingezogen werden können.
FPS value rounding digits = Anzahl der Nachkommastellen bei den Performance Parametern.
Screenshot directory = Das Verzeichnis, in dem Screenshots gespeichert werden.
Hardware info source = Auswahl, welche Informationen zur Hardware in die Aufnahmedateien geschrieben werden.
Automatic detection: Die Daten, die vom System ausgelesen wurden
Custom description: Eingabefelder erscheinen, in denen man die Daten manuell eintragen kann

Capture View
2_capture.png

In der Capture View können die Einstellungen zum Aufzeichnen von Benchmarks getätigt werden. Die Capture Funktion läuft dabei unabhängig davon, ob man sich in diesem View befindet oder nicht.

Im oberen Bereich befindet sich die Running processes und die Ignore Liste.
Darunter gibt ein Infotext Auskunft über den aktuellen Status des Capture Service.
Unter Running processes tauchen automatisch alle laufenden Prozesse auf, die aufgenommen werden können.
In der Ignore Liste stehen alle Prozesse, die von dieser Erkennung ausgeschlossen sind.
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 oben 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. Das funktioniert allerdings nur dann automatisch, wenn genau ein Prozess in der Liste vorhanden ist.
Die beiden anderen möglichen Fälle (kein Prozess und mehr als ein Prozess in der Liste) werden dem Nutzer bei Betätigung des Hotkeys durch eine Sprachansage mitgeteilt, die Info über mehrere Prozesse auch durch den Infotext.

Sollte mehr als ein Prozess auftauchen, kann der gewünschte Prozess manuell durch Anklicken ausgewählt werden.
Da man sich aber in so einem Fall meist mitten in der gewünschten Anwendung befindet, ist die bessere Vorgehensweise, vorher jeden ungewünschten Prozess auszuwählen und mit den Pfeil Buttons in die Ignore Liste zu verschieben, sodass beim Start der Anwendung auch nur diese in der Liste steht und somit nicht manuell ausgewählt werden muss.

Sobald die Ignore Liste mit allen ungewünschten Prozessen gefüllt ist (die Running processes Liste also generell beim Start von CapFrameX leer ist) muss man sich um nichts mehr kümmern, man startet einfach ein beliebiges Spiel und drückt den Hotkey zum Aufnehmen.
Die Ignore Liste enthält nach der Installation bereits die meisten gängigen Prozesse und wird, genau wie die Liste mit den Spielenamen, stetig aktualisiert und mit jeder neuen Version mit der bestehenden Liste der Nutzer abgeglichen.

Overlay View
3_overlay.png

Enthält Optionen für die Steuerung des OSD, die Auswahl der Einträge, die im OSD angezeigt werden und Optionen für die Run History und die Aggregation.

Linke Seite
"Overlay Items" Liste, in der man die einzelnen Einträge im OSD umschalten und deren Reihenfolge ändern kann. Einträge mit gleichem Group Name werden im OSD in der gleichen Zeile angezeigt.
Overlay Hotkey, um die Anzeige aller CX Einträge im OSD zu steuern. (Dabei wird nicht das komplette RTSS OSD ausgeblendet, wie es beim MSI Afterburner Hotkey passiert)

Rechte Seite
Run History: Einstellungen für die Anzahl der Durchläufe und die Metriken, die neben dem Average angezeigt werden sollen. Die Durchläufe werden dabei stets im OSD angezeigt. Ist die Run History voll, ersetzen zusätzliche Runs die jeweils ältesten.

Aggregation: Sobald die Run History voll ist, werden die Frametimes aller Durchläufe zu einer einzigen Datei kombiniert, welche dann von CX ausgelesen werden kann und ein Ausschnitt der Metriken im OSD gezeigt*.
Ist die Run History voll, wird der Median der hier ausgewählten Metrik berechnet und die übrigen Runs über einen ebenfalls hier ausgewählten Prozentwert auf Ausreißer überprüft.
Sind Ausreißer vorhanden, werden die entsprechenden Einträge im OSD rot markiert.
Einstellungen für den Umgang mit Ausreißern innerhalb der Durchläufe:
"Mark & use": Ausreißer werden zwar markiert, es werden aber generell alle Einträge der History automatisch zusammengefasst.
"Mark & replace": Sind Ausreißer vorhanden, müssen zusätzliche Durchläufe gemacht werden, wobei die Ausreißer entfernt werden und die volle History erneut überprüft wird. Die Durchläufe werden erst zusammengefasst, wenn keine Ausreißer mehr vorhanden sind.

*Da die Aggregation nicht mit einer Mittelwertbildung aus mehreren Einzelergebnissen arbeitet, sondern die Gesamten Rohdaten der Frametimes zusammenfasst und diese dann einmal zusammen auswertet, können speziell bei den Perzentilwerten Abweichungen entstehen.
Wir sind aber davon überzeugt, dass unsere Methode für die Berechnung von Perzentilen die verlässlchere ist.

Analysis View
4_analysis.png

Hier werden die getätigten Messungen einzeln ausgewertet.

Im oberen Bereich kann man zwischen Frametime Graphen, FPS Graphen, und den L-Shapes(Perzentil Verteilung der Frametimes) wählen.
Im unteren Bereich sieht man verschiedene Performance Parameter.

Daneben zeigt ein Kuchendiagramm den Anteil der Zeit, in der die Frametimes 2.5x höher als der Durchschnitt bzw die FPS 2.5x niedriger als der Durchschnitt waren, das Spiel also merklich geruckelt hat.
Im Unteren Bereich ist die Toolbar, mit der man die anzuzeigenden Performance Parameter und die Skala der Y-Achse anpassen kann, eine Option um ungewöhnlich starke Ausreißer zu entfernen und ein Toggle für den Range Slider, mit dem man den X-Bereich der Aufnahme verändern kann.

Comparison View
5_comparison_bar.png

Hier können mehrere Messungen miteinander verglichen werden.

Per Doppelklick auf die Einträge in der Record Liste, können diese zur Comparison Liste rechts hinzugefügt werden. Ein Klick auf einen Eintrag in der Comparison Liste wählt ihn in der Record Liste aus. Über den unteren Button werden alle Einträge wieder aus der Liste entfernt.
Der erste Reiter des Views zeigt die Messungen als Balkendiagramm an.
Vergleicht man nur Messungen eines einzigen Spiels, wird dieses als Überschrift über das Diagramm gesetzt, bei verschiedenen Spielen wird deren Name an die Balken geschrieben.
Zusätzlich steht ein einstellbarer Kontext an jedem Eintrag.
In der unteren Toolbar kann die Sortierung geändert, sowie die angezeigten Parameter und der Kontext eingestellt werden.
Zusätzlich kann mit dem Grouping Toggle die Art der Sortierung umgestellt werden:
Aus-> Alle Einträge werden nach FPS sortiert
An-> Einträge werden erst nach Spiel, dann nach FPS sortiert

6_comparison_graph.png

Im zweiten Reiter 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, zusätzlich kann die Farbe geändert und der Graph ausgeblendet werden.
In der Toolbar kann der Range Slider und die Anzeige des Kontextes als Legende im Frametime Diagramm ein- oder ausgeschaltet werden. Die Einstellung des Kontextes ist für beide Reiter gleich.

(Die Steuerung der Graphen kann in den Optionen im Reiter "HELP" gefunden werden.)

Report View
7_report.png

Die Report View ist eine simple Ansicht, um alle in den Messungen enthaltenen Daten kompakt darzustellen. Mit einem Rechtsklick kann man diese Daten auch in die Zwischenablage kopieren und z.B. in Excel einfügen.

Synchronization View
8_synchronisation_displaychangedtime.png

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.
Unter dem Graphen werden zwei Prozentwerte angezeigt. Der erste zeigt die Rate der Übereinstimmung von Frametimes und Display Changed Times, der zweite zeigt den Anteil der Frames, die innerhalb des definierten Sync Bereichs des Monitors liegen.
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.

9_Synchronization_inputlag.png

Im zweiten Tab wird der Input Lag als Graph, Balkendiagramm sowie als Histogramm angezeigt.
Dieser Wert ist nur eine Annäherung, da wir die Daten nicht exakt von PresentMon bekommen können, allerdings gab uns der Entwickler eine Formel, mit der man aus den vorhandenen Daten den Input Lag recht genau abschätzen kann.

Bei Fragen, einfach posten hier im Thread. Feedback ist immer gerne gesehen.

Beste Grüße, ZeroStrat
 
Zuletzt bearbeitet:

ZeroStrat

Captain
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
3.343

killertomate285

Lt. Commander
Dabei seit
Mai 2011
Beiträge
1.210
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

Captain
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
3.343
@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

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

ZeroStrat

Captain
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
3.343
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

Commander
Dabei seit
März 2017
Beiträge
2.319
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

Mr. RAM OC
Dabei seit
Apr. 2018
Beiträge
8.165
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

Vice Admiral
Dabei seit
Feb. 2009
Beiträge
6.264
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

Captain
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
3.343
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

Mr. RAM OC
Dabei seit
Apr. 2018
Beiträge
8.165

Haldi

Vice Admiral
Dabei seit
Feb. 2009
Beiträge
6.264
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

Captain
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
3.343
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 4th Year
Dabei seit
Feb. 2012
Beiträge
74
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

Vice Admiral
Dabei seit
Feb. 2009
Beiträge
6.264
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

Captain
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
3.343
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

Fleet Admiral
Dabei seit
Mai 2011
Beiträge
11.437
@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:

ZeroStrat

Captain
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
3.343
@Taxxor: Wow, die Ideen sprudeln nur so. 👍 Sowas ähnliches ist bereits in der Beta. Allerdings sind die Balken nicht horizontal ausgerichtet und die Gruppierung bleibt auch erhalten.
Comparison_relative.png
 

Taxxor

Fleet Admiral
Dabei seit
Mai 2011
Beiträge
11.437
@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