Новые возможности счетчиков производительности
В этом разделе описываются новые функции, добавленные в счетчики производительности для каждого выпуска.
Windows 10 20H1
Если вы считываете данные о производительности непосредственно из реестра, теперь можно выполнить сбор только метаданных, чтобы избежать ненужных операций при создании списка доступных объектов производительности и счетчиков. Если вы используете MetadataGlobal
вместо Global
в запросе, все библиотеки DLL поставщика с поддержкой метаданных пропускают этап сбора данных, что потенциально повышает производительность запросов в системах с большим количеством процессов или потоков. Библиотеки DLL поставщиков, не поддерживающие метаданные, будут работать так же, как и раньше.
Если вы предоставляете данные о производительности с помощью библиотеки DLL производительности, можно реализовать поддержку сбора только метаданных, чтобы избежать сбора ненужных данных. Обновите Collect
функцию, чтобы отвечать MetadataGlobal
на запросы и MetadataCostly
только метаданными (используйте PERF_METADATA_NO_INSTANCES
или PERF_METADATA_MULTIPLE_INSTANCES
для NumInstances
и пропускайте все PERF_INSTANCE_DEFINITION
блоки в ответе), а затем добавьте Collect Supports Metadata
значение реестра со REG_DWORD
значением 1 в подраздел службы Performance
.
Windows 7 и Windows Server 2008 R2
Средство CTRPP было изменено для улучшения и упрощения создания кода. Теперь средство создает только заголовок и файл ресурсов. Если вы хотите использовать старое поведение создания кода (не рекомендуется), можно использовать новый -legacy
аргумент .
- Теперь необходимо указать новые
-o
аргументы и-rc
, которые указывают имя и расположение заголовка и файла ресурсов соответственно. - Необязательный аргумент new
-prefix
позволяет указать строку, добавляемую в начало глобальных переменных и функций, определенных в созданном файле заголовка. - Если необходимо обновить манифест счетчиков, использование нового поколения кода избавляет от необходимости объединять предыдущую реализацию обратного вызова с новым созданным кодом, так как обратные вызовы больше не включаются в созданный код.
symbol
Новый атрибут доступен для следующих элементов манифеста:
Атрибут symbol
является обязательным для поставщика и counterSet и необязательным для счетчика. Атрибут позволяет указать символьное имя, которое можно использовать для ссылки на каждый элемент при вызове функций поставщика (например, можно использовать символическое имя набора счетчиков при вызове PerfCreateInstance).
Windows Vista
Архитектура счетчиков производительности для предоставления данных счетчиков была полностью изменена в этом выпуске.
Ранее вы использовали INI-файл для определения данных счетчиков и реализовали библиотеку DLL производительности, которая выполнялась в процессе потребителя для предоставления данных, когда потребитель запросил их. Эта архитектура является устаревшей и не рекомендуется для нового кода из-за значительных проблем с производительностью и надежностью.
Новая архитектура использует манифест для определения данных счетчика и выполняет код в процессе поставщика, чтобы предоставить данные, когда потребитель запрашивает их. Дополнительные сведения см. в статье Предоставление данных счетчика с помощью версии 2.0.
Для этого выпуска были добавлены следующие функции:
- ControlCallback
- PerfCreateInstance
- PerfDeleteInstance
- PerfQueryInstance
- PerfSetCounterSetInfo
- PerfSetULongCounterValue
- PerfSetULongLongCounterValue
- PerfSetCounterRefValue
- PerfStartProvider
- PerfStopProvider
Для этого выпуска были добавлены следующие структуры:
Список XML-элементов, используемых в манифесте для определения счетчиков, см. в разделе Схема счетчиков производительности.
Сведения о средстве предварительного процессора CTRPP, который анализирует манифест и создает код, используемый в качестве отправной точки для поставщика, см. в разделе CTRPP.