Établissez le profil du processeur et du GPU à l’aide de captures de temps
Les captures de minutage combinent à la fois les données de profilage du CPU et du GPU dans une seule capture pour une analyse approfondie de votre application. Ces données sont collectées pendant que le jeu est en cours d’exécution, avec un minimum de surcharge, afin que vous puissiez voir des éléments tels que la façon dont le travail est réparti entre les cœurs du CPU, la latence entre le travail graphique soumis par le CPU et exécuté par le GPU, le moment où les accès aux fichiers IO et les allocations de mémoire se produisent, et ainsi de suite. Cela inclut également les événements, marqueurs et compteurs définis par l’application via PixEvents.
Prendre une capture de minutage
Depuis l’affichage de Connexion, lancez ou attachez-vous à votre processus souhaité (en vous assurant que l’option Pour capture GPU est décochée).
Configurez vos options de capture de minutage selon vos besoins et, lorsque vous êtes prêt, cliquez sur le bouton Démarrer la capture de minutage pour commencer l’enregistrement. Cliquez sur Arrêter la capture de minutage (ou terminez votre application) pour mettre fin à l’enregistrement. Après une brève période de traitement, la capture s’ouvrira.
Options de capture de minutage
Nom | Description |
---|---|
Mode de capture | Séquentiel : Enregistrez l’intégralité des événements entre le début et la fin de la capture. Circulaire : Enregistrez les événements dans une mémoire tampon de taille fixe, ne sauvegardant que les dernières secondes de données. Veuillez consulter cet article de blog sur les captures de minutage circulaires pour plus de détails. |
Exemples CPU | Effectuer un profilage par échantillonnage pour voir où le CPU passe du temps. La fréquence d’échantillonnage est configurable. |
Callstacks (piles d’appels) sur les commutations de contexte | Collectez des piles d’appels lorsque un thread change de contexte. |
Accès aux fichiers | Suivez les accès aux fichiers. |
Minutages GPU | Collectez des informations de minutage détaillées sur le moment où le travail du GPU commence et s’arrête. |
Ressources GPU | Collectez des informations détaillées sur les objets D3D comme les segments et les ressources. Suivez également la résidence du GPU, les allocations rétrogradées et les migrations d’allocations. |
Événements VirtualAlloc/VirtualFree | Suit les allocations effectuées via les fonctions VirtualAlloc et VirtualFree. |
Événements HeapAlloc/HeapFree | Suit les allocations effectuées via les fonctions HeapAlloc et HeapFree. |
Événements d’allocateur personnalisé | Suit les allocations effectuées par les allocateurs de mémoire personnalisés instrumentés avec PixEvents. |
Événements de défaut de page | Collectez des données sur les défauts de page qui se produisent lorsque la capture est en cours. Les défauts de page sont affichés dans la chronologie et dans l’affichage des détails des éléments. |
Piles d’appels pour les processus non-titres | Capturez les traces d’appels pour les processus autres que le processus titre (le processus lancé ou attaché). |
Informations sur l’image du noyau | Collectez les informations nécessaires pour afficher les piles d’appels pour les binaires du noyau. |
Générez un fichier .etl au lieu d’un fichier .wpix | Le fichier .etl généré peut ensuite être converti en un fichier .wpix dans le menu Fichier | Convertir. Cette option est utile lors de la signalisation des reproductions de bogues à l’équipe PIX ou si vous avez d’autres outils pour traiter les données ETW. |
Captures programmatiques
Vous pouvez prendre une capture de manière programmatique en utilisant le WinPixEventRuntime. Pour plus de détails, consultez l’article de blog Capture programmatique.
Profilage du processeur
Activer l’option CPU Samples lors de la prise d’une capture peut vous aider à identifier les fonctions lentes dans le chemin critique de votre application, ainsi qu’à trouver des problèmes liés aux attentes de threads et aux commutations de contexte. Vous pourrez également suivre différents types d’allocations (avec l’option de capture appropriée activée).
Il existe plusieurs articles de blog qui couvrent ces fonctionnalités en détail :
- Vue d’ensemble des captures de minutage
- Article de blog sur l’analyse des échantillons CPU dans les captures de minutage.
- Analyse des blocages et des commutations de contexte dans les captures de minutage
- Analyse de l’utilisation de la mémoire et des performances dans les captures de minutage
- Vous pouvez également instrumenter vos propres allocateurs personnalisés. Pour plus de détails, consultez l’article de blog Support de profilage de la mémoire pour les allocations effectuées à partir de l’allocateur personnalisé d’un titre.
Profilage du GPU
Votre application connaît-elle des baisses de fréquence d’images intermittentes ? Utilisation excessive de la VRAM ? Opérations de pagination inattendues entre la mémoire système et la VRAM ? Les fonctionnalités de profilage GPU dans PIX peuvent vous aider à résoudre ces situations courantes et difficiles à analyser.
Minutages GPU
Activez l’option GPU timings lors de la prise d’une capture pour collecter des données de minutage pour le travail du GPU. Dans l’affichage de la Chronologie, vous pouvez trouver des voies pour chaque file d’attente de GPU (dans le Sélécteur de voie, vous pouvez rapidement épingler ces voies avec la configuration API Queues pinned). Ces voies contiennent plusieurs sous-voies :
- Événements PIX (GPU) : Régions hiérarchiques de travail du GPU définies par l’application. Voir PixEvents.
- Exécutions GPU : Les exécutions correspondent aux soumissions de travail au niveau de l’API ; par exemple, via ExecuteCommandLists.
- Travail GPU : Tout travail qui se produit sur le GPU ; par exemple, dessins, dispatches, copies.
- Marqueurs PIX (GPU) : Marqueurs définis par l’application. Voir PixEvents.
Lorsque vous sélectionnez un événement dans la voie, vous verrez des flèches indiquant où sur le CPU cet événement a été initié. Il existe également diverses options de visualisation dans le menu des options de la voie (l’icône en forme de roue dentée à côté du nom de la voie). Notamment, les options Flatten Events et Flatten GPU Work sont activées par défaut pour économiser de l’espace, mais vous pourriez vouloir voir la hiérarchie complète des événements PIX ou la parallélisation du travail GPU lorsque vous examinez une trame spécifique.
Ces données sont également disponibles sous forme tabulaire via l’affichage des Détails de la plage en sélectionnant la catégorie pertinente dans le menu déroulant Éléments à afficher.
Présentation et informations d’affichage
Les Vsyncs sont affichés comme des marqueurs dans une voie Moniteur séparée, et peuvent être trouvés dans l’affichage des Détails de la plage dans la catégorie Autre.
Mémoire GPU et objets Direct3D
Activez l’option GPU resources lors de la prise d’une capture pour collecter des informations sur les objets Direct3D. Pour afficher l’utilisation globale de la mémoire, vous pouvez trouver plusieurs compteurs dans l’affichage des Métriques. Vous pouvez configurer différentes lignes budgétaires pour avoir une idée rapide de savoir si vous atteignez vos objectifs d’utilisation de la mémoire. Lorsque vous trouvez une zone d’intérêt, vous pouvez vouloir enquêter davantage en sélectionnant la plage de temps, en cliquant sur Zoomer l’affichage de la chronologie sur la plage sélectionnée dans le menu contextuel par clic droit, et en définissant le menu déroulant Plage de temps sélectionnée sur Sélectionner la plage visible.
Conseil
Définir le style de ligne sur Carré facilite la visualisation des endroits où les allocations sont effectuées.
Dans l’affichage des Détails de la plage, vous pouvez visualiser diverses informations sur les objets API Direct3D tels que les tas, les ressources et les objets d’état du pipeline. Pour faciliter l’identification des objets suspects, ces informations sont regroupées en fonction de leur moment d’allocation et de libération.
Résidence
Pour les problèmes liés à la résidence, consultez les catégories Opérations de résidence, Allocations rétrogradées, et Migrations d’allocations de l’affichage des Détails de la plage. Ces marqueurs et événements sont également affichés dans la voie Opérations de résidence.
Les opérations de résidence incluent les opérations MakeResident et Evict (initiées via l’API Direct3D 12) ainsi que toutes les opérations PageIn et PageOut (Pour plus de détails, voir Residency). Les allocations rétrogradées se produisent lorsque le noyau graphique (DXGK) ne peut pas allouer une ressource dans la VRAM de votre GPU (en raison soit de la pression sur la mémoire soit de la fragmentation). Si cela se produit, alors DXGK tentera également d’effectuer des migrations d’allocations pour ces allocations rétrogradées. Notez que ces migrations sont des opérations coûteuses, car elles nécessitent de suspendre le GPU.
Compteurs d’utilisation et de présentation du GPU
Activez l’option Capturer les compteurs SysMon lors d’une capture pour collecter les compteurs présents dans le Moniteur système (alias SysMon), qui comprend divers compteurs liés aux performances du GPU. Il y a notamment des compteurs pour :
- Utilisation du GPU décomposée par le moteur GPU pour le processus cible et tous les processus.
- Données de présentation, telles que les images par seconde (et l’inverse, en millisecondes, MsBetweenPresents) et MsUntilRenderComplete (temps écoulé entre le début d’une présentation et la fin du travail du GPU).
- Informations sur la mémoire GPU, notamment l’utilisation locale et non locale de la mémoire, la résidence et les budgets.
Conseil
Passez le curseur sur les noms des compteurs dans le Moniteur système pour obtenir une description.
Ces compteurs peuvent également être surveillés en temps réel, soit en prenant une capture de minutage, soit en cliquant sur le bouton Démarrer la collecte de compteurs dans l’affichage Moniteur système. Les graphiques peuvent être réorganisés et les compteurs ajoutés ou supprimés dynamiquement. Cliquez sur Compteurs pour afficher tous les compteurs disponibles.
Fichier-E/S Win32
Voir l’article de blog Analyse des performances des E/S de fichier Win32 dans les captures de minutage.
Autres fonctionnalités d’analyse
- Les comparaisons statistiques aident à déterminer quelles portions d’une hiérarchie d’événements PIX ont des durées statistiquement différentes pour l’ensemble des points comparés. Pour plus de détails, consultez l’article de blog intitulé Minutage des fonctionnalités de comparaison statistique.
- Définir des budgets de performance peut vous aider à identifier rapidement les zones problématiques de la capture. Pour plus de détails, consultez l’article de blog intitulé Utilisation des budgets de performance dans l’affichage des métriques de capture de timing.
- Consultez également l’article de blog Analyse du chemin critique dans les captures de timing.