Perfview es una herramienta de análisis de rendimiento gratuita que ayuda a aislar los problemas de rendimiento de CPU y relacionados con la memoria. Es una herramienta de Windows, pero también tiene cierto soporte para analizar los datos recopilados en las máquinas Linux. Funciona para una amplia variedad de escenarios, pero tiene una serie de características especiales para investigar los problemas de rendimiento en el código escrito para el tiempo de ejecución .NET.
Si no está familiarizado con PerfView, hay tutoriales de video de perfilos. Además, el blog de Vance Morrison da una visión general y la información inicial.
Consulte la página de descarga de Perfview para ver el enlace e instrucciones para descargar la versión actual de PerfView.
Perfview requiere .NET Framework 4.7.2 o posterior, que está ampliamente disponible para todas las versiones compatibles de Windows.
Perfview se basa en una biblioteca llamada Microsoft.DiaGnitalics.tracing.traceevent, que sabe cómo recopilar y analizar el rastreo de eventos para Windows (ETW) y los datos de EventPipe (.NET Core Trace). Por lo tanto, si hay alguna información que realice una vista y procese que le gustaría manipularse mediante programación, probablemente le interese la documentación de la Biblioteca TraCeEvent
Vea el documento de los escenarios para determinar cuál es la mejor opción para lo que está tratando de hacer.
La Guía del usuario de PerfView es parte de la aplicación en sí. Además, puede hacer clic en el enlace de la Guía de usuarios para ver el archivo de origen GitHub HTML representado en su navegador. También puede simplemente descargar perfview usando las instrucciones de arriba y seleccionar la ayuda -> Elemento del menú Guía del usuario.
Cuando tiene una pregunta sobre PerfView, su primera reacción debe ser buscar en la Guía de usuarios (Ayuda -> Guía del usuario) y ver si ya puede encontrar la respuesta. Si eso no funciona, puede hacer una pregunta creando un nuevo problema de rendimiento. Indique su pregunta sucintamente en el título, y si es necesario, dé detalles en el cuerpo del problema, hay una etiqueta de problema llamada 'Pregunta' que debe usar también que marca su problema como una pregunta en lugar de algún informe de errores. Si la pregunta es específica para un rastro particular (*.etl.zip) puede arrastrar ese archivo al problema y se descargará. Esto permite a quienes observan problemas reproducen su entorno y dan respuestas mucho más detalladas y útiles.
Tenga en cuenta que una vez que le responda a su pregunta, si es probable que el problema sea común, debe considerar la actualización de la documentación para incluir la información. La documentación es más o menos un archivo https://github.com/microsoft/perfview/blob/main/src/perfview/supportfiles/usersguide.htm. Deberá clonar el repositorio y crear una solicitud de extracción (consulte OpenSourCeGitWorkflow para obtener instrucciones para configurar y crear una solicitud de extracción.
Informar errores funciona casi de la misma manera que hacer una pregunta. Es muy probable que desee incluir el archivo *.etl.zip necesario para reproducir el problema, así como cualquier paso y el comportamiento indeseable resultante.
Si solo desea realizar una investigación de rendimiento, no necesita construir perfeccionados usted mismo. Simplemente use el de la página de descarga de perfview. Sin embargo, si desea nuevas funciones o simplemente desea contribuir a performar para mejorar (ver los problemas para cosas que la gente quiere), puede hacerlo siguiendo el resto de estas instrucciones.
La única herramienta que necesita para construir Perfview es Visual Studio 2022. La Visual Studio 2022 Community Edition se puede descargar de forma gratuita y tiene todo lo que necesita para obtener Perfview de Github, construirlo y probarlo. Esperamos que descargue Visual Studio 2022 Community Edition si aún no tiene Visual Studio 2022.
En su instalación de Visual Studio, debe asegurarse de tener las siguientes cargas de trabajo y componentes instalados:
Se incluye un archivo .vsconfig en la raíz del repositorio que se puede utilizar para instalar los componentes necesarios. Al abrir la solución en Visual Studio, le pedirá que instale cualquier componente que crea que les falta la instalación. Alternativamente, puede importar el .vsconfig en el instalador de Visual Studio.
Si obtiene algún error que compilan los proyectos EtwClrCompiler, es probable que no tenga instalado el SDK de Windows 10 o no tiene instaladas las LIB de Spectre Mitigated. Consulte la sección de solución de problemas para obtener más información.
El primer paso para comenzar con el código fuente de PerfView es clonar el repositorio de GitHub de perfliew. Si ya está familiarizado con cómo funciona Git, GitHub y Visual Studio 2022 Git Support, entonces puede omitir esta sección. Sin embargo, si no, la configuración de un repositorio de GitHub local con el documento Visual Studio 2022 lo llevará a través de los conceptos básicos de hacer esto. Todo lo que supone es que tiene instalado Visual Studio 2022.
Perfview se desarrolla en Visual Studio 2022 utilizando características a través de C# 7.3.
El archivo de solución es perfview.sln. Abrir este archivo en Visual Studio (o hacer doble clic en él en el explorador de Windows) y seleccionar la solución de compilación -> Build, lo construirá. También puede construir la versión no DEBUG a partir de la línea de comandos usando msbuild o el archivo build.cmd en la base del repositorio. La compilación sigue las convenciones estándar de Visual Studio, y el archivo de perfview.exe resultante termina en src/perfview/bin/ bitdtype /perfview.exe. Solo necesita implementar este exe para usarlo.
La solución consta de varios proyectos, que representan DLLS de soporte y la EXE principal. Para ejecutar PerfView en el depurador , debe asegurarse de que el 'Proyecto de inicio' esté configurado en el proyecto 'PerfView' para que lance el EXE principal. Si el proyecto PerfView en el Explorador de soluciones (a la derecha) no es audaz, haga clic derecho en el proyecto PerfView y seleccione 'Establecer como proyecto de inicio'. Después de hacer esto, debería funcionar 'Comience a depurar' (F5).
Querrá implementar la versión 'versión' en lugar de la versión 'depurar' de PerfView. Por lo tanto, primero configure su configuración de compilación en 'Release' (ventana de texto en la barra de herramientas superior, o haga clic derecho en el archivo .sln -> Configuración Manager -> Configuración de la solución activa). Siguiente compilación (Build-> Solución de compilación (Ctrl-Shift-B)). El resultado será que en el directorio Src Perfview bin net462 de lanzamiento habrá entre otras cosas un perfview.exe. Este archivo es todo lo que necesita para implementar. Simplemente cópielo a donde desee implementar la aplicación.
Una de las cosas inusuales de Perfview es que incorpora sus DLL de soporte en el EXE en sí, y estas se desempaquetan en el primer lanzamiento. Esto significa que hay dependencias difíciles en la construcción que no son típicas. Verá errores de que ciertos DLL no se pueden encontrar si hubo problemas de compilación antes en la compilación. Por lo general, puede solucionar esto simplemente haciendo una construcción normal (no clara), ya que el archivo faltante estará presente desde la última compilación. Si esto no arregla las cosas, vea si el DLL que se busca realmente existe (si es así, entonces la reconstrucción debe arreglarlo). Puede tener sentido bajar los proyectos uno por uno y construirlos individualmente para ver cuál falla 'primero'.
Otra cosa inusual de performación es que incluye un mecanismo de extensión completo con muestras. Este mecanismo de extensiones es el proyecto 'Global' (llamado así porque es la extensión global cuyos comandos no tienen un 'alcance' explícito) y necesita referirse a la vista para resolver algunas de sus referencias. Por lo tanto, obtendrá muchos problemas 'no encontrados' en el proyecto 'global'. Estos se pueden ignorar hasta que funcione cualquier otra parte de la construcción.
Uno de los invariantes del repositorio es que si está ejecutando Visual Studio 2022 y simplemente se sincroniza y construye el archivo perfview.sln, se supone que "solo funciona". Si eso no sucede, y el consejo anterior no ayuda, entonces necesitamos arreglar el repositorio o actualizar los consejos anteriores. Por lo tanto, es razonable abrir un problema de GitHub. Si hace esto, el objetivo es solucionar el problema, lo que significa que debe poner suficiente información en el problema para hacerlo. Esto incluye exactamente lo que probó y cuáles fueron los mensajes de error.
También puede construir PerfView desde la línea de comandos (pero aún necesita Visual Studio 2022 instalado). Es un proceso de dos pasos. Primero debe restaurar todos los paquetes Nuget necesarios, luego hará la construcción en sí. Para hacer esto:
Si recibe un error "MSB8036: no se encontró el SDK de Windows SDK 10.0.17763.0", o obtiene un error 'afirmar.h' no encontrado, o francamente cualquier error asociado con la construcción de las dlls EtWClrProfiler, debe asegurarse de que tenga el SDK de Windows 10 instalado. Lamentablemente, esta biblioteca tiende a no instalarse con Visual Studio a menos que lo solicite explícitamente. Para solucionarlo, inicie el instalador de Visual Studio, modifique la instalación y luego mire bajo el desarrollo del escritorio C ++ y verifique que se seleccione la opción Windows SDK 10.0.17763.0. Si no, seleccione y continúe. Luego intente construir perfilos nuevamente.
Si recibe un error "MSB8040: Se requieren bibliotecas de Spectre-Mitigated para este proyecto", modifique su instalación de Visual Studio para asegurarse de tener el componente 'MSVC V143-VS 2022 C ++ X64/X86 Spectre-Mitigated LIBS (último)' Instalado.
Perfview tiene una serie de *proyectos. Se pueden ejecutar en Visual Studio seleccionando la prueba -> Ejecutar -> El elemento de menú de todas las pruebas. Para obtener los resultados más completos (y ciertamente si tiene la intención de enviar cambios), debe ejecutar estas pruebas con una compilación de depuración del producto (consulte la ventana de texto en la barra de herramientas superior, dice 'depuración' o 'liberación'). Si las pruebas fallan, puede hacer clic derecho en la prueba fallida y seleccionar el elemento del menú contextual 'depurar' para ejecutar la prueba en el depurador para descubrir qué salió mal.
Este repositorio utiliza Azure DevOps para construir y probar automáticamente solicitudes de extracción, lo que permite a la comunidad ver fácilmente los resultados de compilación. La compilación y el estado reflejado aquí es el estado de construcción de Azure DevOps de la rama principal .
️ Las construcciones producidas por Azure DevOps CI no se consideran construcciones oficiales de rendimiento, y no se firman ni se validan de ninguna manera para la seguridad o la seguridad de ninguna manera. Esta integración de compilación se proporciona como una conveniencia para los participantes de la comunidad, pero Microsoft no lo respalda ni se considera un canal de lanzamiento oficial de ninguna manera. Para obtener información sobre las compilaciones oficiales, consulte la página de la página de descarga de perforios.
Puede obtener mucho valor de la base del código fuente simplemente al poder construir el código usted mismo, depurarlo o hacer una característica local y especializada, pero el poder real del software de código abierto ocurre cuando contribuye a la base del código compartido y, por lo tanto, ayuda a la comunidad en su conjunto. Si bien fomentamos esto, requiere significativamente más esfuerzo por su parte . Si está interesado en intensificar, consulte la Guía de contribución de PerfView y los estándares de codificación de perfeccionados antes de comenzar.
El código se divide en varias secciones principales: