Bagikan melalui


Deteksi dan pemulihan waktu habis (TDR)

Artikel ini menjelaskan deteksi dan pemulihan batas waktu (TDR) untuk pengembang driver. Untuk informasi selengkapnya, lihat TDR di Windows 8 dan yang lebih baru.

Gambaran Umum

Salah satu masalah stabilitas paling umum dalam grafik terjadi ketika komputer tampaknya "macet" atau benar-benar "dibekukan" ketika benar-benar memproses perintah atau operasi pengguna akhir. Banyak pengguna menunggu beberapa detik dan kemudian memutuskan untuk me-reboot komputer. Penampilan komputer yang membeku sering terjadi karena GPU sibuk memproses operasi grafis intensif, biasanya selama permainan game, dan karenanya tidak memperbarui layar tampilan. TDR memungkinkan sistem operasi mendeteksi bahwa UI tidak responsif.

Gambar berikut menunjukkan proses TDR.

Diagram yang menunjukkan proses deteksi dan pemulihan waktu habis (TDR) GPU melalui WDDM.

OS mencoba mendeteksi situasi di mana komputer tampaknya "dibekukan". OS kemudian mencoba untuk secara dinamis pulih dari situasi beku sehingga desktop responsif lagi, meringankan situasi di mana pengguna akhir tidak perlu me-reboot sistem mereka.

Secara default, jika OS mendeteksi bahwa lima (5) atau lebih GPU macet (0x117) dan pemulihan berikutnya terjadi dalam satu (1) menit, OS memeriksa bug komputer pada GPU berikutnya (keenam atau lebih). Untuk informasi selengkapnya, lihat TdrLimitCount dan TdrLimitTime.

Sebagai catatan sampingan, batas waktu engine (0x141) tidak berkontribusi pada jumlah gantung GPU, meskipun OS dapat mempromosikan batas waktu mesin ke GPU yang macet jika batas waktu mesin tidak berhasil. Untuk batas waktu mesin (0x141), angka maksimum adalah satu kurang dari untuk batas waktu adaptor (0x117). Proses reset mesin memblokir akses GPU untuk proses yang menyebabkan waktu habis tersebut, dan log sistem 0x142 untuk menunjukkan fakta tersebut. Dengan cara ini, proses yang tidak berfungsi tidak memeriksa bug sistem.

Deteksi waktu habis di WDDM

Penjadwal GPU, yang merupakan bagian dari subsistem kernel grafis DirectX (Dxgkrnl.sys), mendeteksi bahwa GPU membutuhkan lebih dari jumlah waktu yang diizinkan untuk menjalankan tugas tertentu. Penjadwal GPU kemudian mencoba untuk mendahului tugas khusus ini. Operasi preempt memiliki batas waktu "tunggu", yang merupakan batas waktu TDR yang sebenarnya. Periode batas waktu default di Windows Vista dan sistem operasi yang lebih baru adalah 2 detik. Jika GPU tidak dapat menyelesaikan atau mendahului tugas saat ini dalam periode batas waktu TDR, OS mendiagnosis bahwa GPU dibekukan.

Untuk mencegah terjadinya deteksi waktu habis, vendor perangkat keras harus memastikan bahwa operasi grafis (yaitu, penyelesaian buffer DMA) membutuhkan waktu tidak lebih dari 2 detik dalam skenario pengguna akhir seperti produktivitas dan permainan game.

Persiapan untuk pemulihan

Penjadwal GPU memanggil fungsi DxgkDdiResetFromTimeout driver miniport tampilan untuk memberi tahu driver bahwa OS mendeteksi batas waktu. Driver kemudian harus menginisialisasi ulang dirinya sendiri dan mengatur ulang GPU. Selain itu, driver harus berhenti mengakses memori dan tidak boleh mengakses perangkat keras. OS dan driver mengumpulkan perangkat keras dan informasi status lainnya yang dapat berguna untuk diagnosis pasca-pemulihan.

Untuk informasi selengkapnya, lihat TDR di Windows 8 dan yang lebih baru.

Pemulihan desktop

OS mengatur ulang status tumpukan grafis yang sesuai. Manajer memori video, yang juga merupakan bagian dari Dxgkrnl.sys, menghapus menyeluruh semua alokasi dari memori video. Driver miniport tampilan mengatur ulang status perangkat keras GPU. Tumpukan grafik mengambil tindakan akhir dan memulihkan desktop ke status responsif.

Satu-satunya artefak yang terlihat dari deteksi gantung hingga pemulihan adalah kedipan layar. Kedipan ini menghasilkan ketika OS mengatur ulang beberapa bagian tumpukan grafis, yang menyebabkan gambar ulang layar. Driver miniport tampilan dapat menghilangkan redraw ini ketika sesuai dengan WDDM 1.2 dan yang lebih baru (lihat Menyediakan transisi status yang mulus di WDDM 1.2 dan yang lebih baru).

Ketika OS berhasil memulihkan desktop, OS menyelesaikan tindakan berikut:

  • Menampilkan pesan informasi kepada pengguna akhir, yang mengatakan "Driver tampilan berhenti merespons dan telah pulih."
  • Mencatat pesan sebelumnya dalam aplikasi Pemantau Peristiwa dan mengumpulkan informasi diagnosis dalam bentuk laporan debug. Jika pengguna akhir memilih untuk memberikan umpan balik, OS mengembalikan laporan debug ini ke Microsoft melalui mekanisme Analisis Crash Online (OCA).

Beberapa aplikasi DirectX warisan mungkin hanya merender hitam di akhir pemulihan ini, yang mengharuskan pengguna akhir untuk memulai ulang aplikasi ini. Aplikasi DirectX 9Ex dan DirectX 10 dan yang lebih baru yang ditulis dengan baik yang menangani teknologi Device Remove terus bekerja dengan benar. Aplikasi harus merilis lalu membuat ulang perangkat Microsoft Direct3D dan semua objek perangkat.

Sinkronisasi utas dan TDR

Lihat Sinkronisasi utas dan TDR untuk detailnya.

Menguji dan men-debug TDR

Lihat Pengujian dan penelusuran kesalahan TDR untuk detailnya.