Compartilhar via


TDR (detecção e recuperação de tempo limite)

Este artigo descreve a TDR (detecção e recuperação de tempo limite) para desenvolvedores de driver. Para obter mais informações, consulte TDR no Windows 8 e posterior.

Visão geral

Um dos problemas de estabilidade mais comuns nos elementos gráficos ocorre quando um computador parece "travar" ou estar completamente "congelado" quando está realmente processando um comando ou operação do usuário final. Muitos usuários esperam alguns segundos e decidem reinicializar o computador. A aparência congelada do computador ocorre com frequência porque a GPU está ocupada processando operações gráficas intensivas, normalmente durante o jogo e, portanto, não atualiza a tela de exibição. Os TDRs permitem que o sistema operacional detecte que a interface do usuário não está respondendo.

A figura a seguir mostra o processo de TDR.

Diagrama que mostra o processo de TDR (detecção e recuperação de tempo limite) de GPUs por meio do WDDM.

O sistema operacional tenta detectar situações em que os computadores parecem estar "congelados". Em seguida, o sistema operacional tenta se recuperar dinamicamente das situações congeladas para que as áreas de trabalho sejam responsivas novamente, aliviando a situação em que os usuários finais reinicializam desnecessariamente seus sistemas.

Por padrão, se o sistema operacional detectar que cinco (5) ou mais GPUs travam (0x117) e as recuperações subsequentes ocorrem dentro de um (1) minuto, o sistema operacional verifica se o computador na próxima (sexta ou mais) GPU trava. Para obter mais informações, consulte TdrLimitCount e TdrLimitTime.

Como observação lateral, os tempos limite do mecanismo (0x141) não contribuem para a contagem de travamentos de GPU, embora o sistema operacional possa promover um tempo limite do mecanismo para um travamento de GPU se o tempo limite do motor não for bem-sucedido. Para tempos limite do mecanismo (0x141), o número máximo é um menor do que para tempos limite do adaptador (0x117). O processo de redefinição do mecanismo bloqueia o acesso à GPU para o processo que está causando esses tempos limite e os logs do sistema 0x142 para indicar esse fato. Dessa forma, o processo de mau funcionamento não marcar o sistema.

Detecção de tempo limite no WDDM

O agendador de GPU, que faz parte do subsistema de kernel de elementos gráficos DirectX (Dxgkrnl.sys), detecta que a GPU está levando mais do que o tempo permitido para executar uma tarefa específica. Em seguida, o agendador de GPU tenta antecipar essa tarefa específica. A operação de preempção tem um tempo limite de "espera", que é o tempo limite real de TDR. O período de tempo limite padrão no Windows Vista e em sistemas operacionais posteriores é de 2 segundos. Se a GPU não puder concluir ou preempção a tarefa atual dentro do período de tempo limite de TDR, o sistema operacional diagnosticará que a GPU está congelada.

Para impedir que a detecção de tempo limite ocorra, os fornecedores de hardware devem garantir que as operações gráficas (ou seja, a conclusão do buffer de DMA) levem não mais do que 2 segundos em cenários de usuário final, como produtividade e jogo.

Preparação para recuperação

O agendador de GPU chama a função DxgkDdiResetFromTimeout do driver de miniporta de exibição para informar ao driver que o sistema operacional detectou um tempo limite. Em seguida, o driver deve reinicializar-se e redefinir a GPU. Além disso, o driver deve parar de acessar a memória e não deve acessar o hardware. O sistema operacional e o driver coletam hardware e outras informações de estado que podem ser úteis para o diagnóstico pós-recuperação.

Para obter mais informações, consulte TDR no Windows 8 e posterior.

Recuperação da área de trabalho

O sistema operacional redefine o estado apropriado da pilha de gráficos. O gerenciador de memória de vídeo, que também faz parte do Dxgkrnl.sys, limpa todas as alocações da memória de vídeo. O driver de miniporta de exibição redefine o estado de hardware da GPU. A pilha de gráficos usa as ações finais e restaura a área de trabalho para o estado responsivo.

O único artefato visível da detecção de travamento para a recuperação é uma cintilação de tela. Essa cintilação resulta quando o sistema operacional redefine algumas partes da pilha de gráficos, o que causa uma redesenho da tela. O driver de miniporto de exibição pode eliminar esse redesenho quando estiver em conformidade com o WDDM 1.2 e posterior (consulte Fornecendo transições de estado contínuo no WDDM 1.2 e posterior).

Quando o sistema operacional recupera com êxito a área de trabalho, ele conclui as seguintes ações:

  • Exibe uma mensagem informativa para o usuário final, dizendo "O driver de vídeo parou de responder e se recuperou".
  • Registra a mensagem anterior no aplicativo Visualizador de Eventos e coleta informações de diagnóstico na forma de um relatório de depuração. Se o usuário final tiver optado por fornecer comentários, o sistema operacional retornará esse relatório de depuração à Microsoft por meio do mecanismo OCA (Análise de Falhas Online).

Alguns aplicativos DirectX herdados podem apenas renderizar preto no final dessa recuperação, o que exige que o usuário final reinicie esses aplicativos. Os aplicativos DirectX 9Ex e DirectX 10 e posteriores bem escritos que lidam com a tecnologia de Remoção de Dispositivo continuam funcionando corretamente. Um aplicativo deve liberar e recriar seu dispositivo Microsoft Direct3D e todos os objetos do dispositivo.

Sincronização de thread e TDR

Consulte Sincronização de threads e TDR para obter detalhes.

Teste e depuração de TDR

Consulte TDR de teste e depuração para obter detalhes.