2011-02-01 14 views
16

I contatori delle prestazioni fanno parte di ETW? In caso contrario, qual è la differenza tra i due?contro ETW

risposta

29

I contatori delle prestazioni e ETW sono tecnologie distinte. I contatori delle prestazioni non sono esposti tramite ETW.

La differenza fondamentale: i contatori delle prestazioni forniscono metriche di alto livello sul comportamento del sistema (pensano i timer, i byte letti e gli oggetti allocati) mentre ETW è una funzionalità di traccia e registrazione diagnostica (si pensi ai messaggi Debug.WriteLine ma più ricchi e strutturati).

Attualmente, ETW e contatori delle prestazioni dispongono del supporto completo di Windows e, come sviluppatore, è possibile scrivere codice per produrre e consumare dati per entrambe le tecnologie.

contatori delle prestazioni

Performance counters, noto anche come PDH (helper Dati di prestazione) contatori, sono semplici metriche numerici che ti danno una sintesi di alto livello di come un particolare sistema si sta comportando. Ad esempio, % Processor Time è un contatore delle prestazioni che indica quanto tempo del processore viene utilizzato per eseguire il codice in modalità utente. Come esempio più complesso, # of Methods Jitted nella categoria .NET CLR Jit indica quanti metodi .NET sono stati compilati con JIT dall'inizio di un'applicazione.

I contatori delle prestazioni vengono generalmente utilizzati per monitorare lo stato del sistema e diagnosticare problemi di prestazioni specifici. Sono un buon indicatore dei problemi quando qualcosa va storto, ma non ti danno molti dettagli sul motivo per cui sta accadendo un particolare problema.

Per visualizzare i contatori delle prestazioni di Windows, è sufficiente eseguire perfmon. Su Vista +, potrebbe essere necessario fare clic sul nodo "Performance Monitor" per vedere il controcampo. Per accedere ai contatori delle prestazioni a livello di codice, consultare la classe System.Diagnostics.PerformanceCounter in .NET o PDH library per il codice nativo.

Event Tracing for Windows (ETW)

ETW è un sistema di tracciamento incorporato in Windows. In sostanza, qualsiasi componente (ad esempio un'applicazione utente o anche il kernel di Windows stesso) può inviare informazioni di traccia diagnostica su eventi specifici che interessano il componente. Ad esempio, il kernel invia eventi ETW all'avvio e all'arresto di un processo, quando un'immagine (ad es. DLL) viene caricata e scaricata, quando un thread viene creato o distrutto o anche quando un thread esegue un cambio di contesto. I dati registrati sono in un formato serializzato descritto dal componente altrove, consentendo agli strumenti diagnostici di leggere e comprendere gli eventi ETW registrati durante una sessione. Vedi here per un diagramma di scatole e linee di come tutto funziona insieme.

ETW è pensato per essere veloce e non dovrebbe avere un impatto significativo sulle prestazioni del sistema quando la registrazione non è abilitata. A partire da Vista, ETW è pervasivo in tutto Windows ed è destinato agli sviluppatori di applicazioni (nel senso che, in particolare, l'applicazione può essere un provider ETW che registra gli eventi). ETW è la base per il registro eventi e può essere utilizzato da profiler di prestazioni, debugger o monitor di sistema.

Vedere il mio altro SO post here per alcune risorse sull'interfacciamento con ETW.

5

Sembrerebbe che sulla base di this document a partire da Vista + i contatori delle prestazioni abbiano una facciata ETW in modo che possano essere consumati esattamente allo stesso modo di ETW.

Il nuovo contatore delle prestazioni Library (PERFLIB versione 2.0) incluso in Windows Vista® offre una serie di vantaggi per gli sviluppatori, tra cui:

un meccanismo di comunicazione tra processi standard (IPC) tra un prestatore e il consumatore che si basa sulla notifica di Event Tracing for Windows (ETW), che risulta in uno sviluppo semplificato e un codice più uniforme e affidabile.

enter image description here