Collecter des données sur les changements de contexte
Pour analyser les changements de contexte, vous devez collecter les piles d’appels de chaque changement de contexte. Pour cela, assurez-vous que la case Callstacks on context switches est cochée (figure 1) avant de démarrer une capture. Cette case est cochée par défaut. Figure 1. Volet Options de Start Timing Capture.
Trouver les blocages et les changements de contexte
Par défaut, les changements de contexte sont affichés sous forme de petites lignes verticales rouges dans les lignes Thread et Core de la chronologie. Les périodes pendant lesquelles un thread ne s’exécute pas, appelées temps de thread non planifié ou blocages, sont dessinées par défaut avec un motif hachuré. Chaque blocage est encadré par un changement de contexte sortant au début et un changement de contexte entrant à la fin. La visualisation par défaut des changements de contexte et des blocages est illustrée à la figure 2. Figure 2. Visualisation par défaut des changements de contexte et des blocages.

UpdatePlayerArmor qui a subi huit blocages.
Figure 4. Affichage des blocages d’un événement sélectionné.


Analyser les blocages et les changements de contexte
La sélection d’un changement de contexte dans la vue Timeline ou Range Details renseigne la vue Element Details avec des informations sur ce changement de contexte. Element Details indique le cœur sur lequel le changement s’est produit, l’heure à laquelle il s’est produit, ainsi que les piles d’appels du thread qui s’exécutait avant le changement et du thread (le cas échéant) qui s’exécutait après. Les données d’affinité et de priorité de chaque thread sont aussi affichées. La figure 6 montre qu’un appel du threadAppMain d’un titre à l’API Win32 ReadFile a provoqué un changement de contexte. Après l’appel, AppMain est passé de l’état en cours d’exécution à l’état Idle.
Figure 6. Détails d’un changement de contexte.

AppMain, et que AppMain a été rendu prêt par un thread nommé Worker. La vue Element Details inclut la pile d’appels du thread qui a rendu prêt, l’heure à laquelle il l’a fait et la raison. Dans la chronologie, une flèche relie le thread qui a rendu prêt (Worker) au thread maintenant en cours d’exécution (AppMain).
Figure 7. Détails d’un thread qui rend prêt.

AP1. Dans ce cas, la raison de l’attente indique que ce changement s’est produit en raison du planificateur de threads du système d’exploitation.
Figure 8. Détails d’un changement de contexte sortant d’un processus autre que le titre.


