CapFrameX - Capture und Analyse Tool

Mal schauen wie das bei mir aussieht^^ Aber tatsächlich klingen 160ms nach gar nicht so wenig, dafür dass du ja präzise rein und rausspringen kannst.
 
Ich wusste, dass du das sagst. ^^ Ich bin auch schon dabei zu schauen, wo der kleine Offset her kommt.
 
Version 1.2.1.1 Beta mit Capture Modus (CX konsumiert Hotkey getriggerten Datenstrom von PresentMon, custom Hotkey Hook, der robust gegen fremdes Handling ist)

So, nun der komplett neue Ansatz. Der Service läuft, wenn man CapFrameX startet und sich auf der Capture Page befindet, ansonsten nicht. Das Betätigen des Hotkeys bewirkt, dass sich CX in den Datenstrom einklinkt und abschließend eine Datei erzeugt, die wie gewohnt aufgebaut ist.

Wenn die Ignore-Liste gut gepflegt ist, kann man einfach sofort loslegen (Hotkey drücken). Und genau das ist der Auto Modus. Wenn mehr als ein Eintrag in der Prozessliste steht, dann werden im Auto Modus genau von diesen Prozessen Frametimes aufgezeichnet. Sobald ein konkreter Eintrag in der Liste markiert ist, wird der Auto Modus intern abgeschaltet und es werden ausschließlich Frametimes des markierten Prozesses aufgezeichnet.

Die Ignore-Liste unter MyDocuments sollte gelöscht werden. CX schreibt diese Liste dann neu, aber deutlich schlanker. Danach sollte die Liste in CX ein wenig nachgepflegt werden. Durch den intelligenteren Filter sollte sich das aber in Rahmen halten.

Die Aufzeichnungsdauer sollte jetzt sehr präzise verwaltet werden. Die Fehlertoleranz sollte bei genau einem Frame höchstens liegen.

Hinweise und bekannte Fehler:
  • "Start delay in seconds" ist immer noch ohne Funktion
  • Auto Kommentar wird in der Kommentarspalte des Grids nicht sofort aktualisiert
  • "Capture time in seconds" ist erst dann aktiv, wenn die Editbox den Fokus verliert. Die Aktualisierung greift nicht bei Klicken des Return Buttons. Ändern?!
  • Die Ereignisanzeige auf meinem System zeigt keinerlei Auffälligkeiten bzgl. PresentMon
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
ZeroStrat schrieb:
Wenn die Ignore-Liste gut gepflegt ist, kann man einfach sofort loslegen (Hotkey drücken). Und genau das ist der Auto Modus. Wenn mehr als ein Eintrag in der Prozessliste steht, dann werden im Auto Modus genau von diesen Prozessen Frametimes aufgezeichnet. Sobald ein konkreter Eintrag in der Liste markiert ist, wird der Auto Modus intern abgeschaltet und es werden ausschließlich Frametimes des markierten Prozesses aufgezeichnet.
Wow warum ist mir das nicht eingefallen?^^ Einfacher und intuitiver geht es ja gar nicht mehr, vorausgesetzt der User bekommt nach einem Klick auf einen Prozess auch angezeigt, dass nun nur noch ausschließlich dieser Prozess aufgenommen wird. Den sollte man dann auch wieder abwählen können(durch erneutes Klicken?)

ZeroStrat schrieb:
Danach sollte die Liste in CX ein wenig nachgepflegt werden. Durch den intelligenteren Filter sollte sich das aber in Rahmen halten.
Und auch hier kann man ja trotzdem weiterhin eine Default Liste mitschicken, wo die wenigen Sachen drin sind, maximaler Komfort für die späteren Nutzer^^


ZeroStrat schrieb:
Die Aufzeichnungsdauer sollte jetzt sehr präzise verwaltet werden. Die Fehlertoleranz sollte bei genau einem Frame höchstens liegen.
Hast du den Grund für die kleine Verzögerung also ausmachen können?


ZeroStrat schrieb:
  • "Capture time in seconds" ist erst dann aktiv, wenn die Editbox den Fokus verliert. Die Aktualisierung greift nicht bei Klicken des Return Buttons. Ändern?!
Hmm intuitiv ist das nicht wirklich, vor allem wenn man nun nicht mehr zwingend den Prozess auswählen muss, sehe ich eher den Fall, dass man die Zeit eintippt und dann ins Spiel tabbt ohne vorher woanders innerhalb des Fensters hin zu klicken. Oder gilt das verlassen des CX Fensters auch als Fokus verlieren?
Per Return sollte das Bestätigen schon funktionieren.

ZeroStrat schrieb:
  • Die Ereignisanzeige auf meinem System zeigt keinerlei Auffälligkeiten bzgl. PresentMon
