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.