Поделиться через


Обработка повторяющихся имен экземпляров

Хотя настоятельно рекомендуется, чтобы поставщики использовали уникальные имена экземпляров, не все следуют этому правилу. Соглашение о отображении повторяющихся имен экземпляров заключается в добавлении символа # и серийного номера к имени экземпляра, за исключением первого вхождения имени. Например, если в образце есть три экземпляра 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 или удалите значение.