Heute Nachmittag kann ich das für mein System nachprüfen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ZeroStrat
Taxxor schrieb:
Und auch hier kann man ja trotzdem weiterhin eine Default Liste mitschicken, wo die wenigen Sachen drin sind, maximaler Komfort für die späteren Nutzer^^

Klar, hab schon ne Default-Liste angelegt, aber die ist wesentlich schlanker.

Taxxor schrieb:
Hast du den Grund für die kleine Verzögerung also ausmachen können?

Ja, hab ich. Das sollte jetzt gut funktionieren. Gegebenenfalls kann man noch nachjustieren.

Taxxor schrieb:
Hmm intuitiv ist das nicht wirklich, vor allem wenn man nun nicht mehr zwingend den Prozess auswählen muss, sehe ich eher den Fall, dass man die Zeit eintippt und dann ins Spiel tabbt ohne vorher woanders innerhalb des Fensters hin zu klicken. Oder gilt das verlassen des CX Fensters auch als Fokus verlieren?
Per Return sollte das Bestätigen schon funktionieren.

Ich bin da heute auch drauf reingefallen. Hatte mich gewundert, dass die Messung nicht endet. Also ja, weg damit... ^^
 
@ZeroStrat Habe gerade ein paar Testmessungen gemacht. Capture Time auf 10s.

2x Plague Inc.
9.99s
9.49s

5x Metro Exodus
9.18s
9.99s
4.71s
1.8s
4.03s

Man hat es auch am Ton gehört, nach 4 bzw 2 sekunden kam bei den drei letzten der Ton wieder und die Aufnahme wurde gestoppt.
Der Metro Prozess blieb auch bis jetzt gerade in der Prozessliste drin, habe witcher 3 gestartet, dann waren eine Zeit lang beide drin und dann ist irgendwann Metro aus der Liste verschwunden.

5x Witcher 3
0s(Number of samples: 1)
9.99s
9.99s
9.62s
9.88s

Die Capture started Meldung bleibt auch immer nur kurz, dann kommt wieder Capturing inactve. Ich sehe aber daran, dass der Prozess ausgegraut ist, dass noch aufgenommen wird.
Und auch hier, nachdem ich Witcher 3 beendet habe, bleibt er in der Liste stehen.

Auch wenn hier nichts mehr erstellt wird, ich kann den Hotkey drücken und der Sound kommt, der Prozess wird ausgegraut.
Drücke ich ihn dann kurz darauf wieder, ertönt der Sound erneut, also eigentlich Aufnahme beendet, der Prozess ist dann auch nicht mehr grau. Nach Ablauf der 10 Sekunden nach dem ersten Druck ertönt aber wieder ein Sound.

Und ist es gewollt, dass die API in den comment geschrieben wird?
 
Zuletzt bearbeitet:
ZeroStrat schrieb:
Was sagt die Ereignisanzeige?
Die Warnung mit der Wiederherstellungsdatei ist dreimal drin, insgesamt hab ich ca 15mal aufgenommen.

Witcher 3 steht übrigens immer noch in der Liste, habs vor 7 Minuten beendet, es ging erst weg, nachdem ich ein anderes Spiel gestartet habe.
Ergänzung ()

@ZeroStrat

5x Kingdom Come
9.99
9.99
9.85
9.92

Und beim 5. mal hab ich mal abgezählt und nach ca 5 Sekunden nochmal den Hotkey gedrückt, nach weiteren 5 Sekunden kam dann nochmal der Sound.
Ergebnis sind 2 Dateien mit je 5.25s
Ergänzung ()

5x ELEX

9.99
9.99
9.99
9.99
9.81

Aber ich habe im Kopf mitgezählt, hatte bei manchen Aufnahmen das Gefühl, dass die beiden Sounds sehr viel weiter auseinanderlagen als 10 Sekunden, die Dateien haben trotzdem die richtige Zeit.

Und nun verschwindet ELEX nicht aus der Liste^^
CX schließen und wieder öffnen, schafft hier Abhilfe.
 
Zuletzt bearbeitet:
Ich bin gerade dabei, den neuen Rechner einzurichten. Wenn das soweit wieder läuft, schaue ich mir das an.
 
Dungeons 3(10s)

10s
0s (number of samples: 1)
9.77s
9.99s
10s
10s
10.16s
9.79s
10s
9.79s

Dreimal steht "API: DXGI" im comment, bei den anderen steht nur "-".
Nach einem Neustart, stehts bei allen drin.

FFXV(10s)

9.99s
9.94s
10s
9.72s
9.99s
9.98s
9.86s
9.99s
10s

