Tentang Pelacakan Peristiwa
Pelacakan Peristiwa untuk Windows (ETW) adalah fasilitas pelacakan tingkat kernel yang efisien yang memungkinkan Anda mencatat peristiwa kernel atau yang ditentukan aplikasi ke file log. Anda dapat menggunakan peristiwa secara real time atau dari file log dan menggunakannya untuk men-debug aplikasi atau untuk menentukan di mana masalah performa terjadi dalam aplikasi.
ETW memungkinkan Anda mengaktifkan atau menonaktifkan pelacakan peristiwa secara dinamis, memungkinkan Anda melakukan pelacakan terperinci di lingkungan produksi tanpa memerlukan mulai ulang komputer atau aplikasi.
API Pelacakan Peristiwa dipecah menjadi tiga komponen yang berbeda:
- Pengontrol, yang memulai dan menghentikan sesi pelacakan peristiwa dan mengaktifkan penyedia
- Penyedia, yang menyediakan peristiwa
- Konsumen, yang mengonsumsi peristiwa
Diagram berikut menunjukkan model pelacakan peristiwa.
Pengontrol
Pengontrol adalah aplikasi yang menentukan ukuran dan lokasi file log, memulai dan menghentikan sesi pelacakan peristiwa, mengaktifkan penyedia sehingga mereka dapat mencatat peristiwa ke sesi, mengelola ukuran kumpulan buffer, dan mendapatkan statistik eksekusi untuk sesi. Statistik sesi mencakup jumlah buffer yang digunakan, jumlah buffer yang dikirimkan, dan jumlah peristiwa dan buffer yang hilang.
Untuk informasi selengkapnya, lihat Mengontrol Sesi Pelacakan Peristiwa.
Penyedia
Penyedia adalah aplikasi yang berisi instrumentasi pelacakan peristiwa. Setelah penyedia mendaftarkan dirinya sendiri, pengontrol kemudian dapat mengaktifkan atau menonaktifkan pelacakan peristiwa di penyedia. Penyedia mendefinisikan interpretasinya untuk diaktifkan atau dinonaktifkan. Umumnya, penyedia yang diaktifkan menghasilkan peristiwa, sementara penyedia yang dinonaktifkan tidak. Ini memungkinkan Anda menambahkan pelacakan peristiwa ke aplikasi Anda tanpa mengharuskannya menghasilkan peristiwa sepanjang waktu.
Meskipun model ETW memisahkan pengontrol dan penyedia ke dalam aplikasi terpisah, aplikasi dapat menyertakan kedua komponen.
Untuk informasi selengkapnya, lihat Menyediakan Peristiwa.
Jenis Penyedia
Ada empat jenis penyedia utama: penyedia MOF (klasik), penyedia WPP, penyedia berbasis manifes, dan penyedia TraceLogging. Anda harus menggunakan penyedia berbasis manifes atau penyedia TraceLogging jika Anda menulis aplikasi untuk Windows Vista atau yang lebih baru yang tidak perlu mendukung sistem warisan.
Penyedia MOF (klasik):
- Gunakan fungsi RegisterTraceGuids dan TraceEvent untuk mendaftarkan dan menulis peristiwa.
- Gunakan kelas MOF untuk menentukan peristiwa sehingga konsumen tahu cara menggunakannya.
- Hanya dapat diaktifkan oleh satu sesi pelacakan pada satu waktu.
Penyedia WPP:
- Gunakan fungsi RegisterTraceGuids dan TraceEvent untuk mendaftarkan dan menulis peristiwa.
- Telah mengaitkan file TMF (dikompilasi ke dalam .pdb biner) yang berisi informasi decoding yang disimpulkan dari pemindaian preprosedur instrumentasi WPP dalam kode sumber.
- Hanya dapat diaktifkan oleh satu sesi pelacakan pada satu waktu.
Penyedia berbasis manifes:
- Gunakan EventRegister dan EventWrite untuk mendaftarkan dan menulis peristiwa.
- Gunakan manifes untuk menentukan peristiwa sehingga konsumen tahu cara menggunakannya.
- Dapat diaktifkan hingga delapan sesi pelacakan secara bersamaan.
Penyedia TraceLogging :
- Gunakan TraceLoggingRegister dan TraceLoggingWrite untuk mendaftar dan menulis peristiwa.
- Gunakan peristiwa yang menjelaskan sendiri sehingga peristiwa itu sendiri berisi semua informasi yang diperlukan untuk mengonsumsinya.
- Dapat diaktifkan hingga delapan sesi pelacakan secara bersamaan.
Semua penyedia peristiwa pada dasarnya menggunakan keluarga Event Tracing API (TraceEvent untuk teknologi warisan dan EventWrite/EventWriteEx untuk yang lebih baru). Penyedia peristiwa hanya berbeda dalam jenis bidang apa yang mereka simpan dalam payload peristiwa dan di mana mereka menyimpan informasi pendekodean peristiwa terkait.
Konsumen
Konsumen adalah aplikasi yang memilih satu atau beberapa sesi pelacakan peristiwa sebagai sumber peristiwa. Konsumen dapat meminta peristiwa dari beberapa sesi pelacakan peristiwa secara bersamaan; sistem memberikan peristiwa dalam urutan kronologis. Konsumen dapat menerima peristiwa yang disimpan dalam file log, atau dari sesi yang mengirimkan peristiwa secara real time. Saat memproses peristiwa, konsumen dapat menentukan waktu mulai dan berakhir, dan hanya peristiwa yang terjadi dalam jangka waktu yang ditentukan yang akan dikirimkan.
Untuk informasi selengkapnya, lihat Mengonsumsi Peristiwa.
Peristiwa hilang
Perfmon, Diagnostik Sistem, dan alat sistem lainnya dapat melaporkan peristiwa yang hilang di Log Peristiwa dan menunjukkan bahwa pengaturan untuk Pelacakan Peristiwa untuk Windows (ETW) mungkin tidak optimal. Peristiwa dapat hilang karena sejumlah alasan:
Ukuran total peristiwa lebih besar dari 64K. Ini termasuk header ETW ditambah data atau payload. Pengguna tidak memiliki kontrol atas peristiwa yang hilang ini karena ukuran peristiwa dikonfigurasi oleh aplikasi.
Ukuran buffer ETW lebih kecil dari ukuran peristiwa total. Pengguna tidak memiliki kontrol atas peristiwa yang hilang ini karena ukuran peristiwa dikonfigurasi oleh aplikasi yang mencatat peristiwa.
Untuk pengelogan real-time, konsumen real-time tidak mengonsumsi peristiwa dengan cukup cepat atau tidak ada sama sekali dan kemudian file cadangan terisi. Ini dapat mengakibatkan jika layanan Log Peristiwa dihentikan dan dimulai saat peristiwa sedang dicatat. Pengguna tidak memiliki kontrol atas peristiwa yang hilang ini.
Saat masuk ke file, disk terlalu lambat untuk mengikuti tingkat pengelogan.
Untuk salah satu alasan ini, silakan laporkan masalah ini kepada penyedia aplikasi atau layanan yang menghasilkan peristiwa. Masalah ini hanya dapat diperbaiki oleh pengembang aplikasi atau layanan yang mencatat peristiwa. Jika peristiwa yang hilang dilaporkan di Layanan Log Peristiwa, ini mungkin menunjukkan masalah dengan konfigurasi layanan Log Peristiwa. Pengguna mungkin memiliki kemampuan terbatas untuk meningkatkan ruang disk maksimum yang akan digunakan oleh Layanan Log Peristiwa yang dapat mengurangi jumlah peristiwa yang hilang.