Passer au contenu principal
PIX comprend un profileur d’échantillonnage du processeur qui peut éventuellement être exécuté lors d’une Timing Capture. La collecte d’échantillons du processeur vous permet d’analyser l’impact des fonctions de votre titre sur les performances. Pour une présentation vidéo, consultez Analyzing CPU Samples in PIX Timing Captures. Les échantillons du processeur sont souvent collectés selon un intervalle d’échantillonnage, mais ils peuvent aussi l’être en fonction des valeurs des compteurs de surveillance des performances (PMC). La collecte d’échantillons du processeur en fonction des valeurs de dépassement des PMC vous permet, par exemple, de trouver les fonctions de votre titre qui ont provoqué le plus de défauts du cache de données. Le profileur d’échantillonnage de PIX comprend aussi une vue du code source C++. La vue source utilise des couleurs pour attribuer les échantillons du processeur collectés aux lignes de code source, ce qui permet d’identifier les points chauds d’une fonction. Une fois les échantillons collectés, ils peuvent être analysés dans la vue Timeline ou dans la vue Range Details. L’affichage des échantillons dans la vue Timeline vous aide à déterminer quel code s’exécute sur un thread ou un cœur pour les parties de votre titre peu ou pas instrumentées avec des événements PIX. Dans ce scénario, diagnostiquer les problèmes de performances à l’aide des échantillons du processeur est plus efficace que d’ajouter de l’instrumentation à votre titre, puis de le régénérer et de le redéployer. L’affichage des échantillons dans la vue Range Details vous permet d’analyser une vue agrégée des échantillons du processeur collectés sur une capture relativement longue. Cette analyse permet de trouver les fonctions exécutées le plus fréquemment et celles dont l’exécution est la plus longue.

Collecter des échantillons du processeur

Avant de collecter des échantillons, PIX doit être configuré pour trouver les PDB de votre titre. Les informations de symboles des PDB sont utilisées pour afficher les noms de fonctions des échantillons du processeur collectés par PIX. Pour plus de renseignements, consultez Configurer PIX pour accéder aux PDB pour les captures du processeur. Pour collecter des échantillons du processeur selon un intervalle d’échantillonnage, cochez la case CPU Samples dans la section CPU du volet des options de Timing Capture. L’intervalle d’échantillonnage doit aussi être spécifié à l’aide de la liste déroulante Sampling Rate. Les trois options intégrées d’intervalle d’échantillonnage vous permettent de trouver un équilibre entre la résolution accrue qu’offre un plus grand nombre d’échantillons et la surcharge supplémentaire qu’entraîne une fréquence d’échantillonnage plus élevée. Pour collecter des échantillons du processeur en fonction des données des PMC, cochez la case PMC Rollover Samples. Collecte d'échantillons du processeur dans les Timing Captures Lorsqu’une Timing Capture est ouverte, PIX affiche des informations sur les échantillons collectés dans les vues Timeline, Element Details et Range Details.

Analyser les échantillons du processeur dans la vue Timeline

Les échantillons du processeur collectés selon un intervalle d’échantillonnage sont affichés individuellement sur les lignes Thread et Core de la Timeline sous forme de traits verticaux noirs juste au-dessus de la barre d’indicateur du thread ou du cœur. La sélection d’un échantillon renseigne la vue Element Details avec la pile d’appels de l’échantillon. La figure suivante montre un événement PIX nommé RunSimulation qui prend plusieurs millisecondes et ne comporte aucun événement PIX enfant. La sélection d’échantillons individuels vous donne plus de détails sur le code qui s’exécute pendant cette période, au cours de laquelle le titre n’est pas instrumenté avec des événements PIX plus précis. Par exemple, la pile d’appels de l’échantillon sélectionné dans la figure suivante montre qu’une fonction nommée UpdateEnemyPositions est en cours d’exécution et qu’elle copie de la mémoire à l’aide de la fonction memcpy. Échantillons du processeur dans les vues Timeline et Element Details PIX crée aussi un flamegraph des échantillons du processeur pour chaque thread. Le flamegraph est affiché dans une sous-ligne située directement sous les événements PIX d’une ligne de thread. Les heures de début et de fin, ainsi que la durée, de chaque fonction du flamegraph sont approximatives, car le graphique est créé à partir d’échantillons plutôt qu’en instrumentant le début et la fin de chaque fonction. Notez que plus la fréquence d’échantillonnage choisie avant le démarrage de la capture est élevée, plus le flamegraph est précis. La figure suivante montre la même fonction UpdateEnemyPositions s’exécutant sous RunSimulation, mais la visualisation en flamegraph offre davantage de contexte en fournissant l’arborescence complète des fonctions exécutées. Flamegraph des échantillons du processeur dans la chronologie La configuration de la chronologie Threads with Callstacks affiche automatiquement les sous-lignes PIX events et Sampled Functions pour chaque thread.

