2. Definisi Penyedia Sistem dan Peristiwa
Profil rekaman Windows Performance Recorder (WPR) disimpan dalam file XML yang memiliki ekstensi .wprp. Definisi penyedia sistem menentukan kata kunci sistem, tumpukan, dan tag kumpulan memori dalam file .wprp.
Definisi Penyedia
Item dalam file .wprp harus ditentukan dalam urutan berikut:
Semua kolektor
Penyedia sistem
Penyedia peristiwa
Penyedia heap, jika ada
Semua profil
Dalam beberapa kasus, penyedia dapat didefinisikan dalam, bukan sebelumnya, definisi profil. Contohnya:
<EventCollector Id="Collector1" Name="Sample Event Collector">
<BufferSize Value="128"/>
<Buffers Value="64"/>
</EventCollector>
<Profile Id="Sample.Verbose.File" Name="Sample" Description="Sample profile" DetailLevel="Verbose" LoggingMode="File">
<Collectors>
<EventCollectorId Value="Collector1">
<EventProviders>
<EventProvider Id="EventProvider_Microsoft-Windows-Kernel-Power" Name="Microsoft-Windows-Kernel-Power" NonPagedMemory="true">
<Keywords>
<Keyword Value="0x4"/>
</Keywords>
</EventProvider>
</EventProviders>
</EventCollectorId>
</Collectors>
</Profile>
Penyedia Sistem
Satu-satunya atribut wajib untuk definisi penyedia sistem adalah Id. Tag XML dalam menentukan kata kunci, tumpukan, dan tag kumpulan untuk diaktifkan. Untuk daftar semua kata kunci dan tumpukan yang didukung, lihat Tumpukan dan Kata Kunci (di SystemProvider).
Contoh kode berikut menunjukkan definisi penyedia sistem.
<SystemProvider
Id="system-provider">
<Keywords>
<Keyword
Value="ProcessThread"/>
<Keyword
Value="Loader"/>
<Keyword
Value="CSwitch"/>
</Keywords>
<Stacks>
<Stack
Value="ThreadCreate"/>
<Stack
Value="ReadyThread"/>
<Stack
Value="CSwitch"/>
</Stacks>
<PoolTags>
<PoolTag
Value="a*"/>
<PoolTag
Value="b*"/>
<PoolTag
Value="c*"/>
<PoolTag
Value="d*"/>
</PoolTags>
</SystemProvider>
Penyedia Kejadian
Definisi penyedia peristiwa menentukan penyedia Pelacakan Peristiwa untuk Windows (ETW) untuk digunakan dan kata kunci dan tingkat yang akan diaktifkan. Definisi penyedia peristiwa memerlukan atribut Nama wajib dan atribut Id wajib.
Atribut Name menentukan salah satu nama berikut:
Nama penyedia Crimson terdaftar, seperti "Microsoft-Windows-Search-Core".
GUID penyedia, seperti "49c2c27c-fe2d-40bf-8c4e-c3fb518037e7".
Nama penyedia sebelumnya, seperti "IE6".
Nama kasus khusus, seperti "PerfTrack" atau "DotNetProvider".
Anda dapat menggunakan atribut opsional berikut untuk menyempurnakan parameter penyedia:
Tumpukan: Menunjukkan apakah penyedia menangkap tumpukan. Pengaturan defaultnya adalah "false".
Tingkat: Menentukan tingkat pengelogan ETW. Pengaturan defaultnya adalah 0xFF.
NonPagedMemory: Menunjukkan apakah WPR menggunakan memori non-halaman untuk buffer untuk penyedia ini. Pengaturan defaultnya adalah "false".
Peringatan Beberapa penyedia peristiwa Windows memerlukan penggunaan memori yang tidak disebarkan selama pengambilan jejak. Contoh penyedia peristiwa yang memerlukan NonPagedMemory adalah
EventProvider_Microsoft-Windows-Win32k
.CaptureStateOnly: Jika diatur ke "true", menunjukkan bahwa WPR mengaktifkan penyedia ini pada status pengambilan yang ditentukan Saja.
SID: Menentukan apakah data yang diperluas dari peristiwa yang dicatat menyertakan pengidentifikasi keamanan (SID) pengguna.
TSID: Jika diatur ke "true", menentukan pengidentifikasi sesi terminal ke data yang diperluas dari peristiwa yang dicatat.
Tag XML dalam opsional menentukan kata kunci yang akan diaktifkan. Tidak seperti penyedia sistem, penyedia peristiwa tidak memiliki konstanta tekstual yang ditentukan. Oleh karena itu, penyedia peristiwa memiliki nilai heksadesimal. Namun, sintaksnya sama dengan penyedia sistem. Jika Anda tidak menentukan kata kunci, nilai defaultnya adalah 0xFFFFFFFFFFFFFFFF.
Penyedia Peristiwa Timbunan
Definisi penyedia heap menentukan pengidentifikasi proses proses tempat WPR menangkap peristiwa heap. Id adalah satu-satunya atribut wajib. Elemen turunan HeapProcessId tidak wajib. Elemen ini menentukan atribut Id proses dari proses yang ingin Anda analisis. Contoh berikut menunjukkan cara melakukannya.
<HeapEventProvider
Id="Base_Heap_Provider">
</HeapEventProvider>
<HeapEventProvider
Base="Base_Heap_Provider"
Id="Derived_Heap_Provider">
<HeapProcessIds Operation="Set">
<HeapProcessId Value="2314"/>
</HeapProcessIds>
</HeapEventProvider>
Penyedia Capture-State
Tidak seperti penyedia reguler yang diaktifkan di seluruh sesi pelacakan, penyedia status tangkapan diaktifkan hanya saat Anda menyimpan atau memulai sesi pengambilan. Contoh berikut menunjukkan penyedia reguler dan capture-state.
<EventProvider Id="sample-provider" Name="SampleProvider" NonPagedMemory="true" Level="5">
<Keywords>
<Keyword Value="0x98"/> <!-- Provider is enabled with these keywords throughout the tracing session. -->
</Keywords>
<CaptureStateOnStart>
<Keyword Value="0xff4"/> <!-- Provider is enabled with these keywords when tracing is started. -->
</CaptureStateOnStart>
<CaptureStateOnSave>
<Keyword Value="0x118"/> <!-- Provider is enabled with these keywords when tracing is saved. -->
</CaptureStateOnSave>
</EventProvider>
<EventProvider Id="EventProvider_DWMWin32k_CaptureState" Name="e7ef96be-969f-414f-97d7-3ddb7b558ccc" NonPagedMemory="true" CaptureStateOnly="true" >
<!-- CaptureStateOnly="true" means provider is not enabled throughout the tracing session. -->
<CaptureStateOnSave>
<Keyword Value="0x80000"/> <!-- Provider is enabled with these keywords when tracing is saved. -->
</CaptureStateOnSave>
</EventProvider>
Contoh
Contoh kode berikut mendefinisikan dua penyedia peristiwa.
<EventProvider
Id="Win32K-provider"
Name="Microsoft-Windows-Win32K"
NonPagedMemory="true"
Stack="true">
<Keywords>
<Keyword
Value="0x240000"/>
</Keywords>
</EventProvider>
<EventProvider
Id="Search-Core-provider"
Name="Microsoft-Windows-Search-Core"/>