Medir o desempenho do aplicativo na linha de comando

Colete informações de desempenho sobre um aplicativo usando ferramentas de linha de comando. Você pode coletar os dados de desempenho para uso da CPU, alocação de memória .NET, instrumentação e consultas a bancos de dados.

No exemplo descrito neste artigo, você coletará informações de desempenho para o Bloco de notas da Microsoft, mas o mesmo método poderá ser usado para analisar qualquer processo.

Observação

Para instrumentação do C/C++ a partir da linha de comando, consulte Instrumentar um componente autônomo nativo. Para obter dados de uso da CPU, você pode usar os procedimentos descritos neste artigo.

Pré-requisitos

  • Visual Studio 2019 ou versões posteriores

  • Familiaridade com ferramentas de linha de comando

  • Para coletar informações de desempenho em um computador remoto sem o Visual Studio instalado, instale as Ferramentas Remotas para Visual Studio no computador remoto. A versão das ferramentas deve corresponder à sua versão do Visual Studio.

Coletar dados de desempenho

A criação de perfil usando as ferramentas da CLI de Diagnóstico do Visual Studio funciona com a anexação da ferramenta de criação de perfil, junto com um dos agentes coletores, a um processo. Ao anexar a ferramenta de criação de perfil, você inicia uma sessão de diagnóstico que captura e armazena dados de criação de perfil até a ferramenta ser interrompida, cujo momento esses dados são exportados para um arquivo .diagsession. Em seguida, você pode abrir esse arquivo no Visual Studio para analisar os resultados.

  1. Inicie o Bloco de notas e, em seguida, abra o Gerenciador de Tarefas para obter o PID (ID de processo). No Gerenciador de Tarefas, encontre o PID na guia Detalhes.

  2. Abra um prompt de comando e altere para o diretório com o executável do agente de coleta, normalmente aqui (para o Visual Studio Enterprise).

    <Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\

    <Visual Studio installation folder>\2019\Enterprise\Team Tools\DiagnosticsHub\Collector\

    Para as ferramentas remotas, o executável do agente de coleta está neste local:

    Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\

    Program Files\Microsoft Visual Studio 16.0\Team Tools\DiagnosticsHub\Collector\

    Observação

    Ao usar a linha de comando em cenários remotos, você precisa executar as instruções de linha de comando na máquina remota. Se você deseja anexar à máquina remota do Visual Studio, use o Criador de Perfil de Desempenho no Visual Studio em vez disso.

  3. Inicie VSDiagnostics.exe digitando o comando a seguir.

    VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
    

    Os argumentos que precisam ser incluídos são:

    • <id> Identifica a sessão de coleta. A ID precisa ser um número entre 1 e 255.
    • <pid>, PID do processo que você deseja analisar, nesse caso, o PID encontrado na etapa 1.
    • <configFile>, o arquivo de configuração do agente de coleta que você deseja iniciar. Para obter mais informações, confira Arquivos de configuração para os agentes.

    Por exemplo, você pode usar o comando a seguir para o agente CPUUsageBase substituindo o pid conforme descrito anteriormente.

    VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
    

    Como alternativa, você pode usar o comando launch para iniciar um executável. Nesse cenário, você não precisa obter a ID do processo e anexá-la a ele. Todas as ferramentas suportam o comando launch, embora algumas não suportem attach, como a ferramenta Instrumentação e Alocação .NET. Por exemplo, use o seguinte para iniciar um executável e coletar dados de instrumentação:

    VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
    
  4. Redimensione o Bloco de notas ou digite algo para garantir que algumas informações interessantes de criação de perfil sejam coletadas.

  5. Interrompa a sessão de coleta e envie a saída para um arquivo digitando o comando a seguir.

    VSDiagnostics.exe stop <id> /output:<path to file>
    
  6. Localize a saída do arquivo .diagsession do comando anterior e abra-a no Visual Studio (Arquivo>Abrir) para examinar as informações coletadas.

    Para analisar os resultados, consulte a documentação da ferramenta de desempenho correspondente. Por exemplo, pode ser o Uso da CPU, a ferramenta de Alocação de Objeto .NET, Instrumentação ou a ferramenta Banco de Dados.

Arquivos de configuração do Agente

Os Agentes de Coleta são componentes intercambiáveis que coletam diferentes tipos de dados, dependendo do que você está tentando medir.

Por conveniência, recomendamos que você armazene essas informações em um arquivo de configuração do agente. O arquivo de configuração é um arquivo .json que contém, no mínimo, o nome da .dll e o CLSID COM. Por padrão, você pode encontrar os exemplos de arquivos de configuração na seguinte pasta:

Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs

Configurações de CpuUsage (Base/Alto/Baixo), que correspondem aos dados coletados para a ferramenta de criação de perfil Uso da CPU. Configurações de DotNetObjectAlloc (Base/Baixo) correspondem aos dados coletados para a ferramenta de Alocação de Objeto .NET.

As configurações Base/Baixa/Alta referem-se à taxa de amostragem. Por exemplo, Baixa representa 100 amostras/segundo e Alta, 4.000 amostras/segundo.

Para que a ferramenta VSDiagnostics.exe funcione com um agente de coleta, ela exige uma DLL e um CLSID COM para o agente apropriado. O agente também pode ter opções de configuração adicionais, que seriam as opções especificadas no arquivo de configuração, formatadas como JSON com escape adequado.

Permissões

Para analisar um aplicativo que exige permissões elevadas, faça isso em um prompt de comandos com privilégios elevados.