Mengakses data pelacakan
.NET TraceProcessing tersedia dari NuGet dengan ID paket berikut:
Microsoft.Windows.EventTracing.Processing.All
Paket ini memungkinkan Anda mengakses data dalam file pelacakan. Jika Anda belum memiliki file pelacakan, Anda bisa menggunakan Perekam Performa Windows untuk membuatnya.
Contoh aplikasi konsol berikut menunjukkan cara mengakses baris perintah dari semua proses yang terkandung dalam jejak:
using Microsoft.Windows.EventTracing;
using Microsoft.Windows.EventTracing.Processes;
using System;
class Program
{
static void Main(string[] args)
{
if (args.Length != 1)
{
Console.Error.WriteLine("Usage: <trace.etl>");
return;
}
using (ITraceProcessor trace = TraceProcessor.Create(args[0]))
{
IPendingResult<IProcessDataSource> pendingProcessData = trace.UseProcesses();
trace.Process();
IProcessDataSource processData = pendingProcessData.Result;
foreach (IProcess process in processData.Processes)
{
Console.WriteLine(process.CommandLine);
}
}
}
}
Menggunakan TraceProcessor
Untuk memproses jejak, panggil TraceProcessor.Create. Antarmuka intinya adalah ITraceProcessor, dan menggunakan antarmuka ini melibatkan pola berikut:
- Pertama, beri tahu prosesor data apa yang ingin Anda gunakan dari jejak
- Kedua, proses jejak; dan
- Terakhir, akses hasilnya.
Memberi tahu prosesor jenis data apa yang Anda inginkan di depan berarti Anda tidak perlu menghabiskan waktu untuk memproses volume besar dari semua jenis data pelacakan yang mungkin. Sebagai gantinya, TraceProcessor hanya melakukan pekerjaan yang diperlukan untuk menyediakan jenis data tertentu yang Anda minta.
Pengaturan proyek yang direkomendasikan
Ada beberapa pengaturan proyek yang sebaiknya kami gunakan dengan TraceProcessor:
Sebaiknya jalankan exes sebagai 64-bit.
Default Visual Studio untuk aplikasi konsol C# .NET Framework baru adalah CPU apa pun dengan Prefer 32-bit diperiksa. Default untuk .NET mungkin sudah memiliki pengaturan yang direkomendasikan.
Pemrosesan pelacakan dapat intensif memori, terutama dengan jejak yang lebih besar, dan sebaiknya ubah target Platform ke x64 (atau hapus centang Prefer 32-bit) dalam exes yang menggunakan TraceProcessor. Untuk mengubah pengaturan ini, lihat tab Build di bawah Properti untuk proyek. Untuk mengubah pengaturan ini untuk semua konfigurasi, pastikan bahwa dropdown Konfigurasi diatur ke Semua Konfigurasi, bukan default konfigurasi saat ini saja.
Sebaiknya gunakan NuGet dengan mode PackageReference gaya yang lebih baru daripada mode packages.config yang lebih lama.
Untuk mengubah default untuk proyek baru, lihat Alat, Pengelola Paket NuGet, Pengaturan Manajer Paket, Manajemen Paket, Format manajemen paket default.
Sumber data bawaan
File .etl dapat mengambil banyak jenis data dalam pelacakan. Perhatikan bahwa data mana yang ada dalam file .etl tergantung pada penyedia apa yang diaktifkan saat jejak diambil. Daftar berikut ini memperlihatkan jenis data pelacakan yang tersedia dari TraceProcessor:
Kode | Deskripsi | Item WPA Terkait |
---|---|---|
bekas. UseClassicEvents() | Menyediakan peristiwa ETW klasik dari jejak, yang tidak menyertakan informasi skema. | Tabel Kejadian Umum (saat Jenis Peristiwa klasik atau WPP) |
bekas. UseConnectedStandbyData() | Menyediakan data dari jejak tentang sistem yang memasuki dan keluar dari siaga yang terhubung. | Tabel Ringkasan CS |
bekas. UseCpuIdleStates() | Menyediakan data dari jejak tentang status CPU. | Tabel Status Diam CPU (ketika Jenis Adalah Aktual) |
bekas. UseCpuSamplingData() | Menyediakan data dari jejak tentang penggunaan CPU berdasarkan pengambilan sampel berkala penunjuk instruksi. | Tabel Penggunaan CPU (Sampel) |
bekas. UseCpuSchedulingData() | Menyediakan data dari jejak tentang penjadwalan utas CPU, termasuk sakelar konteks dan peristiwa rangkaian siap. | Tabel Penggunaan CPU (Tepat) |
bekas. UseDevicePowerData() | Menyediakan data dari jejak tentang D-states perangkat. | Tabel DState Perangkat |
bekas. UseDirectXData() | Menyediakan data dari jejak tentang aktivitas DirectX. | Tabel Pemanfaatan GPU |
traceUseDiskIOData() | Menyediakan data dari jejak tentang aktivitas I/O Disk. | Tabel Penggunaan Disk |
bekas. UseEnergyEstimationData() | Menyediakan data dari jejak tentang perkiraan penggunaan energi per proses dari Mesin Estimasi Energi. | Tabel Ringkasan Mesin Estimasi Energi (menurut Proses) |
bekas. UseEnergyMeterData() | Menyediakan data dari jejak tentang penggunaan energi yang diukur dari Antarmuka Meter Energi (EMI). | Tabel Mesin Estimasi Energi (menurut Emi) |
bekas. UseFileIOData() | Menyediakan data dari jejak tentang aktivitas I/O File. | Tabel I/O file |
bekas. UseGenericEvents() | Menyediakan peristiwa yang dimanifestasikan dan TraceLogging dari jejak. | Tabel Peristiwa Umum (saat Jenis Peristiwa Dimanifestasikan atau TraceLogging) |
bekas. UseHandles() | Menyediakan data parsial dari jejak tentang handel kernel aktif. | Menangani tabel |
bekas. UseHardFaults() | Menyediakan data dari jejak tentang kesalahan halaman keras. | Tabel Kesalahan Keras |
bekas. UseHeapSnapshots() | Menyediakan data dari jejak tentang penggunaan timbunan proses. | Tabel Heap Snapshot |
bekas. UseHypercalls() | Menyediakan data tentang hypercalls Hyper-V yang terjadi selama pelacakan. | |
bekas. UseImageSections() | Menyediakan data dari jejak tentang bagian gambar. | Kolom Nama Bagian dari tabel Penggunaan CPU (Sampel) |
bekas. UseInterruptHandlingData() | Menyediakan data dari jejak tentang aktivitas Interrupt Service Routine (ISR) dan Deferred Procedure Call (DPC). | Tabel DPC/ISR |
bekas. UseMarks() | Menyediakan tanda (tanda waktu berlabel) dari jejak. | Menandai tabel |
bekas. UseMemoryUtilizationData() | Menyediakan data dari jejak tentang total pemanfaatan memori sistem. | Tabel Pemanfaatan Memori |
bekas. UseMetadata() | Menyediakan metadata pelacakan yang tersedia tanpa pemrosesan lebih lanjut. | Konfigurasi Sistem, Jejak, dan Umum |
bekas. UsePlatformIdleStates() | Menyediakan data dari jejak tentang target dan status diam platform aktual sistem. | Tabel Status Diam Platform |
bekas. UsePoolAllocations() | Menyediakan data dari jejak tentang penggunaan memori kumpulan kernel. | Tabel Ringkasan Kumpulan |
bekas. UsePowerConfigurationData() | Menyediakan data dari jejak tentang konfigurasi daya sistem. | Konfigurasi Sistem, Pengaturan Daya |
bekas. UsePowerDependencyCoordinatorData() | Menyediakan data dari jejak tentang fase koordinator dependensi daya aktif. | Tabel Ringkasan Fase Pemberitahuan |
bekas. UseProcesses() | Menyediakan data tentang proses aktif selama pelacakan serta gambar dan PDB mereka. | Tabel proses; Tabel gambar; Hub Simbol |
bekas. UseProcessorCounters() | Menyediakan data dari jejak tentang nilai penghitung kinerja prosesor dari Processor Counter Monitor (PCM). | |
bekas. UseProcessorFrequencyData() | Menyediakan data dari jejak tentang frekuensi prosesor berjalan. | Tabel Frekuensi Prosesor (ketika Jenis Adalah Aktual) |
bekas. UseProcessorProfileData() | Menyediakan data dari jejak tentang profil daya prosesor aktif. | Tabel Profil Prosesor |
bekas. UseProcessorParkingData() | Menyediakan data dari jejak tentang prosesor mana yang diparkir atau tidak diparkir. | Tabel Status Parkir Prosesor |
bekas. UseProcessorParkingLimits() | Menyediakan data dari jejak tentang jumlah maksimum prosesor yang diizinkan yang tidak diparkir. | Tabel Status Batas Parkir Inti |
bekas. UseProcessorQualityOfServiceData() | Menyediakan data dari jejak tentang kualitas tingkat layanan untuk setiap prosesor. | Tabel Kelas Qos Prosesor |
bekas. UseProcessorThrottlingData() | Menyediakan data dari jejak tentang pembatasan frekuensi maksimum prosesor. | Tabel Batasan Prosesor |
bekas. UseReadyBootData() | Menyediakan data dari jejak tentang aktivitas prefetching boot dari Ready Boot. | Tabel Acara Boot Siap |
bekas. UseReferenceSetData() | Menyediakan data dari jejak tentang halaman memori virtual yang digunakan oleh setiap proses. | Tabel Set Referensi |
bekas. UseRegionsOfInterest() | Menyediakan wilayah interval minat bernama dari jejak seperti yang ditentukan dalam file konfigurasi xml. | Wilayah tabel Minat |
bekas. UseRegistryData() | Menyediakan data tentang aktivitas registri selama pelacakan. | Tabel registri |
bekas. UseResidentSetData() | Menyediakan data dari jejak tentang halaman memori virtual untuk setiap proses yang tinggal dalam memori fisik. | Tabel Set Penduduk |
bekas. UseRundownData() | Menyediakan data dari jejak tentang interval saat pengumpulan data rundown jejak terjadi. | Wilayah berteduh di garis waktu grafik |
bekas. UseScheduledTasks() | Menyediakan data tentang tugas terjadwal yang berjalan selama pelacakan. | Tabel Tugas Terjadwal |
bekas. UseServices() | Menyediakan data tentang layanan yang aktif atau statusnya diambil selama pelacakan. | Tabel layanan; Konfigurasi Sistem, Layanan |
bekas. UseStacks() | Menyediakan data tentang tumpukan yang direkam selama pelacakan. | |
bekas. UseStackEvents() | Menyediakan data tentang peristiwa yang terkait dengan tumpukan yang direkam selama pelacakan. | Tabel tumpukan |
bekas. UseStackTags() | Menyediakan pemeta yang mengelompokkan tumpukan dari pelacakan ke dalam tag tumpukan seperti yang ditentukan dalam file konfigurasi XML. | Kolom seperti Tag Tumpukan dan Tumpukan (Tag Bingkai) |
bekas. UseSymbols() | Menyediakan kemampuan untuk memuat simbol untuk pelacakan. | Mengonfigurasi Jalur Simbol; Muat Simbol |
bekas. UseSyscalls() | Menyediakan data tentang skalar yang terjadi selama pelacakan. | Tabel syscalls |
bekas. UseSystemMetadata() | Menyediakan metadata umum di seluruh sistem dari jejak. | Konfigurasi Sistem |
bekas. UseSystemPowerSourceData() | Menyediakan data dari jejak tentang sumber daya sistem aktif (AC vs DC). | Tabel Sumber Daya Sistem |
bekas. UseSystemSleepData() | Menyediakan data dari jejak tentang status daya sistem secara keseluruhan. | Tabel Transisi Daya |
bekas. UseTargetCpuIdleStates() | Menyediakan data dari jejak tentang status CPU target. | Tabel Status Diam CPU (saat Jenis adalah Target) |
bekas. UseTargetProcessorFrequencyData() | Menyediakan data dari jejak tentang frekuensi prosesor target. | Tabel Frekuensi Prosesor (saat Jenis adalah Target) |
bekas. UseThreads() | Menyediakan data tentang utas yang aktif selama pelacakan. | Tabel Masa Pakai Utas |
bekas. UseTraceStatistics() | Menyediakan statistik tentang peristiwa dalam pelacakan. | Konfigurasi Sistem, Statistik Pelacakan |
bekas. UseUtcData() | Menyediakan data dari jejak aktivitas telemetri Microsoft menggunakan Universal Telemetry Client (UTC). | Tabel Utc |
bekas. UseWindowInFocus() | Menyediakan data dari jejak tentang perubahan pada jendela UI aktif yang berfokus. | Jendela dalam tabel Fokus |
bekas. UseWindowsTracePreprocessorEvents() | Menyediakan peristiwa praproscesor pelacakan perangkat lunak Windows (WPP) dari jejak. | Tabel Pelacakan WPP; Tabel Kejadian Umum (saat Jenis Peristiwa adalah WPP) |
bekas. UseWiniNetData() | Menyediakan data dari jejak tentang aktivitas internet melalui Windows Internet (WinINet). | Unduh tabel Detail |
bekas. UseWorkingSetData() | Menyediakan data dari jejak tentang halaman memori virtual yang berada dalam set kerja untuk setiap proses atau kategori kernel. | Tabel Rekam Jepret Memori Virtual |
Lihat juga metode ekstensi di ITraceSource untuk semua data pelacakan yang tersedia, atau periksa metode yang tersedia dari "jejak." yang ditunjukkan oleh IntelliSense.
Langkah berikutnya
Dalam gambaran umum ini, Anda mempelajari cara mengakses data pelacakan menggunakan TraceProcessor dan sumber data bawaan yang dapat diaksesnya.
Langkah selanjutnya adalah mempelajari cara memperluas TraceProcessor untuk mengakses data pelacakan kustom.
Windows developer