Medir el rendimiento de la aplicación desde la línea de comandos

Puede recopilar información de rendimiento sobre una aplicación mediante herramientas de línea de comandos. Puede recopilar datos de rendimiento para el uso de CPU, la asignación de memoria de .NET, la instrumentación y las consultas de base de datos.

En el ejemplo descrito en este artículo, se recopila información de rendimiento de Bloc de notas, aunque puede usarse el mismo método para generar perfiles de cualquier proceso.

Nota:

Para la instrumentación de C/C++ desde la línea de comandos, consulte Instrumentación de un componente independiente nativo. Para los datos de uso de CPU, puede usar los procedimientos descritos en este artículo.

Requisitos previos

  • Visual Studio 2019 o versiones posteriores

  • Familiaridad con las herramientas de línea de comandos

  • Para recopilar información sobre el rendimiento en un equipo remoto sin tener instalado Visual Studio, instale las Herramientas remotas para Visual Studio en el equipo remoto. La versión de las herramientas debe coincidir con la de Visual Studio.

Recopilar datos de rendimiento

La generación de perfiles mediante las herramientas de la CLI de diagnósticos de Visual Studio funciona al asociar la herramienta de generación de perfiles, junto con uno de los agentes recopiladores, a un proceso. Al asociar la herramienta de generación de perfiles, se inicia una sesión de diagnóstico que captura y almacena datos de generación de perfiles hasta que se detiene la herramienta, momento en que esos datos se exportan a un archivo diagsession. Luego se puede abrir este archivo en Visual Studio para analizar los resultados.

  1. Inicie Bloc de notas y luego abra el Administrador de tareas para obtener su identificador de proceso (PID). En el Administrador de tareas, busque el PID en la pestaña Detalles.

  2. Abra un símbolo del sistema y cambie al directorio con el ejecutable del agente recopilador, normalmente aquí (para Visual Studio Enterprise).

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

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

    Para las herramientas remotas, el archivo ejecutable del agente recopilador se encuentra en esta ubicación:

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

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

    Nota:

    Al usar la línea de comandos en escenarios remotos, debe ejecutar las instrucciones de la línea de comandos en la máquina remota. Si quiere conectarse a la máquina remota desde Visual Studio, use el Generador de perfiles de rendimiento en Visual Studio en su lugar.

  3. Inicie VSDiagnostics.exe al escribir el siguiente comando.

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

    Los argumentos que se deben incluir son:

    • <id> Identifica la sesión de recopilación. El identificador debe ser un número entre 1 y 255.
    • <pid>, PID del proceso cuyo perfil se quiere generar, en este caso el PID del paso 1.
    • <configFile>, archivo de configuración del agente recopilador que quiere iniciar. Para obtener más información, vea Archivos de configuración de agentes.

    Por ejemplo, podría usar este comando para el agente CPUUsageBase si reemplaza el PID como se describió anteriormente.

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

    Como alternativa, puede usar el comando launch para iniciar un archivo ejecutable. En este escenario, no es necesario obtener el id. de proceso y adjuntarlo. Todas las herramientas admiten el comando launch, aunque algunas no admiten attach, como la herramienta instrumentación y asignación de .NET. Por ejemplo, use lo siguiente para iniciar un archivo ejecutable y recopilar datos de instrumentación:

    VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
    
  4. Cambie el tamaño de Bloc de notas o escriba algo en él con el fin de asegurarse de que se recopile alguna información interesante de generación de perfiles.

  5. Detenga la sesión de recopilación y envíe la salida a un archivo al escribir el comando siguiente.

    VSDiagnostics.exe stop <id> /output:<path to file>
    
  6. Busque el resultado del archivo .diagsession del comando anterior y ábralo en Visual Studio (Archivo>Abrir) para examinar la información recopilada.

    Para analizar los resultados, vea la documentación de la herramienta de rendimiento correspondiente. Por ejemplo, podría tratarse de la herramienta Uso de CPU, la herramienta de asignación de objetos .NET, Instrumentación o la herramienta Base de datos.

Archivos de configuración de agentes

Los agentes recopiladores son componentes intercambiables que recopilan diferentes tipos de datos en función de lo que se intente medir.

Por comodidad, se recomienda almacenar esa información en un archivo de configuración del agente. El archivo de configuración es un archivo .json que contiene como mínimo el nombre de la .dll y su CLSID COM. De forma predeterminada, puede encontrar los archivos de configuración de ejemplo en la carpeta siguiente:

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

Las configuraciones de CpuUsage (Base/Alta/Baja) corresponden a los datos recopilados de la herramienta de generación de perfiles Uso de CPU. Las configuraciones de DotNetObjectAlloc (Base/Baja) corresponden a los datos recopilados de la herramienta de asignación de objetos .NET.

Las configuraciones Base/Baja/Alta hacen referencia a la velocidad de muestreo. Por ejemplo, Baja es 100 muestras por segundo y Alta es 4000 muestras por segundo.

Para que la herramienta VSDiagnostics.exe funcione con un agente de recopilación, se necesita un archivo DLL y un CLSID COM para el agente adecuado. El agente también puede tener opciones de configuración adicionales, que serían las que se especifican en el archivo de configuración, en formato JSON y con la secuencia de escape correcta.

Permisos

Para generar el perfil de una aplicación que requiera permisos elevados, debe hacerlo desde un símbolo del sistema con privilegios elevados.