Compartilhar via


Como: Instrumento um.NET Framework Service e coletar dados de memória usando a linha de comando do Profiler

Este tópico descreve como usar o Visual Studio Ferramentas de linha de comando de ferramentas de criação de perfil para instrumentar um .NET Framework de serviço e coletar dados de uso de memória. Você pode coletar dados de alocação de memória, ou você pode coletar alocação de memória e de dados de tempo de vida do objeto.

ObservaçãoObservação

Você não é um serviço de perfil com o método de instrumentação se o serviço não pode ser reiniciado depois que o computador for iniciado, um serviço que inicia quando o sistema operacional é iniciado.

Ferramentas de linha de comando das ferramentas de criação de perfil estão localizadas na subpasta \Team Tools\Performance ferramentas da Visual Studio diretório de instalação. Em computadores de 64 bits, as versões de 64 bits e de 32 bits das ferramentas estão disponíveis. Para usar as ferramentas de linha de comando do profiler, você deve adicionar o caminho de ferramentas para a variável de ambiente PATH da janela do prompt de comando ou adicioná-lo para o próprio comando. Para obter mais informações, consulte Especificando o caminho para as ferramentas de linha de comando de criação de perfil.

Iniciando a sessão de criação de perfil

Para coletar dados de desempenho de um .NET Framework service, use o VSPerfCLREnv.cmd ferramenta para inicializar as variáveis de ambiente apropriado e a VSInstr ferramenta para criar uma cópia instrumentada do arquivo binário do serviço.

O computador que hospeda o serviço deve ser reiniciado para configurá-lo para a criação de perfil. Você deve também iniciar o serviço manualmente do Gerenciador de controle de serviço. Você inicie o profiler e inicie o .NET Framework service.

Quando o componente instrumentado é executado, os dados da memória são coletados automaticamente para um arquivo de dados. Você pode pausar e continuar a coleta de dados durante a sessão de criação de perfil.

Para finalizar uma sessão de criação de perfil, você pode fecha o serviço e explicitamente, desligar o profiler. Na maioria dos casos, é recomendável limpar as variáveis de ambiente de criação de perfil no final de uma sessão.

Para começar a criação de perfil um.NET Framework service

  1. Abra uma janela de prompt de comando.

  2. Use o VSInstr ferramenta para gerar uma versão instrumentada o binário do serviço.

  3. Use o Gerenciador de controle de serviço para substituir o binário original pela versão instrumentada. Certifique-se de que o serviço Startup Type está definido como Manual.

  4. Inicialize as variáveis de ambiente de criação de perfil. Tipo:

    VSPerfClrEnv {/globaltracegc | /globaltracegclife}

    • /globaltracegce /globaltracegclife permitem a coleta de alocação de memória e dados de tempo de vida do objeto.

      Opção

      Descrição

      /globaltracegc

      Coleta apenas dados de alocação de memória.

      /globaltracegclife

      Coleta dados de tempo de vida de alocação e o objeto de memória.

  5. Reinicie o computador.

  6. Abra uma janela de prompt de comando.

  7. Inicie o profiler. Tipo:

    VSPerfCmd /start:trace /output**:**OutputFileOptions]

    • O /start: contention opção inicializa o profiler.

    • O **/output:**OutputFile opção é necessária com /start. OutputFileEspecifica o nome e o local do arquivo de dados (. vsp) do perfil.

    Você pode usar qualquer uma das seguintes opções com o /start:sample opção.

    ObservaçãoObservação

    O /user e /crosssession opções são geralmente necessárias para serviços.

    Opção

    Descrição

    /user:Domain\UserName

    Especifica o nome de usuário e domínio da conta que é proprietária do ASP.Processo de trabalho NET. Esta opção é necessária se o processo está sendo executado como um usuário diferente, por exemplo, o usuário conectado. O proprietário do processo está listado na coluna Nome do usuário na guia processos do Gerenciador de tarefas do Windows.

    /crosssession

    Permite criação de perfil de processos em outras sessões de logon. Esta opção é necessária se o ASP.NET aplicativo está sendo executado em uma sessão diferente. A identificação da sessão é listada na coluna de ID de sessão na guia processos do Gerenciador de tarefas do Windows. /CSpode ser especificado como uma abreviação de /crosssession.

    /waitstart:Interval]

    Especifica o número de segundos para aguardar o profiler ao inicializar antes de retornar um erro. Se Interval não for especificado, o profiler aguarda indefinidamente. Por padrão, /start retorna imediatamente.

    /GLOBALOFF

    Para iniciar o profiler com coleta de dados em pausa, adicione a /globaloff a opção para o /start a linha de comando. Use /globalon para continuar a criação de perfil.

    /Counter:Config

    Coleta informações do contador especificado na configuração de desempenho do processador. Informações sobre o contador é adicionado aos dados coletados em cada evento de criação de perfil.

    /wincounter:WinCounterPath

    Especifica um contador de desempenho do Windows a serem coletados durante perfilação.

    /automark:Interval

    Use com /wincounter somente. Especifica o número de milissegundos entre eventos de coleção de contadores de desempenho do Windows. O padrão é 500 ms.

    /Events:Config

    Especifica um evento de rastreamento de eventos para Windows (ETW) a serem coletados durante perfilação. Eventos ETW são coletados em um arquivo separado (. ETL).

  8. Se necessário, inicie o serviço.

  9. Anexe o profiler ao serviço. Tipo:

    **VSPerfCmd /attach:**PID|ProcessName

    • Especificar o ID do processo ou do nome do processo do serviço. Você pode exibir os IDs de processo e os nomes de todos os processos em execução no Gerenciador de tarefas do Windows.

