Condividi tramite


Sessioni

Windows Performance Recorder (WPR) estende Event Tracing for Windows (ETW). Una sessione di registrazione ETW è una raccolta di buffer in memoria che accetta eventi tramite l'API (Application Programming Interface) del provider ETW. Questi buffer sono in genere non di paging e vengono gestiti dal kernel. ETW assegna un buffer a ogni processore. La generazione e il buffer degli eventi ETW sono senza blocco per consentire a ETW di registrare tutti i tipi di eventi.

Ogni volta che ETW chiama il metodo EventWrite , ETW riserva spazio nel buffer corrente allocato da ETW al processore che esegue il thread chiamante. ETW copia quindi l'intestazione dell'evento e i dati utente in tale spazio. Quando il buffer è pieno, ETW scarica il buffer nel file di log della sessione di registrazione o nel consumer di streaming in tempo reale. ETW assegna quindi un buffer libero a tale processore.

Se la velocità effettiva della registrazione supera la capacità dello scaricatore di liberare buffer, tutto lo spazio disponibile nel buffer nella sessione di registrazione potrebbe non essere disponibile. Ad esempio, ciò può verificarsi perché la velocità effettiva di scrittura del disco è inferiore alla velocità effettiva dell'evento in ingresso. In questo modo EventWrite genera un errore ERROR_NOT_ENOUGH_MEMORY e perde i dati dell'evento. In questi casi, ETW incrementa la proprietà EventsLost della sessione di registrazione in modo che i consumer possano visualizzare la perdita di dati.

Per altre informazioni su come evitare di perdere eventi in una registrazione, vedere Evitare eventi persi.

Registrazione in memoria o in un file

È possibile configurare i profili per registrare i dati dell'evento nei buffer in memoria o in un file. La modalità buffering è una sessione circolare in memoria. È possibile salvare il contenuto di questa sessione come snapshot in un file ETL (Event Trace Log) su richiesta. WPR non scarica il contenuto dello spazio buffer in memoria quando si salva il contenuto.

È possibile lasciare le sessioni in modalità buffering in modo costante. Ciò è particolarmente utile se non si sa quando si verificherà il comportamento di interesse. Scegliere la modalità di buffering quando lo spazio del buffer circolare richiesto è sufficientemente piccolo da conservare in memoria. I file di log sequenziali sono ideali per scenari controllati. Ad esempio, è possibile usare file di log sequenziali per i test di regressione o quando l'occorrenza del comportamento di interesse è più semplice da prevedere.

Per altre informazioni sulle opzioni di registrazione, vedere Modalità di registrazione.

Profili di registrazione

Un profilo di registrazione controlla ogni sessione. Il profilo può essere un profilo predefinito o un profilo definito dall'utente. Per altre informazioni, vedere Profili di registrazione.

Dimensione buffer

Le dimensioni del buffer sono importanti per controllare l'efficienza di I/O e garantire che WPR non ignori eventi di grandi dimensioni. I buffer molto piccoli possono ridurre l'efficienza di scrittura di I/O. È consigliabile una dimensione minima del buffer di 64 KB o 128 KB per migliorare le prestazioni di scrittura e ridurre l'overhead del disco e gli eventi persi. Le dimensioni del buffer determinano la durata massima di una registrazione. ETW limita le dimensioni massime degli eventi a circa 64 KB.

Collezionisti

È necessario definire un agente di raccolta di sistema e uno o più agenti di raccolta eventi per una sessione nel profilo di registrazione. Il nome dell'agente di raccolta deve essere univoco per il sistema e il sistema deve avere accesso in scrittura esclusivo al file di log. Il nome del file di log deve essere univoco anche tra i nomi di file di tutti gli agenti di raccolta. WPR non espande le variabili di ambiente, quindi il percorso del file di log deve essere specificato senza variabili di ambiente. Per altre informazioni, vedere 1. Definizioni dell'agente di raccolta.

Provider

Le sessioni di registrazione raccolgono da un set definito di provider di sistema e di eventi. Si tratta di un elemento importante da configurare per ogni sessione. La maggior parte dei provider può avere una relazione molti-a-molti con le sessioni. Sono necessari provider speciali per alcuni eventi, ad esempio eventi kernel o heap. Per altre informazioni, vedere Provider.

Funzionalità WPR

Scenari comuni WPR

Profili di registrazione

Buffer

BufferSize