Partilhar via


Manipulando nomes de instância duplicados

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

Infelizmente, esta convenção não resolve completamente a questão. 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 uma amostra, e essa ordem pode ser inconsistente de amostra para amostra. Por exemplo, a amostra A pode ver svchost (PID 100), svchost#1 (PID 200) e svchost#2 (PID 300). Caso o svchost com PID 100 seja encerrado, a amostra seguinte registará svchost (PID 200) e svchost#1 (PID 300). A lógica básica de correspondência tentaria fazer a correspondência entre as estatísticas de svchost#1 da amostra A (do PID 200) e as estatísticas de svchost#1 da amostra B (do PID 300), resultando em resultados inválidos para o exemplo B. Os erros ocorrem quando uma nova instância não exclusiva aparece em uma amostra ou quando uma instância não exclusiva para de aparecer em uma amostra (a menos que a instância adicionada/removida tenha sido a última).

Contraconjunto de processos

Esse problema é especialmente problemático para o contador Process porque ele usa apenas o nome EXE do processo como o nome da instância, mesmo que o nome EXE não seja exclusivo. O comportamento padrão do conjunto de contadores Process no Windows não pode ser alterado devido a problemas de compatibilidade.

Dica

O Windows 11 e versões posteriores incluem o novo Process V2 contador. Process V2 conjunto de contadores inclui a ID do processo (PID) no nome da instância, o que evita o problema de duplicação de nome do conjunto de contadores Process.

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

Atenção

Habilitar nomes de instância exclusivos para o contador 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 poderá mais encontrar essa instância depois de habilitar nomes de instância exclusivos.

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