Compartir a través de


Generación de perfiles de CPU y GPU con capturas de tiempo

Las capturas de tiempo combinan los datos de generación de perfiles de CPU y GPU en una sola captura para el análisis detallado de la aplicación. Esos datos se recopilan mientras se ejecuta el juego y con una sobrecarga mínima, para que pueda ver, por ejemplo, cómo se distribuye el trabajo entre núcleos de CPU, la latencia entre el trabajo de gráficos que envía la CPU y la ejecución de la GPU, cuándo se producen las asignaciones de E/S de archivos y las asignaciones de memoria, etc. Esto también incluye eventos, marcadores y contadores definidos por la aplicación a través de PixEvents.

Tomar una captura de tiempo

En la vista Conexión, inicie o conéctese al proceso deseado (asegurándose de que la opción correspondiente Para captura de GPU esté desactivada).

Configure las opciones de captura de tiempo según sea necesario y, cuando esté listo, haga clic en el botón Iniciar captura de tiempo para comenzar la grabación. Haga clic en Detener captura de tiempo (o finalice la aplicación) para finalizar la grabación. Después de un breve período de procesamiento, se abrirá la captura.

Opciones de captura de tiempo

Nombre Descripción
Modo de captura Secuencial: registra la totalidad de eventos entre el inicio y la detención de la captura.
Circular: registra los eventos en un búfer de tamaño fijo, solo guardando los últimos n segundos de datos. Consulte esta entrada de blog de Capturas de tiempo circulares para obtener más detalles.
Ejemplos de CPU Realice la generación de perfiles de ejemplo para ver dónde emplea tiempo la CPU. La frecuencia de muestreo es configurable.
Pila de llamadas en modificadores de contexto Recopile las pila de llamadas cuando un subproceso cambie de contexto.
Accesos a archivos Realice un seguimiento de los accesos a archivos.
Tiempos de GPU Recopile información detallada de tiempo sobre cuándo se inicia y detiene el trabajo de GPU.
Recursos de GPU Recopila información detallada sobre objetos D3D, como montones y recursos. Realice también un seguimiento de la residencia de GPU, las asignaciones degradadas y las migraciones de asignación.
Eventos VirtualAlloc/VirtualFree Realiza un seguimiento de las asignaciones realizadas a través de las funciones VirtualAlloc y VirtualFree.
Eventos HeapAlloc/HeapFree Realiza un seguimiento de las asignaciones realizadas a través de las funciones HeapAlloc y HeapFree.
Eventos de asignador personalizados Realiza un seguimiento de las asignaciones realizadas por asignadores de memoria personalizados instrumentados con PixEvents.
Eventos de error de página Recopila datos en errores de página que se producen cuando se ejecuta la captura. Los errores de página se muestran en la vista de escala de tiempo y de detalles del elemento.
Pila de llamadas para procesos que no son de título Captura las pila de llamadas para los procesos que no sean el proceso de título (el iniciado o asociado al proceso).
Información de imagen de kernel Recopila información necesaria para mostrar las pila de llamadas para los archivos binarios del kernel.
Generar un archivo .etl en lugar de un archivo .wpix El archivo .etl generado se puede convertir más adelante en un archivo .wpix en el menú Archivo | Convertir. Esta opción es útil al notificar las reproducciones de errores al equipo de PIX o si tiene otras herramientas para procesar datos ETW.

Capturas mediante programación

Puede tomar una captura mediante programación mediante WinPixEventRuntime. Para obtener más información, consulte la entrada de blog Captura mediante programación.

Generación de perfiles de CPU

La habilitación de la opción Ejemplos de CPU al tomar una captura puede ayudarle a identificar funciones lentas en la ruta de acceso activa de la aplicación, así como encontrar problemas relacionados con esperas de subprocesos y modificadores de contexto. También podrá realizar un seguimiento de diferentes tipos de asignaciones (con la opción de captura adecuada habilitada).

Hay varias entradas de blog que cubren esas características en detalle:

Generación de perfiles de GPU

¿La aplicación experimenta caídas intermitentes de fotogramas? ¿Uso excesivo de VRAM? ¿Operaciones de paginación inesperadas entre la memoria del sistema y VRAM? Las características de generación de perfiles de GPU en PIX pueden ayudarle a llegar al fondo de estas situaciones comunes y difíciles de analizar.

Tiempos de GPU

Habilite la opción Tiempos de GPU al tomar una captura para recopilar datos de tiempo para el trabajo de GPU. En la vista Escala de tiempo, puede encontrar carriles para cada cola de GPU (en el Selector de carril, puede anclar rápidamente esos carriles con la configuración Coles de API ancladas). Esos carriles contienen varios subcarriles:

  • Eventos de PIX (GPU): regiones jerárquicas definidas por la aplicación de trabajo de la GPU. Consulte PixEvents.
  • Ejecuciones de GPU: las ejecuciones corresponden a envíos de trabajo en el nivel de API; por ejemplo, a través de ExecuteCommandLists.
  • Trabajo de GPU: cualquier trabajo que se produzca en la GPU; por ejemplo, dibujos, envíos, copias.
  • Marcadores PIX (GPU): marcadores definidos por la aplicación. Consulte PixEvents.

