TDR(시간 제한 검색 및 복구)

이 문서에서는 드라이버 개발자를 위한 TDR(시간 제한 검색 및 복구)에 대해 설명합니다. 자세한 내용은 Windows 8 이상에서 TDR을 참조하세요.

개요

그래픽에서 가장 일반적인 안정성 문제 중 하나는 컴퓨터가 실제로 최종 사용자 명령 또는 작업을 처리할 때 "중단" 또는 완전히 "고정"된 것처럼 보일 때 발생합니다. 많은 사용자가 몇 초 정도 기다린 다음 컴퓨터를 다시 부팅하기로 결정합니다. 컴퓨터의 고정된 모양은 GPU가 일반적으로 게임 플레이 중에 집중적인 그래픽 작업을 처리하는 데 사용 중이므로 디스플레이 화면을 업데이트하지 않기 때문에 자주 발생합니다. TDR을 사용하면 운영 체제에서 UI가 응답하지 않는지 검색할 수 있습니다.

다음 그림은 TDR 프로세스를 보여줍니다.

WDDM을 통한 GPU의 TDR(시간 제한 검색 및 복구) 프로세스를 보여 주는 다이어그램

OS는 컴퓨터가 "고정"된 것처럼 보이는 상황을 검색하려고 시도합니다. 그런 다음 OS는 데스크톱이 다시 응답할 수 있도록 고정된 상황에서 동적으로 복구하려고 시도하여 최종 사용자가 불필요하게 시스템을 다시 부팅하는 상황을 완화합니다.

기본적으로 OS에서 5개 이상의 GPU 중단(0x117)이 감지되고 1분 이내에 후속 복구가 발생하는 경우 OS는 다음(여섯 번째 이상) GPU 중단 시 컴퓨터를 버그 검사합니다. 자세한 내용은 TdrLimitCountTdrLimitTime을 참조하세요.

참고로, 엔진 시간 제한(0x141)은 GPU 중단 횟수에 영향을 주지 않지만, OS는 엔진 시간 제한이 실패할 경우 엔진 시간 제한을 GPU 중단으로 승격할 수 있습니다. 엔진 시간 제한(0x141)의 경우 최대 수는 어댑터 시간 제한(0x117)보다 1보다 적습니다. 엔진 초기화 프로세스는 이러한 시간 제한을 일으키는 프로세스에 대한 GPU 액세스를 차단하고 시스템 로그는 해당 사실을 나타내기 위해 0x142 . 이러한 방식으로 오작동하는 프로세스는 시스템에 버그를 검사 않습니다.

WDDM의 시간 제한 검색

DirectX 그래픽 커널 하위 시스템(Dxgkrnl.sys)의 일부인 GPU 스케줄러는 GPU가 특정 작업을 실행하는 데 허용되는 시간보다 더 많은 시간이 걸리는 것을 감지합니다. 그런 다음 GPU 스케줄러는 이 특정 작업을 선점하려고 시도합니다. 선점 작업에는 실제 TDR 시간 제한인 "대기" 시간 제한이 있습니다. Windows Vista 이상 운영 체제의 기본 시간 제한 기간은 2초입니다. GPU가 TDR 시간 제한 기간 내에 현재 작업을 완료하거나 선점할 수 없는 경우 OS는 GPU가 고정됨을 진단합니다.

시간 제한 검색이 발생하지 않도록 하드웨어 공급업체는 생산성 및 게임 플레이와 같은 최종 사용자 시나리오에서 그래픽 작업(즉, DMA 버퍼 완성)이 2초 이상 걸리지 않도록 해야 합니다.

복구 준비

GPU 스케줄러는 디스플레이 미니포트 드라이버의 DxgkDdiResetFromTimeout 함수를 호출하여 OS가 시간 제한을 감지했음을 드라이버에 알릴 수 있습니다. 그런 다음 드라이버는 자신을 다시 초기화하고 GPU를 다시 설정해야 합니다. 또한 드라이버는 메모리 액세스를 중지해야 하며 하드웨어에 액세스해서는 안 됩니다. OS와 드라이버는 복구 후 진단에 유용할 수 있는 하드웨어 및 기타 상태 정보를 수집합니다.

자세한 내용은 Windows 8 이상에서 TDR을 참조하세요.

데스크톱 복구

OS는 그래픽 스택의 적절한 상태를 다시 설정합니다. 또한Dxgkrnl.sys일부인 비디오 메모리 관리자는 비디오 메모리에서 모든 할당을 제거합니다. 디스플레이 미니포트 드라이버는 GPU 하드웨어 상태를 다시 설정합니다. 그래픽 스택은 최종 작업을 수행하고 데스크톱을 반응형 상태로 복원합니다.

중단 검색에서 복구에 이르는 유일한 표시 아티팩트가 화면 깜박임입니다. 이 깜박임은 OS가 그래픽 스택의 일부 부분을 다시 설정하여 화면을 다시 그릴 때 발생합니다. 디스플레이 미니포트 드라이버는 WDDM 1.2 이상을 준수할 때 이 다시 그리기를 제거할 수 있습니다( WDDM 1.2 이상에서 원활한 상태 전환 제공 참조).

OS가 데스크톱을 성공적으로 복구하면 다음 작업을 완료합니다.

  • "디스플레이 드라이버가 응답을 중지하고 복구되었습니다"라는 정보 메시지를 최종 사용자에게 표시합니다.
  • 이벤트 뷰어 애플리케이션에서 이전 메시지를 기록하고 디버그 보고서 형식으로 진단 정보를 수집합니다. 최종 사용자가 피드백을 제공하기로 선택한 경우 OS는 OCA(온라인 충돌 분석) 메커니즘을 통해 이 디버그 보고서를 Microsoft에 반환합니다.

일부 레거시 DirectX 애플리케이션은 이 복구가 끝날 때 검은색으로 렌더링될 수 있으므로 최종 사용자가 이러한 애플리케이션을 다시 시작해야 합니다. 디바이스 제거 기술을 처리하는 잘 작성된 DirectX 9Ex 및 DirectX 10 이상 애플리케이션은 계속 올바르게 작동합니다. 애플리케이션은 Microsoft Direct3D 디바이스와 모든 디바이스의 개체를 해제한 다음 다시 만들어야 합니다.

스레드 동기화 및 TDR

자세한 내용은 스레드 동기화 및 TDR 을 참조하세요.

TDR 테스트 및 디버깅

자세한 내용은 TDR 테스트 및 디버깅을 참조하세요.