> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Analyser le chemin critique d'un événement PIX avec les Timing Captures

> Analyser le chemin critique d'un événement PIX à l'aide des Timing Captures

PIX analyse les données de changement de contexte collectées lors d'une [Timing Capture](/fr-CA/tools/tools-console/pix/new-timing-captures) pour calculer le chemin critique d'un événement PIX sélectionné. Le chemin critique est la série d'événements PIX et de dépendances qui, s'ils étaient raccourcis, réduiraient la durée globale de l'événement sélectionné.

La figure suivante montre un événement PIX nommé *MainLoop 17864* qui contient une quantité importante de temps bloqué au milieu de l'événement.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_critical_path_stalled_event.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=a878c79ae1382e89e0bbb12e718cf466" alt="Un événement PIX avec un blocage important" width="664" height="245" data-path="images/gdk/tools/pix_critical_path_stalled_event.png" />

En calculant le chemin critique, PIX fournit les informations nécessaires pour réduire le temps bloqué dans l'événement, voire l'éliminer complètement. Pour calculer le chemin critique, cliquez avec le bouton droit sur un événement PIX et choisissez **Calculate Critical Path for Selected PIX Event** dans le menu contextuel, comme illustré dans la figure suivante. Le chemin critique ne peut être calculé que pour un seul événement à la fois.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_critical_path_context_menu.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=96c294b156eee78e3238401cb7ae3b4f" alt="L'élément de menu contextuel permettant de créer le chemin critique d'un événement PIX" width="823" height="389" data-path="images/gdk/tools/pix_critical_path_context_menu.png" />

PIX affiche le chemin critique de l'événement dans une nouvelle ligne nommée *Critical Path:* suivie du nom de l'événement. La ligne du chemin critique comble le temps bloqué avec des informations sur les événements PIX, les threads et les cœurs qui s'exécutaient pendant ce temps et qui ont donc contribué au blocage. Des informations sur les changements de contexte et les événements de préparation à l'origine des dépendances entre les événements sont fournies. Les échantillons du processeur peuvent aussi servir à déterminer ce qui s'exécutait si l'ensemble des événements PIX ne fournit pas suffisamment de contexte. La ligne de chemin critique suivante montre qu'une instance de l'événement *Loader::Process* et plusieurs instances de l'événement *TaskWrapper* se sont exécutées pendant que *MainLoop 17864* était bloqué.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_critical_path_lane_overview.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=c6d5ae6ec8608e9df5715d1902a2e24d" alt="La ligne du chemin critique de l'événement MainLoop 17864" width="1151" height="228" data-path="images/gdk/tools/pix_critical_path_lane_overview.png" />

Les informations sur les threads et les cœurs affichées en haut de la ligne du chemin critique permettent de voir facilement comment le chemin critique passe d'un thread à l'autre et d'un cœur à l'autre.

<img src="https://mintcdn.com/microsoft-4404708b/qucDZYz-Wliyj3GK/images/gdk/tools/pix-critical-path-lane-threads-and-cores.png?fit=max&auto=format&n=qucDZYz-Wliyj3GK&q=85&s=ce021bf8e826520ec4d432e7df6e3647" alt="Informations sur les threads et les cœurs en haut du volet du chemin critique" width="1164" height="291" data-path="images/gdk/tools/pix-critical-path-lane-threads-and-cores.png" />

La ligne du chemin critique comprend des données sur les changements de contexte et les événements de préparation qui permettent de déterminer ce qui a provoqué l'exécution des différents événements. Ces informations, ainsi que les données affichées dans les info-bulles, permettent aussi de comprendre pourquoi les événements se sont exécutés dans cet ordre.

Dans la figure suivante, la chronologie a été agrandie pour voir ce qui a provoqué le démarrage de l'événement *Loader::Process*. La sélection de l'événement de préparation à la fin d'un fragment de *MainLoop 17864* renseigne la vue **Element Details** avec une description de l'événement, y compris les piles d'appels pertinentes. Une flèche de corrélation est aussi dessinée. Dans ce cas, *Loader::Process* a commencé à s'exécuter parce qu'il a été préparé par *Main Loop 17864*. Le survol de l'indicateur de thread en haut de la ligne du chemin critique affiche une info-bulle qui fournit des informations supplémentaires sur le thread sur lequel *LoaderProcess* s'exécute, notamment son nom et sa priorité.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_critical_path_lane_example1.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=383aa443a805cf0149cd583901beae1b" alt="Analyse d'un événement de préparation dans la ligne du chemin critique" width="1269" height="710" data-path="images/gdk/tools/pix_critical_path_lane_example1.png" />