Controlar a coleta de dados

Enquanto o serviço é executado, você pode controlar a coleta de dados por iniciar e parar a gravação de dados para o arquivo com VSPerfCmd.exe Opções. Controlar a coleta de dados permite coletar dados para uma parte específica da execução do programa, como iniciar ou desligar o aplicativo.

Para iniciar e interromper a coleta de dados

  • Os seguintes pares de VSPerfCmd Opções de iniciar e interromper a coleta de dados. Especifica cada opção em uma linha de comando separada. Você pode ativar a coleta de dados de logon e logoff várias vezes.

    Opção

    Descrição

    /globaloff de /GLOBALON

    Inicia (/globalon) ou pára (/globaloff) a coleta de dados para todos os processos.

    /PROCESSON:PID/processoff:PID

    Inicia (/processon) ou pára (/processoff) a coleta de dados para o processo especificado pelo ID do processo (PID).

    /THREADON:TID/threadoff:TID

    Inicia (/threadon) ou pára (/threadoff) a coleta de dados para o segmento especificado pelo identificador do segmento (TID).

  • Você também pode usar o VSPerfCmd.exe dd255359(v=vs.100).mdmarca/ a opção para inserir uma marca de criação de perfil para o arquivo de dados. O /mark comando adiciona um identificador, um carimbo de hora e uma seqüência de caracteres de um texto opcional definido pelo usuário. Marcas podem ser usadas para filtrar os dados em relatórios do profiler e exibições de dados.

Encerrando a sessão de criação de perfil

Para finalizar uma sessão de criação de perfil, feche o aplicativo que está executando o componente instrumentado, inicie o VSPerfCmd /shutdown opção para desativar o profiler e feche o arquivo de dados de criação de perfil. O VSPerfClrEnv /globaloff comando limpa a criação de perfil variáveis de ambiente.

Para finalizar uma sessão de criação de perfil

  1. Pare o serviço do Gerenciador de controle de serviço.

  2. Desligar o profiler. Tipo:

    VSPerfCmd /shutdown

  3. Quando você tiver concluído todos os profiling, desmarque as variáveis de ambiente de criação de perfil. Tipo:

    VSPerfClrEnv /globaloff

    Substitua o módulo instrumentado original. Se necessário, reconfigure o tipo de inicialização do serviço.

  4. Reinicie o computador.

Consulte também

Conceitos

Criação de perfil de linha de comando dos serviços

Outros recursos

Ferramentas de criação de perfil.Exibições de dados de memória de NET