Personnaliser l’affichage des échantillons du processeur

L’affichage des échantillons du processeur peut être personnalisé à l’aide de l’icône d’engrenage située à côté d’une ligne de thread ou de cœur, ou à l’aide du panneau Lane Configuration. Vous pouvez personnaliser la hauteur du trait vertical noir qui représente un échantillon, et choisir d’afficher ou non les échantillons dans la ligne, comme illustré dans la figure suivante. Personnalisation de l'affichage des échantillons du processeur dans le titre Pour les lignes de thread, l’affichage de la sous-ligne Sampled Functions peut aussi être activé ou désactivé.

Analyser les échantillons du processeur agrégés à l’aide de la vue Range Details

Lorsqu’une plage de temps est sélectionnée dans la Timeline, la vue Range Details permet de voir une agrégation de tous les échantillons survenus dans la plage sélectionnée. Les échantillons sont agrégés sur l’ensemble des threads et des cœurs et peuvent être affichés sous forme d’arborescence de piles ou de liste plate de fonctions. Plusieurs options permettent de modifier l’ensemble des échantillons affichés et de personnaliser leur organisation dans l’arborescence de piles. Pour plus de renseignements, consultez les rubriques suivantes. Sélectionnez Sampled Functions dans la liste déroulante Items to show de Range Details pour afficher les échantillons agrégés. L’affichage des échantillons agrégés sous forme d’arborescence de piles vous permet de voir quelles piles d’appels sont survenues le plus fréquemment dans la plage de temps sélectionnée. Le nombre de fois où un échantillon est tombé dans une fonction donnée, de façon inclusive et exclusive, ainsi que les pourcentages inclusif et exclusif, sont affichés sous forme de colonnes pour chaque fonction de l’arborescence de piles. La figure suivante montre l’arborescence de piles agrégée pour une plage de temps sélectionnée. La colonne Inc % de l’arborescence de piles montre que 33,33 % des échantillons sont survenus dans la fonction UpdateEnemyPositions ou dans ses enfants. Échantillons du processeur agrégés affichés sous forme d'arborescence de piles dans la vue Range Details Pour afficher les échantillons agrégés sous forme de liste plate, ouvrez le panneau Display Options et faites passer le curseur de Stack Tree à Function List. Le panneau Display Options permet aussi de personnaliser les colonnes affichées dans la liste des événements. Échantillons du processeur agrégés affichés sous forme de liste plate de fonctions dans la vue Range Details

Regrouper l’arborescence de piles par threads ou par cœurs

Par défaut, les échantillons du processeur de tous les threads et de tous les cœurs sont regroupés dans l’arborescence de piles. Toutefois, dans certains scénarios, vous pouvez souhaiter concentrer votre analyse sur les échantillons collectés sur un sous-ensemble seulement des threads et des cœurs. La liste déroulante Group by du panneau Display Options offre des options pour regrouper l’arborescence par threads, par cœurs, ou par cœurs puis par threads. Lorsqu’une option de regroupement est sélectionnée, l’arborescence de piles est réorganisée de sorte qu’il y ait un nœud racine par thread ou par cœur, selon l’option choisie. La figure suivante montre une arborescence de piles regroupée par thread. Chaque nœud racine de l’arborescence contient les échantillons collectés pour un seul thread. L'arborescence de piles regroupée par thread

Analyser les échantillons en fonction des valeurs de dépassement des PMC

Par défaut, l’arborescence de piles et la liste de fonctions de la vue Range Details sont créées à partir des échantillons du processeur collectés selon un intervalle d’échantillonnage. L’affichage des échantillons basés sur un intervalle vous indique quelles fonctions et quels chemins d’appel ont pris le plus de temps à s’exécuter ou ont été appelés le plus fréquemment. L’arborescence de piles et la liste de fonctions peuvent aussi être construites à partir des échantillons collectés lorsqu’une valeur de PMC « dépasse » un seuil, c’est-à-dire atteint un certain nombre d’occurrences. L’affichage des échantillons basés sur les nombres de PMC vous indique quelles fonctions et quels chemins d’appel s’exécutaient lorsque l’événement de dépassement s’est produit. Cette analyse permet par exemple de déterminer quelles fonctions ont provoqué le plus d’erreurs de prédiction de branchement. PIX collecte des échantillons à partir de quatre PMC intégrés :
  • Défauts du cache de données (DcacheMisses)
  • Erreurs de prédiction de branchement (BranchMispredictions)
  • Accès au cache de données (DcacheAccesses)
  • Total des instructions émises (TotalIssues)
