Testen und Debuggen von TDR bei der Treiberentwicklung
In diesem Artikel werden TDR-Test- und -Debugstrategien (Timeout Detection and Recovery, Timeouterkennung und Wiederherstellung) für Entwickler*innen von Grafikanzeigetreibern beschrieben.
TDR-Tests in WHLK
Das Windows Hardware Lab Kit (WHLK) enthält TDR-spezifische Tests, die Treiberentwickler*innen für Test- und Debugzwecke verwenden können. Beispielsweise können Entwickler*innen eine GPU-TDR manuell mithilfe von SimulatePreemption TDR auslösen. Weitere Informationen zu den verschiedenen TDR-Tests finden Sie unter Device.Graphics.
TDR-Registrierungsschlüssel zum Testen und Debuggen
Entwickler*innen können die folgenden TDR-Registrierungsschlüssel nur bei der Treiberentwicklung zu Test- oder Debugzwecken verwenden.
Wichtig
Endbenutzer*innen sollten diese Registrierungsschlüssel nicht bearbeiten. Außerdem sollten sie auch von Anwendungen ausschließlich zu gezielten Test- oder Debugzwecken bei der Treiberentwicklung bearbeitet werden.
TdrLevel
Gibt die erste Wiederherstellungsstufe an.
KeyPath : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue : TdrLevel
ValueType : REG_DWORD
ValueData : TdrLevelXxx (see the following table)
Dabei kann TdrLevelXxx einer der folgenden Werte sein:
Wert | Bedeutung |
---|---|
TdrLevelOff (0) | Erkennung deaktiviert |
TdrLevelBugcheck (1) | Fehlerüberprüfung beim erkannten Timeout; z. B. keine Wiederherstellung. |
TdrLevelRecoverVGA (2) | Wiederherstellen auf VGA (nicht implementiert). |
TdrLevelRecover (3) | Bei Timeout wiederherstellen (Standardwert). |
TdrDelay
Gibt an, wie viele Sekunden die GPU die Vorabanforderung des GPU-Schedulers verzögern kann. TdrDelay ist effektiv der Timeoutschwellenwert.
KeyPath : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue : TdrDelay
ValueType : REG_DWORD
ValueData : Number of seconds to delay. The default value is 2 seconds.
TdrDdiDelay
Gibt an, wie viele Sekunden das Betriebssystem Threads zum Verlassen des Treibers zugesteht. Nach einer bestimmten Zeit überprüft das Betriebssystem den Computer mit dem Code VIDEO_TDR_FAILURE (0x116).
KeyPath : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue : TdrDdiDelay
ValueType : REG_DWORD
ValueData : Number of seconds to leave the driver. The default value is 5 seconds.
TdrDebugMode
Gibt das Debugverhalten des TDR-Prozesses an. Der Standardwert ist TDR_DEBUG_MODE_RECOVER_NO_PROMPT, womit angegeben wird, dass der Debugger nicht unterbrochen werden soll.
KeyPath : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue : TdrDebugMode
ValueType : REG_DWORD
ValueData : TDR_DEBUG_MODE_XXX (see the following table)
Wert | Bedeutung |
---|---|
TDR_DEBUG_MODE_OFF (0) | Den Kerneldebugger vor der Wiederherstellung unterbrechen, damit das Timeout untersucht werden kann. |
TDR_DEBUG_MODE_IGNORE_TIMEOUT (1) | Jedes Timeout ignorieren. |
TDR_DEBUG_MODE_RECOVER_NO_PROMPT (2) | Wiederherstellen, ohne den Debugger zu unterbrechen (Standardwert). |
TDR_DEBUG_MODE_RECOVER_UNCONDITIONAL (3) | Wiederherstellung erfolgt auch dann, wenn einige Wiederherstellungsbedingungen nicht erfüllt sind (z. B. Wiederherstellung bei aufeinanderfolgenden Timeouts). |
TdrLimitTime
Gibt die Standardzeit an, in der eine bestimmte Anzahl von TDRs (angegeben durch den TdrLimitCount-Schlüssel) durchgeführt werden können, ohne dass der Computers abstürzt.
KeyPath : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue : TdrLimitTime
ValueType : REG_DWORD
ValueData : Number of seconds before crashing. The default value is 60 seconds.
TdrLimitCount
Gibt die Standardanzahl von TDRs (0x117) an, die während der mit dem TdrLimitTime-Schlüssel angegebenen Zeit durchgeführt werden können, ohne dass der Computer abstürzt.
KeyPath : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue : TdrLimitCount
ValueType : REG_DWORD
ValueData : Number of TDRs before crashing. The default value is 5.
TdrTestMode
Reserviert. Nicht verwenden.
KeyPath : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue : TdrTestMode
ValueType : REG_DWORD
ValueData : Do not use.
TdrDodPresentDelay
Gibt an, wie viele Sekunden die DxgkDdiPresentDisplayOnly-Funktion des Nur-Kernelmodusanzeige-Treibers (Kernel-mode Display-only, KMDOD) zum Abschließen eines „Asynchronous Present“ benötigt, indem der Fortschritt an pfnPresentDisplayOnlyProgress gemeldet wird (übergeben in der DXGKARG_PRESENT_DISPLAYONLY-Struktur).
KeyPath : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue : TdrDodPresentDelay
ValueType : REG_DWORD
ValueData : Number of seconds allowed for **DxgkDdiPresentDisplayOnly** to complete an asynchronous present. The default value is 2 seconds. (Min: 1, Max: 15 * 60 = 15 minutes). This value is for debugging purposes only.
TdrDodVSyncDelay
Gibt an, wie viele Sekunden der V-Sync-Watchdog wartet, bis ein V-Sync-Signal gemeldet wird und ein TDR in einem KMDOD ausgelöst wird.
KeyPath : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue : TdrDodVSyncDelay
ValueType : REG_DWORD
ValueData : Number of seconds that the V-sync watchdog waits for a V-sync to be reported before a TDR occurs with Kernel Mode Display-Only Drivers. Drivers are expected to report V-sync interrupts at the cadence of the display mode refresh rate. The default value is 2 seconds. (Min: 1s, Max: 15 * 60 = 15 minutes). This value is for debugging purposes only.