Informazioni su Event Tracing

Event Tracing for Windows (ETW) è una funzionalità di traccia a livello di kernel efficiente che consente di registrare eventi kernel o definiti dall'applicazione in un file di log. È possibile utilizzare gli eventi in tempo reale o da un file di log e usarli per eseguire il debug di un'applicazione o per determinare dove si verificano problemi di prestazioni nell'applicazione.

ETW consente di abilitare o disabilitare dinamicamente la traccia eventi, consentendo di eseguire traccia dettagliata in un ambiente di produzione senza richiedere il riavvio di computer o applicazioni.

L'API Traccia eventi è suddivisa in tre componenti distinti:

  • Controller, che avviano e arrestano una sessione di traccia eventi e abilitano i provider
  • Provider, che forniscono gli eventi
  • Consumer, che utilizzano gli eventi

Il diagramma seguente mostra il modello di traccia eventi.

modello di traccia eventi

Controllers

I controller sono applicazioni che definiscono le dimensioni e il percorso del file di log, avviano e arrestano le sessioni di traccia eventi, consentono ai provider di registrare gli eventi nella sessione, gestire le dimensioni del pool di buffer e ottenere statistiche di esecuzione per le sessioni. Le statistiche di sessione includono il numero di buffer usati, il numero di buffer recapitati e il numero di eventi e buffer persi.

Per altre informazioni, vedere Controllo delle sessioni di traccia eventi.

Provider

I provider sono applicazioni che contengono strumentazione di traccia eventi. Dopo la registrazione di un provider, un controller può quindi abilitare o disabilitare la traccia eventi nel provider. Il provider definisce l'interpretazione dell'abilitazione o della disabilitazione. In genere, un provider abilitato genera eventi, mentre un provider disabilitato non lo fa. In questo modo è possibile aggiungere la traccia eventi all'applicazione senza che sia necessario generare eventi sempre.

Anche se il modello ETW separa il controller e il provider in applicazioni separate, un'applicazione può includere entrambi i componenti.

Per altre informazioni, vedere Fornitura di eventi.

Tipi di provider

Esistono quattro tipi principali di provider: provider MOF (classici), provider WPP, provider basati su manifesto e provider TraceLogging. È consigliabile usare un provider basato su manifesto o un provider TraceLogging se si scrivono applicazioni per Windows Vista o versioni successive che non devono supportare sistemi legacy.

Provider MOF (versione classica):

  • Usare le funzioni RegisterTraceGuids e TraceEvent per registrare e scrivere eventi.
  • Usare le classi MOF per definire gli eventi in modo che i consumer sappiano come utilizzarli.
  • Può essere abilitato da una sola sessione di traccia alla volta.

Provider WPP:

  • Usare le funzioni RegisterTraceGuids e TraceEvent per registrare e scrivere eventi.
  • Sono stati associati file TMF (compilati in pdb di un file binario) contenenti informazioni di decodifica dedotti dall'analisi del preprocessore della strumentazione WPP nel codice sorgente.
  • Può essere abilitato da una sola sessione di traccia alla volta.

Provider basati su manifesto:

  • Usare EventRegister e EventWrite per registrare e scrivere eventi.
  • Usare un manifesto per definire gli eventi in modo che gli utenti sappiano come utilizzarli.
  • Può essere abilitato contemporaneamente da un massimo di otto sessioni di traccia.

Provider TraceLogging :

  • Usare TraceLoggingRegister e TraceLoggingWrite per registrare e scrivere eventi.
  • Usare eventi autodescrittura in modo che gli eventi stessi contengano tutte le informazioni necessarie per utilizzarli.
  • Può essere abilitato contemporaneamente da un massimo di otto sessioni di traccia.

Tutti i provider di eventi usano fondamentalmente la famiglia di API Event Tracing (TraceEvent per le tecnologie legacy e EventWrite EventWriteEx/ per quelli più recenti). I provider di eventi differiscono semplicemente nei tipi di campo archiviati nei payload degli eventi e in cui archiviano le informazioni di decodifica degli eventi associate.

Consumer

I consumer sono applicazioni che selezionano una o più sessioni di traccia eventi come origine di eventi. Un consumer può richiedere eventi da più sessioni di traccia eventi contemporaneamente; il sistema recapita gli eventi in ordine cronologico. I consumer possono ricevere eventi archiviati nei file di log o da sessioni che recapitano eventi in tempo reale. Durante l'elaborazione di eventi, un consumer può specificare l'ora di inizio e di fine e verranno recapitati solo gli eventi che si verificano nell'intervallo di tempo specificato.

Per altre informazioni, vedere Utilizzo di eventi.

Eventi mancanti

Perfmon, Diagnostica di sistema e altri strumenti di sistema possono segnalare gli eventi mancanti nel registro eventi e indicare che le impostazioni per Event Tracing for Windows (ETW) potrebbero non essere ottimali. Gli eventi possono essere persi per diversi motivi:

  • La dimensione totale dell'evento è maggiore di 64 KB. Ciò include l'intestazione ETW più i dati o il payload. Un utente non ha alcun controllo su questi eventi mancanti perché la dimensione dell'evento è configurata dall'applicazione.

  • Le dimensioni del buffer ETW sono inferiori alle dimensioni totali dell'evento. Un utente non ha alcun controllo su questi eventi mancanti perché la dimensione dell'evento è configurata dall'applicazione che registra gli eventi.

  • Per la registrazione in tempo reale, il consumer in tempo reale non consuma gli eventi abbastanza velocemente o non è presente completamente e quindi il file di backup viene riempito. Ciò può determinare se il servizio Registro eventi viene arrestato e avviato quando vengono registrati gli eventi. Un utente non ha alcun controllo su questi eventi mancanti.

  • Quando si esegue la registrazione in un file, il disco è troppo lento per rimanere al passo con la frequenza di registrazione.

Per uno di questi motivi, segnalare questi problemi al provider dell'applicazione o del servizio che genera gli eventi. Questi problemi possono essere risolti solo dallo sviluppatore dell'applicazione o dal servizio che registra gli eventi. Se gli eventi mancanti vengono segnalati nel servizio registro eventi, questo può indicare un problema con la configurazione del servizio Registro eventi. L'utente potrebbe avere una capacità limitata di aumentare lo spazio massimo su disco da usare dal servizio log eventi, riducendo il numero di eventi mancanti.