Medición del 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, recopilará información de rendimiento para el Bloc de notas de Microsoft, pero el mismo método se puede usar para generar perfiles de cualquier proceso.
Nota
Para generar un componente de C/C++ instrumentado desde la línea de comandos, consulte Instrumentar un componente independiente nativo antes de seguir los pasos de este artículo. En el caso de los datos de uso de CPU, puede usar los procedimientos descritos en este artículo.
Prerrequisitos
Visual Studio 2019 o versiones posteriores
Familiaridad con las herramientas de línea de comandos
Para recopilar información de rendimiento en una máquina remota sin Visual Studio instalada, instale las herramientas remotas de para Visual Studio en el equipo remoto. La versión de las herramientas debe coincidir con la versión de Visual Studio.
La mayoría de los agentes de recopilación admiten .NET Core, .NET 5+, .NET Framework y C++. Sin embargo, el soporte se limita al soporte proporcionado por la herramienta de rendimiento correspondiente. Por ejemplo, el agente de recopilación de Base de datos se limita a .NET Core y .NET 5+.
Recopilación de datos de rendimiento
La generación de perfiles mediante las herramientas de la CLI de Diagnósticos de Visual Studio funciona adjuntando la herramienta de generación de perfiles, junto con uno de los agentes del recopilador, a un proceso. Al adjuntar 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 el que los datos se exportan a un archivo de .diagsession. A continuación, puede abrir este archivo en Visual Studio para analizar los resultados.
Inicie el Bloc de notas y, a continuación, 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.
Abra una ventana de comandos y cambie al directorio que contiene el ejecutable del agente de recopilación, 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 ejecutable del agente de recopilación 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 desea asociar a la máquina remota desde Visual Studio, use el Generador de perfiles de rendimiento en Visual Studio en su lugar.
Inicie VSDiagnostics.exe escribiendo 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 comprendido entre 1 y 255.
- <pid>, PID del proceso que desea perfilar, en este caso el PID que encontró en el paso 1.
- <configFile>, archivo de configuración para el agente de recopilación que desea iniciar. Para obtener más información, consulte archivos de configuración de para agentes.
Por ejemplo, puede usar el siguiente comando para el agente CPUUsageBase reemplazando el pid de tal como se ha descrito 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 identificador de proceso y adjuntarlo. Todas las herramientas admiten el comandolaunch
, aunque algunas no admitenattach
, 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
Cambie el tamaño del Bloc de notas o escriba algo en él para asegurarse de que se recopila información interesante de generación de perfiles.
Detenga la sesión de recopilación y envíe la salida a un archivo escribiendo el siguiente comando.
VSDiagnostics.exe stop <id> /output:<path to file>
Busque la salida del archivo .diagsession del comando anterior y ábralo en Visual Studio (Archivo>Abrir) para examinar la información recopilada.
Para analizar los resultados, consulte la documentación de la herramienta de rendimiento correspondiente. Por ejemplo, esto puede ser el Uso de CPU, la Herramienta de Asignación de Objetos .NET, la Instrumentación, o la Herramienta de Base de Datos.
Archivos de configuración del agente
Los agentes de recopilación son componentes intercambiables que recopilan diferentes tipos de datos en función de lo que intenta medir.
Para mayor 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 del .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,Alto/Bajo) corresponden a los datos recopilados para la herramienta de generación de perfiles de Uso de CPU . Las configuraciones de DotNetObjectAlloc (Base/Low) corresponden a los datos recopilados para la herramienta .NET de asignación de objetos .
Las configuraciones base/baja/alta hacen referencia a la frecuencia de muestreo. Por ejemplo, Low es de 100 muestras por segundo y High es de 4000 muestras por segundo.
Para que la herramienta de VSDiagnostics.exe funcione con un agente de recopilación, requiere un archivo DLL y un CLSID COM para el agente adecuado. El agente también podría tener opciones de configuración adicionales, que serían las opciones especificadas en el archivo de configuración, con el formato JSON con escape correcto.
Permisos
Para generar perfiles de una aplicación que requiera permisos elevados, debe hacerlo desde un símbolo del sistema con privilegios elevados.