Manipulando nomes de instância duplicados

Embora os provedores sejam fortemente incentivados a usar nomes de instância exclusivos, nem todos os provedores as usam. A convenção para exibir nomes de instância duplicadas é acrescentar um caractere # e um número de série ao nome da instância, exceto pela primeira ocorrência do nome. Por exemplo, se houver três instâncias de svchost um exemplo, os três nomes serão exibidos como svchost, svchost#1 e svchost#2.

Infelizmente, essa convenção não resolve completamente o problema. Os números de série são atribuídos com base na ordem em que um nome de instância específico aparece em um exemplo e essa ordem pode ser inconsistente de exemplo para exemplo. Por exemplo, o exemplo A pode ver svchost (PID 100), svchost#1 (PID 200) e svchost#2 (PID 300). Em seguida, se o svchost com PID 100 for desligado, a próxima amostra verá svchost (PID 200) e svchost#1 (PID 300). A lógica de correspondência básica tentaria corresponder as estatísticas svchost#1 do exemplo A (do PID 200) com as estatísticas svchost#1 do exemplo B (do PID 300), resultando em resultados inválidos para o exemplo B. Erros ocorrem quando uma nova instância não exclusiva aparece em um exemplo ou quando uma instância não exclusiva para de aparecer em um exemplo (a menos que a instância adicionada/removida tenha sido a última).

Contraconjunto de processo

Isso é especialmente problemático para o contraconjunto Process porque usa apenas o nome EXE do processo como o nome da instância, embora o nome EXE não seja exclusivo. O comportamento padrão do Process contraconjunto no Windows não pode ser alterado devido a problemas de compatibilidade.

Dica

O Windows 11 e posterior incluem o novo contraconjunto Process V2. O contraconjunto Process V2 inclui a ID do processo (PID) no nome da instância, o que evita o problema de duplicação de nome do contraconjunto Process.

Você pode alterar o comportamento dos contraconjuntos Process e Thread para usar nomes de instância exclusivos definindo os valores de registro ProcessNameFormat ou ThreadNameFormat na chave de registro HKLM\System\CurrentControlSet\Services\Perfproc\Performance.

Cuidado

Habilitar nomes de instância exclusivos para o contraconjunto Process pode fazer com que alguns programas se comportem incorretamente, já que muitos programas esperam o padrão de nomenclatura não exclusivo. Por exemplo, um programa que está procurando uma instância com um nome EXE conhecido específico não será mais capaz de encontrar essa instância depois de habilitar nomes de instância exclusivos.

O tipo de registro para esses valores é REG_DWORD. Definir o valor como 2 acrescenta o identificador de processo (PID) ao nome da instância do processo e ao identificador de thread (TID) ao nome da instância do thread. Para desabilitar esse recurso, defina o valor como 1 ou o exclua.