Frostpunk (5s)

4.97s
4.97s
4.97s
4.97s
4.99s
0s(number of samples: 1)
4.99s
4.99s
4.98s

Und wieder mal ca in der Mitte nochmal F12 gedrückt: 2 Dateien mit je 2s.


Plague Inc.(5s)

0s(number of samples: 1)
0s(number of samples: 1)
4.51s
4.51s
0s(number of samples: 1)
0s(number of samples: 1)
4.66s
4.99s


X4:Foundations(5s)

4.99s
4.99s
4.64s
5s
4.76s
4.97s
4.99s
4.42s


Anno 1800(20s)

19.96s
19.97s
19.78s
19.85s


Die Meldung im Ereignislog kam 9 mal während diesen Aufnahmen.


Also 2 Dinge sehe ich schon mal direkt von der CX Bedienung her:

- Prozesse verschwinden erst nach Neustart aus der Liste, spielt man mehrere Spiele hintereinander, sind alle zusammen in der Liste, wobei natürlich nur von dem gerade wirklich laufenden Prozess Daten aufgenommen werden.
Ich hatte aber auch eben schon mal den Fall, dass einer der Prozesse, der längst geschlossen war, zwischendurch auch noch einmal eine Datei bekommen hat, die dann 0.2s lang war mit einem sample.

- Das erneute Drücken des Hotkeys während der Capture Time stoppt zwar die aktuelle Aufnahme, aber nicht die Capture Time selbst, somit scheint einfach ab dann eine neue Aufnahme gemacht zu werden, die nach Ablauf der noch verbleibenden Zeit stoppt.
Komischerweise kamen dabei das erste mal (10s Bench) 2 Dateien mit je 5.25s raus, also insgesamt ne halbe Sekunde mehr, und beim zweiten mal (5s Bench) 2 Dateien mit je 2s, also insgesamt eine Sekunde weniger.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ZeroStrat
Dafür bin ich ja da^^
 
  • Gefällt mir
Reaktionen: Beschi
Kannst du mir bitte den Einträge der Ereignisanzeige zeigen? Vielleicht muss ich das Jefferson mal zeigen.
 
781880



- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
<Provider Name="Microsoft-Windows-Kernel-EventTracing" Guid="{b675ec37-bdb6-4648-bc92-f3fdc74d3ca2}" />
<EventID>1</EventID>
<Version>0</Version>
<Level>3</Level>
<Task>1</Task>
<Opcode>10</Opcode>
<Keywords>0x8000000000000010</Keywords>
<TimeCreated SystemTime="2019-05-14T16:50:28.000212300Z" />
<EventRecordID>1035</EventRecordID>
<Correlation />
<Execution ProcessID="4" ThreadID="3720" />
<Channel>Microsoft-Windows-Kernel-EventTracing/Admin</Channel>
<Computer>DESKTOP-ADURP7H</Computer>
<Security UserID="S-1-5-18" />
</System>
- <EventData>
<Data Name="SessionName">PresentMon</Data>
<Data Name="ErrorCode">3221225864</Data>
<Data Name="LoggingMode">4194560</Data>
</EventData>
</Event>
 
  • Gefällt mir
Reaktionen: Beschi und ZeroStrat
@Taxxor
Nach einigen Überlegungen müssten alle Probleme, bis auf die Sache mit der Ereignisanzeige gut lösbar sein.

  • Chaos dadurch, dass man während einer Messung den Hotkey drückt -> Hotkey sperren
  • Liste wird nicht richtig aktualisiert -> nicht auf Heartbeat warten, sofort triggern / Fehler beim Pflegen (PresentMon Prozesse) der Liste beheben
  • Unregelmäßige Aufnahmelängen -> Man muss wohl akzeptieren, dass PresentMon die Daten zwar synchron erzeugt, aber wohl asynchron/unregelmäßig pusht. Ich könnte das mit einem Timestamp nachweisen, aber das kann ich mir im Grunde sparen. Die Lösung wird sein, die Messung so lange laufen zu lassen, bis das Zeit Target erreicht ist. Das ist valide, weil die Daten gleichmäßig erzeugt werden. Man startet also eine Messung und das Beendensignal ertönt erst dann, wenn beispielsweise 10 Sekunden voll sind. Im schlimmsten Fall muss man eine Sekunde dranhängen, also einfach weiterlaufen/-fahren in der Szene. Man könnte auch stehen bleiben, weil die Daten aus der Vergangenheit "nachgepusht" werden.

Ich habe übrigens gestern Metro getestet. Auch mit dem statischen Zeitkorsett waren die Abweichungen minimal. Hast du mal geschaut, ob HPET bei dir aktiv ist?
 