Al seleccionar un evento en el carril, verá flechas que muestran dónde se originó el evento en la CPU. También hay varias opciones de visualización en el menú opciones de carril (el icono de engranaje junto al nombre del carril). En particular, las opciones Aplanar eventos y Aplanar trabajo de GPU están habilitadas de forma predeterminada para ahorrar espacio, pero es posible que desee ver la jerarquía de eventos PIX completa o la paralelización del trabajo de GPU al profundizar en un marco específico.

Los datos también están disponibles en formato tabular a través de la vista Detalles del rango seleccionando la categoría correspondiente en la lista desplegable Elementos para mostrar.

Visualización de eventos de GPU PIX y trabajo de GPU sin aplanar en la cola de API, con una flecha que muestra qué subproceso de CPU envió el trabajo de GPU

Presentación e información para mostrar

Las Vsyncs se muestran como marcadores en un carril de monitor independiente y se pueden encontrar en la vista Detalles del rango dentro de la categoría Otros.

Memoria de GPU y objetos Direct3D

Habilite la opción Recursos de GPU al tomar una captura para recopilar información sobre los objetos Direct3D. Para representar el uso general de memoria, puede encontrar varios contadores en la vista Métricas. Puede configurar varias líneas presupuestarias para obtener una idea rápida de si cumple los objetivos de uso de memoria. Cuando encuentre un área de interés, es posible que quiera investigar aún más seleccionando el intervalo de tiempo, haciendo clic en Ampliar vista de línea de tiempo para seleccionar rango en el menú contextual y estableciendo la lista desplegable Rango de tiempo seleccionado en Seleccionar rango visible.

Visualización del uso de memoria de objetos de la API D3D en la vista Métricas

Sugerencia

Establecer el estilo de línea en Cuadrado facilita la visualización de dónde se realizan las asignaciones.

En la vista Detalles del rango, puede ver información variada sobre objetos de la API de Direct3D, como montones, recursos y objetos de estado de canalización. Para facilitar la localización de objetos sospechosos, la información se agrupa por fecha de asignación y liberación.

Visualización de objetos de API D3D en la vista Detalles del rango

Residencia

Para ver los problemas relacionados con la residencia, consulte las categorías Operaciones de residencia, Asignaciones degradadas y Migraciones de asignación de la vista Detalles del rango. Esos marcadores y eventos también se muestran en el carril Operaciones de residencia.

Las operaciones de residencia incluyen las operaciones MakeResident y Evict (iniciadas a través de la API de Direct3D 12), así como las operaciones PageIn y PageOut (para obtener más información, consulte Residencia). Las asignaciones degradadas se producen cuando el kernel de gráficos (DXGK) no puede asignar un recurso en el VRAM de la GPU (debido a la presión de memoria o la fragmentación). Si esto sucede, DXGK también intentará realizar migraciones de asignación para esas asignaciones degradadas. Tenga en cuenta que esas migraciones son operaciones costosas, ya que requieren suspender la GPU.

Visualización de migraciones de asignación

Uso de GPU y contadores de presentación

Habilite la opción Capturar contadores SysMon al tomar una captura para recopilar los contadores presentes en el Monitor del sistema (también conocido como SysMon), que incluye varios contadores relacionados con el rendimiento de GPU. En particular, hay contadores para:

  • Uso de GPU desglosado por el motor de GPU para el proceso de destino y todos los procesos.
  • Datos de presentación, como fotogramas por segundo (y el inverso, en milisegundos, MsBetweenPresents) y MsUntilRenderComplete (tiempo entre un inicio actual y la finalización del trabajo de GPU).
  • Información de memoria de GPU, incluido el uso de memoria local y no local, la residencia y los presupuestos.

Visualización de fotogramas por segundo y uso de GPU en la vista Métricas

Sugerencia

Mantenga el puntero sobre los nombres de contador en el Monitor del sistema para obtener una descripción.

Estos contadores también se pueden supervisar en tiempo real, ya sea mientras se toma una captura de tiempo o haciendo clic en el botón Iniciar recopilación de contadores en la vista Monitor del sistema. Los gráficos se pueden reorganizar y los contadores se pueden agregar o quitar dinámicamente. Haga clic en Contadores para ver todos los contadores disponibles.

Visualización de gráficos y contadores del Monitor del sistema

E/S de archivos Win32

Consulta la entrada de blog Análisis del rendimiento de E/S de archivos Win32 en Capturas de tiempo.

Otras características de análisis