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.
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.

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.
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.- Regroupement par threads ou par cœurs.
- Analyse des échantillons en fonction des valeurs de dépassement des PMC
- Restriction de l’ensemble des échantillons affichés à un ou plusieurs événements PIX
- Définition d’une fonction comme fonction cible.


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.
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)

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.


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.

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.


