Bagikan melalui


Penyedia runtime bahasa umum ETW

Runtime bahasa umum (CLR) memiliki dua penyedia: penyedia runtime dan penyedia rundown.

Penyedia runtime meningkatkan peristiwa, tergantung pada kata kunci mana (kategori peristiwa) yang diaktifkan. Misalnya, Anda dapat mengumpulkan peristiwa pemuat dengan mengaktifkan kata kunci LoaderKeyword.

Pelacakan Peristiwa untuk Windows (ETW) peristiwa masuk ke file yang memiliki ekstensi .etl, yang nantinya dapat diproses lebih lanjut dalam file nilai yang dipisahkan koma (.csv) sesuai kebutuhan. Untuk informasi tentang cara mengonversi file .etl ke file .csv, lihat Mengontrol Pengelogan .NET Framework.

Penyedia Runtime

Penyedia runtime adalah penyedia runtime bahasa umum ETW utama.

Penyedia runtime dari runtime bahasa umum GUID adalah e13c0d23-ccbc-4e12-931b-d9cc2eee27e4.

Untuk contoh cara mencatat dan melihat peristiwa runtime bahasa umum ETW dengan menggunakan alat yang umum tersedia, lihat Mengontrol Pengelogan .NET Framework.

Selain menggunakan kata kunci seperti LoaderKeyword, Anda mungkin harus mengaktifkan kata kunci untuk peristiwa pengelogan yang mungkin dinaikkan terlalu sering. kata kunci StartEnumerationKeyword dan EndEnumerationKeyword mengaktifkan peristiwa ini dan dirangkum dalam Kata Kunci dan Tingkat Runtime Bahasa Umum ETW.

Penyedia Rundown

Penyedia rundown harus diaktifkan untuk penggunaan tujuan khusus tertentu. Namun, untuk sebagian besar pengguna, penyedia runtime harus cukup.

Penyedia rundown runtime bahasa umum GUID adalah A669021C-C450-4609-A035-5AF59AF4DF18.

Biasanya, pengelogan ETW diaktifkan sebelum proses diluncurkan, dan pengelogan dimatikan setelah proses keluar. Namun, jika pengelogan ETW diaktifkan saat proses sedang berlangsung, informasi tambahan diperlukan tentang proses tersebut. Misalnya, untuk resolusi simbol, Anda harus mencatat peristiwa metode untuk metode yang sudah dimuat sebelum pengelogan diaktifkan.

Peristiwa DCStart dan DCEnd menangkap status proses saat pengumpulan data dimulai dan dihentikan. (Negara mengacu pada informasi pada tingkat tinggi, termasuk metode yang just-in-time (JIT) dikompilasi dan rakitan yang dimuat.) Kedua peristiwa ini dapat memberikan informasi tentang apa yang telah terjadi dalam proses; misalnya, metode mana yang dikompilasi JIT, dan sebagainya.

Hanya peristiwa dengan DC, DCStart, DCEnd, atau DCInit dalam namanya yang dinaikkan di bawah penyedia rundown. Selain itu, peristiwa ini hanya diangkat di bawah penyedia gambaran umum.

Selain filter kata kunci peristiwa, penyedia rundown juga mendukung kata kunci StartRundownKeyword dan EndRundownKeyword untuk menyediakan pemfilteran yang ditargetkan.

Mulai Rundown

Rundown mulai dipicu saat pengelogan di bawah penyedia rundown diaktifkan dengan kata kunci StartRundownKeyword. Ini menyebabkan peristiwa DCStart dinaikkan, dan menangkap status sistem. Sebelum dimulainya enumerasi, peristiwa DCStartInit dinaikkan. Di akhir enumerasi, peristiwa DCStartComplete dinaikkan untuk memberi tahu pengontrol bahwa pengumpulan data dihentikan secara normal.

Akhiri Rundown

Rundown akhir dipicu saat pengelogan di bawah penyedia rundown diaktifkan dengan kata kunci EndRundownKeyword. Gambaran umum akhir berhenti membuat profil pada proses yang terus dijalankan. Peristiwa DCEnd menangkap status sistem saat pembuatan profil dihentikan.

Sebelum dimulainya enumerasi, peristiwa DCEndInit dinaikkan. Di akhir pencacahan, peristiwa DCEndComplete dimunculkan untuk memberi tahu konsumen bahwa pengumpulan data dihentikan secara normal. Mulai gambaran umum dan gambaran umum akhir terutama digunakan untuk resolusi simbol terkelola. Ikhtisar awal dapat memberikan informasi rentang alamat untuk metode yang sudah dikompilasi JIT sebelum sesi pembuatan profil dimulai. Gambaran umum akhir dapat memberikan informasi rentang alamat untuk semua metode yang telah dikompilasi JIT saat pembuatan profil akan dimatikan.

Gambaran umum akhir tidak terjadi secara otomatis saat sesi pembuatan profil dihentikan. Sebaliknya, alat yang berusaha melakukan resolusi simbol terkelola harus secara eksplisit memanggil sesi penyedia rundown CLR dengan kata kunci EndRundownKeyword diaktifkan, tepat sebelum pembuatan profil dihentikan.

Meskipun mulai rundown atau akhiri rundown dapat memberikan informasi rentang alamat metode untuk resolusi simbol terkelola, kami sarankan Anda menggunakan kata kunci EndRundownKeyword (yang menyediakan peristiwa DCEnd) alih-alih StartRundownKeyword kata kunci (yang menyediakan peristiwa DCStart). Menggunakan StartRundownKeyword menyebabkan rundown terjadi selama sesi pembuatan profil, yang dapat mengganggu skenario yang diprofilkan.

Pengumpulan Data ETW Menggunakan Penyedia Runtime dan Rundown

Contoh berikut menunjukkan cara menggunakan penyedia gambaran umum CLR dengan cara yang memungkinkan resolusi simbol proses terkelola dengan dampak minimal, terlepas dari apakah proses dimulai atau berakhir di dalam atau di luar jendela yang diprofilkan.

  1. Aktifkan pengelogan ETW dengan menggunakan penyedia runtime CLR:

    xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4:0x1CCBD:0x5 -f clr1.etl
    

    Log akan disimpan ke file clr1.etl.

  2. Untuk menghentikan pembuatan profil saat proses terus dijalankan, mulai penyedia rundown untuk mengambil peristiwa DCEnd:

    xperf -start clrRundown -on A669021C-C450-4609-A035-5AF59AF4DF18:0xB8:0x5 -f clr2.etl
    

    Ini memungkinkan pengumpulan peristiwa DCEnd untuk memulai sesi rundown. Anda mungkin perlu menunggu 30 hingga 60 detik agar semua peristiwa dikumpulkan. Log akan disimpan ke file clr1.et2.

  3. Matikan semua pembuatan profil ETW:

    xperf -stop clrRundown
    xperf -stop clr  
    
  4. Gabungkan profil untuk membuat satu file log:

    xperf -merge clr1.etl clr2.etl merged.etl  
    

    File merged.etl akan berisi peristiwa dari runtime dan sesi penyedia gambaran umum.

Alat dapat menjalankan langkah 2 dan 3 (memulai sesi gambaran umum dan kemudian mengakhiri pembuatan profil) alih-alih segera mematikan pembuatan profil ketika pengguna meminta pembuatan profil dihentikan. Alat juga dapat menjalankan langkah 4.

Lihat juga