Sélectionnez l’un des PMC dans la liste déroulante Profile Source pour afficher les échantillons basés sur les valeurs de dépassement des PMC. Basculement de la vue des fonctions échantillonnées vers les dépassements de PMC Les échantillons du processeur basés sur le dépassement des PMC sont collectés toutes les 64 000 occurrences de l’événement. Par exemple, un échantillon du processeur est collecté toutes les 64 000 erreurs de prédiction de branchement.

Restreindre l’ensemble des échantillons affichés à l’aide des événements PIX

L’ensemble des échantillons affichés dans l’arborescence de piles ou dans la liste plate de fonctions peut être restreint aux échantillons collectés pendant l’exécution des instances d’un ou plusieurs événements PIX. Cette restriction vous permet d’analyser les fonctions qui s’exécutaient entre les appels à PIXBeginEvent et PIXEndEvent. Utilisez le contrôle de filtre PIX Events de l’onglet Display Options pour sélectionner un ou plusieurs événements PIX. Selon le nombre d’événements émis par votre titre, le contrôle de filtre peut d’abord indiquer qu’il y a trop d’événements à afficher. Trop d'événements dans le filtre des événements PIX Saisissez une chaîne dans la liste déroulante pour filtrer l’ensemble des événements PIX. La figure suivante montre la liste des événements PIX filtrée sur ceux qui contiennent la chaîne Update. Filtrage sur les événements PIX contenant la chaîne Update La sélection d’un ou plusieurs événements PIX entraîne le recalcul de l’arborescence de piles ou de la liste de fonctions à partir des échantillons collectés pendant l’exécution de toutes les instances des événements spécifiés. Cliquez sur le bouton Apply pour reconstruire l’arborescence de piles ou la liste de fonctions. La figure suivante montre l’arborescence de piles des échantillons du processeur collectés pendant l’exécution des instances de l’événement PIX Physics::Process. Les options de regroupement permettent d’organiser l’arborescence par cœur ou par thread. Arborescence de piles filtrée sur les échantillons survenus pendant un événement PIX

Cibler une fonction

La sélection d’une fonction comme fonction cible reconstruit l’arborescence de piles à partir de tous les appels à cette fonction. La fonction cible devient le nœud supérieur de l’arborescence, et l’ensemble de son arborescence d’appels est affiché sous forme d’enfants. Cet affichage vous permet d’analyser l’arborescence d’appels d’une fonction pour trouver les chemins d’appel les plus fréquents, les plus longs à s’exécuter, etc. Pour sélectionner une fonction cible, cliquez avec le bouton droit sur une fonction dans la vue Range Details et choisissez Set Focus Function dans le menu contextuel, comme illustré dans la figure suivante. L'option de menu contextuel de la fonction cible L’arborescence de piles est reconstruite avec la fonction sélectionnée comme fonction cible. Les options de regroupement par thread et par cœur, et de restriction de l’ensemble des échantillons à un ou plusieurs événements PIX, permettent de personnaliser davantage l’affichage des données. La figure suivante montre une arborescence de piles avec la fonction UpdateEnemyPositions comme fonction cible. L'arborescence de piles ciblée sur une fonction

La vue du code source C++ du profileur d’échantillonnage

La vue source du profileur d’échantillonnage permet d’identifier les points chauds d’une fonction donnée, c’est-à-dire les lignes de code sur lesquelles sont tombés la majorité des échantillons. Pour afficher le code source annoté d’une fonction, sélectionnez la fonction dans la vue Range Details et faites basculer la vue Element Details de Details à Source Analysis, comme illustré dans la figure suivante. La vue d'analyse du code source C++ L’intensité de la mise en surbrillance d’une ligne de code source est proportionnelle au pourcentage d’échantillons survenus pendant l’exécution de cette ligne. Plus la ligne est foncée, plus elle a été exécutée fréquemment. Par défaut, la vue source indique la fréquence des échantillons en pourcentages. Utilisez le panneau Display Options de la vue pour afficher plutôt le nombre d’échantillons, si vous le voulez. Affichage du nombre d'échantillons dans la vue d'analyse du code source C++ Le profileur d’échantillonnage utilise les chemins des fichiers sources stockés dans les PDB de votre titre pour localiser le fichier source correspondant. Si ce fichier est introuvable, la vue d’analyse du code source contient le texte suivant : Could not find “filename”.cpp with a matching checksum Utilisez le contrôle Source Paths du panneau Display Options ou de la page Settings principale pour spécifier un ou plusieurs répertoires dans lesquels PIX doit rechercher les fichiers sources s’ils sont introuvables à l’emplacement par défaut. Ajout de chemins de recherche de sources personnalisés

Voir aussi

Timing Captures PIX
Dernière modification le 8 octobre 2026