Обработка повторяющихся имен экземпляров
Хотя настоятельно рекомендуется, чтобы поставщики использовали уникальные имена экземпляров, не все следуют этому правилу. Соглашение о отображении повторяющихся имен экземпляров заключается в добавлении символа #
и серийного номера к имени экземпляра, за исключением первого вхождения имени. Например, если в образце есть три экземпляра svchost
, три имена отображаются как svchost
, svchost#1
и svchost#2
.
К сожалению, эта конвенция не полностью устраняет проблему. Серийные номера назначаются в зависимости от порядка, в котором в образце отображается определенное имя экземпляра, и этот порядок может быть неравномерным от образца к образцу. Например, пример A может увидеть svchost
(PID 100), svchost#1
(PID 200) и svchost#2
(PID 300). Затем, если svchost с PID 100 завершает работу, следующая выборка покажет svchost
(PID 200) и svchost#1
(PID 300). Базовая логика сопоставления попытается сопоставить статистику svchost#1
образца A (из PID 200) для статистики svchost#1
образца B (из PID 300), что приведет к недопустимым результатам для примера B. Ошибки возникают, когда новый неуникаленный экземпляр отображается в образце или когда не уникальный экземпляр перестает отображаться в образце (если только добавленный или удаленный экземпляр не был последним).
Набор счетчиков процессов
Эта проблема наиболее ощутима для набора счетчиков Process
, поскольку используется только имя EXE процесса в качестве имени экземпляра, даже если оно не является уникальным. Поведение набора счетчиков Process
по умолчанию в Windows невозможно изменить из-за проблем совместимости.
Совет
Windows 11 и более поздние версии включают новый набор счетчиков Process V2
. Набор счетчиков Process V2
включает идентификатор процесса (PID) в имя экземпляра, что позволяет избежать дублирования имен набора счетчиков Process
.
Можно изменить поведение наборов счетчиков Process
и Thread
для использования уникальных имен экземпляров, задав значения реестра ProcessNameFormat
или ThreadNameFormat
в разделе реестра HKLM\System\CurrentControlSet\Services\Perfproc\Performance
.
Осторожность
Включение уникальных имен экземпляров для набора счетчиков Process
может привести к неправильной работе некоторых программ, так как многие программы ожидают неуникального шаблона именования. Например, программа, которая ищет экземпляр с определенным известным именем EXE, больше не сможет найти этот экземпляр после включения уникальных имен экземпляров.
Тип реестра для этих значений — REG_DWORD
. При установке значения 2
к имени экземпляра процесса добавляется идентификатор процесса (PID), а к имени экземпляра потока добавляется идентификатор потока (TID). Чтобы отключить эту функцию, задайте значение 1 или удалите значение.