Novità dei contatori delle prestazioni
Questa sezione descrive le nuove funzionalità aggiunte ai contatori delle prestazioni per ogni versione.
Windows 10 20H1
Se si leggono i dati sulle prestazioni direttamente dal Registro di sistema, è ora possibile eseguire una raccolta di soli metadati per evitare operazioni non necessarie quando si crea un elenco di oggetti prestazioni e contatori disponibili. Se si usa MetadataGlobal
anziché Global
nella query, tutte le DLL del provider abilitate per i metadati ignorano il passaggio di raccolta dati, migliorando potenzialmente le prestazioni delle query nei sistemi con molti processi o thread. Le DLL del provider che non sono abilitate per i metadati continueranno a funzionare come in precedenza.
Se si forniscono dati sulle prestazioni usando una DLL per le prestazioni, è possibile implementare il supporto per la raccolta di soli metadati per evitare la raccolta di dati non necessaria. Aggiornare la Collect
funzione per rispondere alle MetadataGlobal
query e MetadataCostly
con solo i metadati (usare PERF_METADATA_NO_INSTANCES
o PERF_METADATA_MULTIPLE_INSTANCES
per NumInstances
e omettere tutti i PERF_INSTANCE_DEFINITION
blocchi dalla risposta), quindi aggiungere un Collect Supports Metadata
valore del Registro di sistema con REG_DWORD
il valore 1 alla sottochiave del Performance
servizio.
Windows 7 e Windows Server 2008 R2
Lo strumento CTRPP è stato modificato per migliorare e semplificare la generazione del codice. Lo strumento genera ora solo un'intestazione e un file di risorse. Se si vuole eseguire il comportamento di generazione del codice precedente (scelta non consigliata), è possibile usare il nuovo -legacy
argomento.
- È ora necessario specificare i nuovi
-o
argomenti e-rc
che specificano rispettivamente il nome e il percorso dell'intestazione e del file di risorse. - È possibile usare il nuovo
-prefix
argomento facoltativo per specificare una stringa da aggiungere all'inizio delle variabili globali e delle funzioni definite nel file di intestazione generato. - Se è necessario aggiornare il manifesto dei contatori, l'uso della nuova generazione di codice elimina la necessità di unire l'implementazione di callback precedente con il nuovo codice generato perché i callback non sono più inclusi nel codice generato.
Per gli elementi manifesto seguenti è disponibile un nuovo symbol
attributo:
L'attributo symbol
è obbligatorio per provider e counterSet ed è facoltativo per il contatore. L'attributo consente di specificare un nome simbolico che è possibile usare per fare riferimento a ogni elemento quando si chiamano le funzioni del provider( ad esempio, è possibile usare il nome simbolico del set di contatori quando si chiama PerfCreateInstance).
Windows Vista
L'architettura dei contatori delle prestazioni per fornire i dati dei contatori è stata completamente modificata per questa versione.
In precedenza, è stato usato un file INI per definire i dati del contatore ed è stata implementata una DLL delle prestazioni eseguita nel processo del consumer per fornire i dati quando un consumer lo ha richiesto. Questa architettura è deprecata e non è consigliata per il nuovo codice a causa di problemi significativi di prestazioni e affidabilità.
La nuova architettura usa un manifesto per definire i dati del contatore ed esegue il codice nel processo del provider per fornire i dati quando un consumer lo richiede. Per altri dettagli, vedere Fornire dati dei contatori con la versione 2.0.
Per questa versione sono state aggiunte le funzioni seguenti:
- ControlCallback
- PerfCreateInstance
- PerfDeleteInstance
- PerfQueryInstance
- PerfSetCounterSetInfo
- PerfSetULongCounterValue
- PerfSetULongLongCounterValue
- PerfSetCounterRefValue
- PerfStartProvider
- PerfStopProvider
Per questa versione sono state aggiunte le strutture seguenti:
Per un elenco degli elementi XML utilizzati nel manifesto per definire i contatori, vedere Schema dei contatori delle prestazioni.
Per informazioni sullo strumento di pre-processore CTRPP che analizza il manifesto e genera il codice usato come punto di partenza per il provider, vedere CTRPP.