ZeroStrat schrieb:
  • Chaos dadurch, dass man während einer Messung den Hotkey drückt -> Hotkey sperren
Wäre es nicht für die Bedienung schöner, wenn das Drücken während einer Messung mit Zeitlimit einfach die Messung komplett abbricht und eben nur das schreibt, was bis dahin aufgenommen wurde?
Letzteres tut es ja jetzt schon, nur dass danach mit einer neuen Datei weiter geschrieben wird.

Habe ich z.B. eine Messung von 20 Sekunden gestartet und habe schon nach 3 Sekunden einen Hänger, der die Aufnahme unbrauchbar macht, müsste ich noch 17 Sekunden warten, bis die Aufnahme zuende ist, bis ich sie noch mal machen kann.
 
  • Gefällt mir
Reaktionen: ZeroStrat
Taxxor schrieb:
Wäre es nicht für die Bedienung schöner, wenn das Drücken während einer Messung mit Zeitlimit einfach die Messung komplett abbricht und eben nur das schreibt, was bis dahin aufgenommen wurde?

Ja stimmt, das wäre noch besser. Gut, dass wir mal drüber geredet haben. :D
 
  • Gefällt mir
Reaktionen: Beschi
Zu der Aufnahmelänge: Wenn du so lange laufen lässt, bis die 10 Sekudnen voll sind, hätte man ja theoretisch nach wie vor das Problem, dass der Startpunkt trotzdem mit dem Drücken des Hotkeys beginnt und die zu diesem Zeitpunkt gepushten Daten bereits aus der Vergangenheit stammen können. Somit ist die ganze Aufnahme ggf eine halbe Sekunde versetzt.
Ich wüsste aber nicht, was man da noch tun könnte, der Versatz ist aber schon mal sehr viel besser, als das komplette Fehlen dieser Zeit.
Ergänzung ()

ZeroStrat schrieb:
Hast du mal geschaut, ob HPET bei dir aktiv ist?
Den Begriff höre ich gerade zum ersten mal^^ Kann ich später mal nach schauen.


Ich hatte es oben schon mal angesprochen, ein ausgewählter Prozess in der Liste sollte auch einfach wieder abwählbar sein, damit man wieder in den Auto Modus kommt, ohne den Prozess schließen zu müssen.
Ein Klick zum auswählen, ein erneuter Klick zum abwählen, wäre wohl am komfortabelsten.

Der Text oben zeigt noch an, dass man einen Prozess auswählen soll, aber der wird ja vermutlich sowieso später noch angepasst, da spare ich mir also vorerst Anmerkungen^^
 
Zuletzt bearbeitet:
Was man noch machen kann: den Datenstrom der letzten n Minuten in den Speicher schreiben mit Timestamp und dann drauf zugreifen. Man klinkt sich dann nicht mehr in den Livestrom ein, sondern auch ins "Archiv". Das in Verbindung mit "Sicherheitsoffset hinten dran hängen" macht es eigentlich super genau.

Taxxor schrieb:
Ich hatte es oben schon mal angesprochen, ein ausgewählter Prozess in der Liste sollte auch einfach wieder abwählbar sein, damit man wieder in den Auto Modus kommt, ohne den Prozess schließen zu müssen.
Ein Klick zum auswählen, ein erneuter Klick zum abwählen, wäre wohl am komfortabelsten.

Dafür gibt's doch den Button oben rechts über der Liste.
 
  • Gefällt mir
Reaktionen: Taxxor
Taxxor schrieb:
Zu der Aufnahmelänge: Wenn du so lange laufen lässt, bis die 10 Sekudnen voll sind, hätte man ja theoretisch nach wie vor das Problem, dass der Startpunkt trotzdem mit dem Drücken des Hotkeys beginnt und die zu diesem Zeitpunkt gepushten Daten bereits aus der Vergangenheit stammen können. Somit ist die ganze Aufnahme ggf eine halbe Sekunde versetzt.
Ich wüsste aber nicht, was man da noch tun könnte, der Versatz ist aber schon mal sehr viel besser, als das komplette Fehlen dieser Zeit.
ZeroStrat schrieb:
@Taxxor
Ich könnte das mit einem Timestamp nachweisen

Moin moin, eventuell Timestamp bei Hotkey-Aktivierung speichern und mit gestreamten Daten abgleichen. Somit könnte man "vergangene Daten" ignorieren und den Endpunkt exakt abpassen.
[nur mal laut gedacht]

Gruß Beschi

P.S.: Ich finde es klasse was ihr zwei hier macht!

Edit: da war einer schneller ;)
 
  • Gefällt mir
Reaktionen: ZeroStrat
Zurück
Oben