Informazioni su Event Tracing
Event Tracing for Windows (ETW) è una funzionalità efficiente di traccia a livello di kernel che consente di registrare eventi definiti dal kernel o 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 degli eventi, consentendo di eseguire la traccia dettagliata in un ambiente di produzione senza richiedere il riavvio del computer o dell'applicazione.
L'API Event Tracing è suddivisa in tre componenti distinti:
- Controller, che avviano e arrestano una sessione di tracciamento degli eventi e abilitano i provider
- Provider, che forniscono gli eventi
- Consumatori, che consumano gli eventi
Il diagramma seguente illustra il modello di traccia eventi.
Controller
I controller sono applicazioni che definiscono le dimensioni e il percorso del file di log, avviano e arrestano 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 ulteriori informazioni, consultare Controllo delle sessioni di tracciamento eventi.
Fornitori
I provider sono applicazioni che contengono strumentazione per il tracciamento degli eventi. Dopo che un provider si registra, un controller può quindi abilitare o disabilitare il tracciamento degli 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 che generi eventi per tutto il tempo.
Anche se il modello ETW separa il controller e il provider in applicazioni separate, un'applicazione può includere entrambi i componenti.
Per ulteriori dettagli, consulta Gestione degli 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 i sistemi legacy.
Provider MOF (versione classica):
- Usare le funzioni RegisterTraceGuids e TraceEvent per registrare e scrivere eventi.
- Usare le classi MOF per definire eventi in modo che i consumer sappiano come utilizzarli.
- Può essere attivato solo da una sessione di tracciamento alla volta.
Fornitori WPP
- Usare le funzioni RegisterTraceGuids e TraceEvent per registrare e scrivere eventi.
- I file TMF associati (compilati in un .pdb di un file binario) contengono informazioni di decodifica dedotte dalla scansione del preprocessore della strumentazione WPP nel codice sorgente.
- Può essere abilitato da una sola sessione di tracciamento alla volta.
Provider basati su manifesto:
- Usare EventRegister e EventWrite per registrare e scrivere eventi.
- Usare un manifesto per definire eventi in modo che i consumer sappiano come utilizzarli.
- È possibile abilitare fino a otto sessioni di traccia contemporaneamente.
provider di TraceLogging:
- Usare traceLoggingRegister e TraceLoggingWrite per registrare e scrivere eventi.
- Usare gli eventi auto-descrittivi in modo che gli eventi stessi contengano tutte le informazioni necessarie per consumarli.
- È possibile abilitare fino a otto sessioni di traccia contemporaneamente.
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.
Consumatori
I consumer sono applicazioni che selezionano una o più sessioni di traccia eventi come fonte di eventi. Un consumer può richiedere eventi da più sessioni di traccia eventi contemporaneamente; il sistema recapita gli eventi in ordine cronologico. I consumatori possono ricevere eventi archiviati nei file di log o da sessioni che recapitano eventi in tempo reale. Durante l'elaborazione degli 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 ulteriori informazioni, vedere Consumo di eventi.
Eventi mancanti
Perfmon, Diagnostica di sistema e altri strumenti di sistema possono segnalare 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.000. Ciò include l'intestazione ETW più i dati o il payload. Un utente non ha alcun controllo su questi eventi mancanti perché le dimensioni dell'evento sono configurate 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é le dimensioni dell'evento sono configurate dall'applicazione che registra gli eventi.
Per la registrazione in tempo reale, il consumer in tempo reale non elabora eventi abbastanza velocemente o non è presente affatto e quindi il file di supporto si sta riempiendo. Ciò può verificarsi se il servizio Registro eventi viene arrestato e avviato mentre gli eventi vengono registrati. 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 potrebbe 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 registro eventi che può ridurre il numero di eventi mancanti.