CapFrameX (CX) - Frametime Capture und Analyse Tool

Die haben wir nicht auf den Arbeitsrechnern. :D Es geht nur darum, durchgeführte Benchmarks auswerten zu können. Deinen Ausführungen zufolge, brauchen wir also ein "Frametime Analysis Tool" ohne das "Capture". CX Light als Standalone?

MfG
Raff
 
Bitteschön. Die Branches heißen entsprechend analysis\1.7.X. Diese Versionen haben keinen PresentMon Capture Service, kein Sensor Logging und keine Cloud Nachrichten. Wenn irgendwas knallt, was außerhalb des Analysis oder Comparison Tabs gemacht wird, nicht beschweren! ^^

Download: https://archive.capframex.com/
 
@PCGH_Raff @PCGH_Dave @PCGH_Phil @PCGH_Richard

Download (Build #8): https://archive.capframex.com/

Mit dieser Version kann man die Affinität der Threads des aktuell laufenden Games mit einer beliebigen Tastenkombi durchtoggeln.
  • Für Ryzen mit 2 CCDs gilt: default -> CCD0 -> CCD1 -> default (getestet mit 7950X)
  • Für Intel mit Hybrid Arch gilt: default -> P-Cores -> default (ungetestet)

Die Funktionalität ist defaultmäßig abgeschaltet, um Messungen nicht versehentlich zu manipulieren.

Warnhinweis: Sollte ein Game über einen großen Threadpool verfügen, kann das Erzwingen des Schedulings auf die halbe Threadanzahl zu verstärkten Context Switches und somit spürbaren Spikes bei den Frametimes führen. Dies war z.B. bei Metro Exodus Enhanced Edition der Fall.

1677227691405.png
 
Zuletzt bearbeitet von einem Moderator:
Super, danke.
Btw.: Da ich da gerade an einem Artikel bezüglich Hauptspeicher arbeite – kannst du mir sagen, was bei der Angabe "Memory + Cache Game" genau dabei bzw. gemeint ist? Ist das der Windows-Cache oder sowas in der Richtung?

Ist wahrscheinlich (für den Artikel) nicht so wichtig, aber das ist eine der wenigen Angaben, bei der ich nicht ganz sicher bin, was sie bedeutet.

Gruß,
Phil
 
Btw.: Da ich da gerade an einem Artikel bezüglich Hauptspeicher arbeite – kannst du mir sagen, was bei der Angabe "Memory + Cache Game" genau dabei bzw. gemeint ist? Ist das der Windows-Cache oder sowas in der Richtung?
Ja, Mem + Cache ist das, was das Spiel im Speicher belegt + das, was Windows cached. Interessanterweise ist der Unterschied zu Mem App nicht allzu groß. Es handelt sich dabei übrigens um Windows Performancecounter.

Hier ist der Code dazu. Wir sind schließlich zu 100% transparant. ^^
C#:
 // Working Set - Private
ramUsageGamePerformanceCounter = new PerformanceCounter("Process", "Working Set - Private", validInstanceName, true);
// Working Set (private + resources)
ramAndCacheUsageGamePerformanceCounter = new PerformanceCounter("Process", "Working Set", validInstanceName, true);
 
Ne, da ich dazu neige, hin und wieder die eine oder andere brisante Aussage zu machen, muss 100% Transparenz schon sein. :D

Ich bin generell davon überzeugt, dass Benchmark-Tools, die direkt oder indirekt markttechnisch Einfluss nehmen können, Open Source sein sollten.
 
Ne, da ich dazu neige, hin und wieder die eine oder andere brisante Aussage zu machen, muss 100% Transparenz schon sein. :D

Ich bin generell davon überzeugt, dass Benchmark-Tools, die direkt oder indirekt markttechnisch Einfluss nehmen können, Open Source sein sollten.
Gibt eigentlich ne Möglichkeit die Vram Temperatur der Radeon mit ins Overlay zu bringen. Das wäre mega.
 
Gibt eigentlich ne Möglichkeit die Vram Temperatur der Radeon mit ins Overlay zu bringen. Das wäre mega.
Da müsste ich tief in die SMU eintauchen.

Das unterstützt die ADLX, mehr jibbet net:
C:
class ADLX_NO_VTABLE IADLXGPUMetricsSupport : public IADLXInterface
    Zeile   22:         ADLX_DECLARE_IID (L"IADLXGPUMetricsSupport")
    Zeile   25:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUUsage IsSupportedGPUUsage
    Zeile   48:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUClockSpeed IsSupportedGPUClockSpeed
    Zeile   71:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUVRAMClockSpeed IsSupportedGPUVRAMClockSpeed
    Zeile   94:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUTemperature IsSupportedGPUTemperature
    Zeile  117:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUHotspotTemperature IsSupportedGPUHotspotTemperature
    Zeile  140:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUPower IsSupportedGPUPower
    Zeile  163:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUTotalBoardPower IsSupportedGPUTotalBoardPower
    Zeile  186:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUFanSpeed IsSupportedGPUFanSpeed
    Zeile  209:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUVRAM IsSupportedGPUVRAM
    Zeile  232:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUVoltage IsSupportedGPUVoltage
    Zeile  255:         *@page DOX_IADLXGPUMetricsSupport_GetGPUUsageRange GetGPUUsageRange
    Zeile  282:         *@page DOX_IADLXGPUMetricsSupport_GetGPUClockSpeedRange GetGPUClockSpeedRange
    Zeile  309:         *@page DOX_IADLXGPUMetricsSupport_GetGPUVRAMClockSpeedRange GetGPUVRAMClockSpeedRange
    Zeile  336:         *@page DOX_IADLXGPUMetricsSupport_GetGPUTemperatureRange GetGPUTemperatureRange
    Zeile  363:         *@page DOX_IADLXGPUMetricsSupport_GetGPUHotspotTemperatureRange GetGPUHotspotTemperatureRange
    Zeile  390:         *@page DOX_IADLXGPUMetricsSupport_GetGPUPowerRange GetGPUPowerRange
    Zeile  417:         *@page DOX_IADLXGPUMetricsSupport_GetGPUFanSpeedRange GetGPUFanSpeedRange
    Zeile  444:         *@page DOX_IADLXGPUMetricsSupport_GetGPUVRAMRange GetGPUVRAMRange
    Zeile  471:         *@page DOX_IADLXGPUMetricsSupport_GetGPUVoltageRange GetGPUVoltageRange
    Zeile  498:         *@page DOX_IADLXGPUMetricsSupport_GetGPUTotalBoardPowerRange GetGPUTotalBoardPowerRange
    Zeile  526:     typedef IADLXInterfacePtr_T<IADLXGPUMetricsSupport> IADLXGPUMetricsSupportPtr;
 
Da müsste ich tief in die SMU eintauchen.

Das unterstützt die ADLX, mehr jibbet net:
C:
class ADLX_NO_VTABLE IADLXGPUMetricsSupport : public IADLXInterface
    Zeile   22:         ADLX_DECLARE_IID (L"IADLXGPUMetricsSupport")
    Zeile   25:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUUsage IsSupportedGPUUsage
    Zeile   48:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUClockSpeed IsSupportedGPUClockSpeed
    Zeile   71:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUVRAMClockSpeed IsSupportedGPUVRAMClockSpeed
    Zeile   94:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUTemperature IsSupportedGPUTemperature
    Zeile  117:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUHotspotTemperature IsSupportedGPUHotspotTemperature
    Zeile  140:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUPower IsSupportedGPUPower
    Zeile  163:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUTotalBoardPower IsSupportedGPUTotalBoardPower
    Zeile  186:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUFanSpeed IsSupportedGPUFanSpeed
    Zeile  209:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUVRAM IsSupportedGPUVRAM
    Zeile  232:         *@page DOX_IADLXGPUMetricsSupport_IsSupportedGPUVoltage IsSupportedGPUVoltage
    Zeile  255:         *@page DOX_IADLXGPUMetricsSupport_GetGPUUsageRange GetGPUUsageRange
    Zeile  282:         *@page DOX_IADLXGPUMetricsSupport_GetGPUClockSpeedRange GetGPUClockSpeedRange
    Zeile  309:         *@page DOX_IADLXGPUMetricsSupport_GetGPUVRAMClockSpeedRange GetGPUVRAMClockSpeedRange
    Zeile  336:         *@page DOX_IADLXGPUMetricsSupport_GetGPUTemperatureRange GetGPUTemperatureRange
    Zeile  363:         *@page DOX_IADLXGPUMetricsSupport_GetGPUHotspotTemperatureRange GetGPUHotspotTemperatureRange
    Zeile  390:         *@page DOX_IADLXGPUMetricsSupport_GetGPUPowerRange GetGPUPowerRange
    Zeile  417:         *@page DOX_IADLXGPUMetricsSupport_GetGPUFanSpeedRange GetGPUFanSpeedRange
    Zeile  444:         *@page DOX_IADLXGPUMetricsSupport_GetGPUVRAMRange GetGPUVRAMRange
    Zeile  471:         *@page DOX_IADLXGPUMetricsSupport_GetGPUVoltageRange GetGPUVoltageRange
    Zeile  498:         *@page DOX_IADLXGPUMetricsSupport_GetGPUTotalBoardPowerRange GetGPUTotalBoardPowerRange
    Zeile  526:     typedef IADLXInterfacePtr_T<IADLXGPUMetricsSupport> IADLXGPUMetricsSupportPtr;
Schade, dachte weil HWInfo den Wert auch abgreifen kann wäre das evtl. leicht zu integrieren.
 
Wo ich's gerade sehe: GPU Mem Read/Write funktioniert mit Arc nicht. Habt ihr euch schon durch alle Einträge der Control Library gegraben? Da soll's laut TAP ein paar coole Features geben ... :D

MfG
Raff
 
Hm, muss ich mal schauen. Es es eigentlich drin, aber die Werte waren nicht plausibel. Gab sogar ein Issue auf GitHub dazu.
 
Moin!

Wie gesagt, ich bekam vor paar Tagen nichts angezeigt, stets auf 0 (der Call ergab folglich keine positive Rückmeldung, aus welchen Gründen auch immer). Getestet mit Arc A770 8GB und dem aktuellen Treiber 4146 WHQL unter Windows 11 x64.

Btw: "igcl" = Intel Graphics Control Library, oder?

MfG
Raff
 
Ah ok, wenn es 0 ist, dann kann es sein, dass das Auslesen von Buswidth geändert wurde. Vielleicht muss es nicht mehr separat ausgelesen werden. Muss ich mal debuggen alsbald.

Von der Logik her ist Bandbreite = Transferrate * Buswidth. So habe ich das gerechnet bisher.

Btw: "igcl" = Intel Graphics Control Library, oder?
Jup, hier der GitHub Link: https://github.com/intel/drivers.gpu.control-library

Ich sehe auch gerade, dass es frische Änderungen gibt. Muss ich mal einpflegen.
 
Zurück