Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menyediakan informasi tentang laporan garis waktu dalam "Threads view" pada Concurrency Visualizer.
Waktu eksekusi (Tampilan Utas)
Segmen-segmen ini dalam garis waktu Tampilan Utas mewakili waktu eksekusi, ketika utas secara aktif melakukan pekerjaan pada inti logis dalam sistem.
Perubahan status utas terdeteksi melalui peristiwa pengalihan konteks kernel. Pelacakan Peristiwa untuk Windows (ETW) menangkap tumpukan sampel setiap milidetik. Dalam segmen hijau yang sangat pendek, ada kemungkinan bahwa tidak ada sampel yang diambil. Oleh karena itu, dalam beberapa segmen eksekusi yang singkat, mungkin tidak terlihat tumpukan panggilan.
Saat Anda mengklik segmen eksekusi, Visualisasi Konkurensi menampilkan tumpukan sampel terdekat dengan lokasi klik. Lokasi tumpukan sampel tersebut diperlihatkan oleh panah hitam, atau tanda sisipan, di atas garis waktu dan tumpukan sampel muncul pada tab Saat ini .
Untuk melihat profil pengambilan sampel tradisional untuk semua segmen eksekusi dalam tampilan saat ini, klik Eksekusi di Profil Garis Waktu yang Terlihat.
Waktu I/O (Tampilan Thread)
Segmen-segmen pada garis waktu ini dikaitkan dengan waktu pemblokiran yang dikategorikan sebagai I/O. Ini berarti bahwa utas sedang menunggu operasi input/output selesai. Thread mungkin telah diblokir dalam sebuah API, atau oleh kernel terkait I/O menunggu yang dihitung oleh Concurrency Visualizer sebagai I/O. API seperti CreateFile(), ReadFile(), dan WSARecv() termasuk dalam grup ini.
Waktu manajemen memori
Segmen-segmen ini dalam garis waktu dikaitkan dengan waktu pemblokiran yang dikategorikan sebagai Manajemen Memori. Skenario ini menyiratkan bahwa sebuah utas diblokir oleh peristiwa yang terkait dengan operasi manajemen memori seperti paging. Selama waktu ini, utas telah diblokir dalam status API atau kernel yang dihitung oleh Visualizer Konkurensi sebagai manajemen memori. Ini termasuk peristiwa seperti paging dan alokasi memori.
Periksa tumpukan panggilan terkait dan laporan profil untuk lebih memahami alasan dasar untuk blok yang dikategorikan sebagai Manajemen Memori.
Waktu preemptif
Segmen-segmen ini dalam garis waktu dikaitkan dengan waktu pemblokiran yang dikategorikan sebagai Preemption. Kategori ini menyiratkan bahwa utas dialihkan karena salah satu alasan berikut:
Penjadwal menggantinya dengan menggunakan utas prioritas yang lebih tinggi.
Kuantum eksekusi utas kedaluwarsa dan utas lainnya siap dijalankan.
Selama waktu ini, utas telah diblokir oleh alasan penantian kernel yang dihitung oleh Concurrency Visualizer sebagai Preemption. Segmen preemption dimulai ketika utas dikeluarkan dari inti logis utama, dan berakhir ketika utas tersebut dioperasikan kembali.
Tooltip untuk segmen yang di-preempted menampilkan nama proses atau utas yang menyebabkan preemption. Namun, ini tidak menyiratkan bahwa proses atau utas yang mengambil alih benar-benar berjalan sepanjang periode yang didahului.
Waktu tidur
Segmen-segmen pada garis waktu ini dikaitkan dengan waktu pemblokiran yang dikategorikan sebagai Tidur. Kategori tidur menyiratkan bahwa utas secara sukarela menyerahkan inti logisnya dan tidak melakukan pekerjaan. Selama waktu ini, sebuah utas diblokir dalam API yang dihitung oleh Concurrency Visualizer sebagai waktu tidur. API seperti Sleep() dan SwitchToThread() termasuk dalam grup ini.
Waktu sinkronisasi
Segmen ini dalam garis waktu dikaitkan dengan waktu pemblokiran yang dikategorikan sebagai Sinkronisasi. Ketika sebuah utas ditandai sebagai diblokir dalam proses sinkronisasi, salah satu dari hal-hal ini tersirat:
Eksekusi utas mungkin telah mengakibatkan panggilan ke API sinkronisasi utas terkenal seperti
EnterCriticalSection()atauWaitForSingleObject().Algoritma pencocokan API tidak dapat sepenuhnya menyeluruh, sehingga beberapa API yang dapat dipetakan ke kategori lain juga dapat muncul sebagai sinkronisasi karena kerangka dalam tumpukan panggilan akhirnya mencapai fungsi primitif pemblokiran kernel yang mendasar yang dipetakan ke kategori ini.
Untuk memahami penyebab mendasar dari peristiwa thread terblokir, periksalah stack panggilan pemblokiran dan laporan profil secara cermat.
Waktu pemrosesan UI
Segmen-segmen ini dalam garis waktu dikaitkan dengan waktu pemblokiran yang dikategorikan sebagai Pemrosesan UI. Ini menyiratkan bahwa sebuah thread sedang memproses pesan Windows atau melakukan pekerjaan antarmuka pengguna (UI) lainnya. Selama periode ini, sebuah utas telah diblokir dalam API yang dianggap oleh Concurrency Visualizer sebagai Pemrosesan UI. API seperti GetMessage() dan MsgWaitForMultipleObjects() termasuk dalam grup ini.
Jika tidak ada API pemblokiran yang telah ditentukan sebelumnya yang diidentifikasi, tinjau tumpukan panggilan dan laporan profil untuk menentukan penyebab penundaan yang mendasarinya.
Kategori Pemrosesan UI membantu Anda memahami respons aplikasi GUI, dan diinginkan dalam aplikasi yang bergantung pada respons UI. Misalnya, jika utas UI dalam aplikasi mencapai waktu 100% dalam memproses UI, mungkin responsif. Namun, jika utas UI menghabiskan banyak waktu dalam kategori lain, cari akar penyebabnya dan pertimbangkan opsi untuk mengurangi kategori non-UI pada utas tersebut.