Autre exemple : considérez la séquence vers la fin de *MainLoop 17864*, dans laquelle l'exécution de *Loader::Process* se termine, suivie d'une série d'événements *TaskWrapper* et d'un seul événement *DoneWorking* avant que *MainLoop 17864* ne se termine.

La sélection des changements de contexte qui provoquent l'exécution de la série d'événements *TaskWrapper* et de l'événement *DoneWorking* montre que les deux threads sur lesquels ces événements s'exécutent ont été préparés par le thread *Loader*, comme illustré dans la figure suivante.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_critical_path_lane_example2_context_switch1.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=5c91655cabff1965d2104bc4e3001eba" alt="Le changement de contexte qui provoque l'exécution du premier thread de travail" width="742" height="522" data-path="images/gdk/tools/pix_critical_path_lane_example2_context_switch1.png" />

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_critical_path_lane_example2_context_switch2.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=d695de9b00d3e603801df84b7d05f358" alt="Le changement de contexte qui provoque l'exécution du second thread de travail" width="1414" height="501" data-path="images/gdk/tools/pix_critical_path_lane_example2_context_switch2.png" />

Même si la série d'événements *TaskWrapper* et l'événement *DoneWorking* s'exécutent sur des threads différents, la ligne du chemin critique les montre s'exécutant en séquence plutôt qu'en parallèle. Les info-bulles affichées lors du survol des indicateurs de thread expliquent pourquoi les deux threads n'ont pas pu s'exécuter en même temps. Dans ce cas, la raison est la contention de cœur. Les deux threads s'exécutent sur le cœur 4 et ont la même priorité (8). La contention de cœur est donc la raison pour laquelle ces événements sont sérialisés. Ajuster les affectations de cœurs ou les priorités des threads permettrait de raccourcir ce chemin critique.

<img src="https://mintcdn.com/microsoft-4404708b/cbgdF-D3rUKJ-fFH/images/gdk/tools/pix_critical_path_lane_example2_core_contention.png?fit=max&auto=format&n=cbgdF-D3rUKJ-fFH&q=85&s=fcd92ee99feffe9d9ddff007ad90d4bf" alt="La contention de cœur fait que les événements s'exécutent en séquence plutôt qu'en parallèle" width="1512" height="135" data-path="images/gdk/tools/pix_critical_path_lane_example2_core_contention.png" />

Une seule ligne de chemin critique est créée. Si une ligne de chemin critique existe déjà et que l'option d'analyse du chemin critique est sélectionnée pour un autre événement, le contenu de la ligne existante est remplacé par les données du chemin critique du nouvel événement.

La ligne du chemin critique apparaît souvent en bas de la vue **Timeline** lors de sa création. Le panneau [Lane Configuration](/fr-CA/tools/tools-console/pix/new-timing-captures#lane_config) permet de déplacer la ligne plus haut, de l'épingler en haut, etc.

## Voir aussi

[Timing Captures](/fr-CA/tools/tools-console/pix/new-timing-captures)

[PIX](/fr-CA/tools/tools-console/pix/pix)


## Related topics

- [PIX sur XBOX et Windows pour les titres GDK](/fr-CA/tools/tools-console/pix/index.md)
- [Répertoire des rubriques NDA : liens actifs vers Microsoft Learn](/fr-CA/nda/nda-topic-directory.md)
- [Capture GPU et analyse des performances avec PIX](/fr-CA/tools/tools-console/pix/gpu/index.md)
- [PIX3](/fr-CA/reference/tools/pix3/pix3_members.md)
- [Profilage de durabilité avec PIX](/fr-CA/build/game-principles/sustainability/sustainability-pix-guide.md)
