ETW (Event Tracing for Windows)
Ketika membahas performa dan observabilitas di Windows, ETW (Event Tracing for Windows) adalah salah satu teknologi paling penting namun sering tersembunyi, yang menjadi fondasi banyak tool monitoring modern. ETW digunakan langsung oleh Windows kernel dan hampir semua komponen inti sistem operasi untuk melakukan logging dengan overhead yang sangat rendah.
Artikel ini akan membahas apa itu ETW, bagaimana cara kerjanya, dan mengapa ETW disebut sebagai teknologi logging super cepat.
Apa Itu ETW?
Event Tracing for Windows (ETW) adalah framework logging dan tracing berperforma tinggi yang diperkenalkan oleh Microsoft sejak Windows XP dan terus dikembangkan hingga Windows versi terbaru.
ETW memungkinkan:
- Kernel Windows
- Driver
- Service
- Aplikasi user-mode
untuk mengirim event secara asynchronous ke buffer memori terpusat, tanpa harus melakukan I/O disk secara langsung.
Hasilnya?
Logging cepat, scalable, dan aman bahkan di sistem dengan beban tinggi.
Mengapa ETW Sangat Cepat?
Kecepatan ETW berasal dari beberapa desain fundamental:
1. Buffering di Kernel
Event tidak langsung ditulis ke file log.
Sebaliknya:
- Event disimpan di per-CPU memory buffer
- Ditulis ke disk atau dikonsumsi real-time hanya ketika diperlukan
Ini menghindari:
- Context switch berlebihan
- Lock contention
- Disk I/O blocking
2. Zero / Low Copy Design
ETW meminimalkan proses penyalinan data antara:
- Kernel → User mode
- Provider → Consumer
Semakin sedikit copy data, semakin kecil overhead CPU.
3. Event Berbasis Binary, Bukan Text
Berbeda dengan log berbasis teks (JSON, plain text), ETW:
- Menyimpan data dalam format binary terstruktur
- Parsing dilakukan oleh consumer, bukan producer
Ini jauh lebih efisien dibanding:
"Process started with PID=1234, Path=C:\Program Files\..."
4. Per-CPU Logging
Setiap CPU memiliki buffer sendiri, sehingga:
- Hampir tidak ada lock
- Skalabilitas sangat tinggi di sistem multi-core
Komponen Utama ETW
ETW terdiri dari tiga komponen utama:
1. Provider
Sumber event. Contoh:
- Kernel (process, thread, disk, network)
- Driver
- Aplikasi custom
Provider mendefinisikan:
- Event ID
- Payload
- Level (Info, Warning, Error)
2. Controller
Mengatur sesi ETW:
- Mengaktifkan / menonaktifkan provider
- Mengatur level dan filter event
- Mengelola buffer
Contoh controller:
logman- Windows Performance Recorder (WPR)
3. Consumer
Membaca event:
- Real-time
- Dari file
.etl
Contoh consumer:
- Windows Performance Analyzer (WPA)
xperf- Aplikasi monitoring custom
Kernel ETW vs User ETW
Kernel ETW
Digunakan untuk:
- Process / Thread lifecycle
- File I/O
- Network
- Context switch
- Interrupt & DPC
Biasanya dipakai oleh:
- Performance profiler
- Security monitoring
- EDR / XDR
User-mode ETW
Digunakan oleh aplikasi:
- .NET runtime
- IIS
- SQL Server
- Aplikasi custom
Contoh:
.NET EventSource sebenarnya adalah wrapper ETW.
ETW di Dunia Nyata
Banyak tool populer berbasis ETW, misalnya:
- Windows Performance Analyzer (WPA)
- Process Monitor
- Windows Defender / Security Auditing
- EDR & MDM Agent
- Network & Disk Profiler
Bahkan Task Manager dan Windows Settings mengambil sebagian datanya dari ETW.
Kapan Harus Menggunakan ETW?
ETW sangat cocok jika kamu:
- Membuat agent monitoring
- Membangun EDR / MDM
- Melakukan profiling performa
- Butuh observabilitas real-time di Windows
- Ingin logging tanpa mengorbankan performa
Untuk aplikasi Windows tingkat lanjut, ETW adalah gold standard.
Kesimpulan
ETW adalah tulang punggung observabilitas Windows.
Ia memungkinkan logging dan tracing dalam skala besar tanpa menghancurkan performa sistem.
Jika kamu membangun software Windows yang serius—terutama di area security, monitoring, atau performance—memahami ETW bukan lagi opsional, tapi sebuah keharusan.