Partager via


Affichage d’un thread

Il est essentiel de comprendre l’affichage de l’exécution des threads de GPUView pour voir où les threads sont actifs et où ils exécutent des fonctionnalités spécifiques à la vidéo.

Le diagramme suivant est une capture d’écran d’une fraction d’une milliseconde de temps montrant uniquement les threads actifs qui couvrent deux processus : le processus système et le processus inactif GPUView. Dans cette vue, trois threads sont affichés.

Capture d’écran du processus inactif GPUView avec des threads actifs.

Avec chaque thread, le nom se trouve sur le côté gauche et une zone rectangulaire grise sur le côté droit est l’emplacement où les intervalles d’exécution sont affichés. Cette zone entière est appelée zone de thread.

Nom du thread

Capture d’écran montrant un nom de thread avec l’ID, le module et la fonction.

Dans l’ellipse rouge du graphique précédent, l’ID de thread apparaît entre parenthèses, suivis du module et de la fonction qui ont généré le thread. Dans ce cas, le thread 432 créé par dxgmms1.sys au 0x37DC0 de décalage. Si des symboles sont chargés, GPUView affiche le nom symbolique plutôt que le numéro de décalage.

Zone d’exécution de thread

Capture d’écran de la zone d’exécution de thread dans GPUView.

La zone grise située à droite du nom, la zone d’exécution de thread, représente l’heure à laquelle un thread peut s’exécuter. Dans ce cas, le thread s’est exécuté deux fois pendant cette période.

Intervalle d’exécution de thread

Capture d’écran des intervalles d’exécution de thread dans GPUView.

Dans ce cas, les rectangles blancs représentent le moment où le thread s’est réellement exécuté. Ce diagramme montre deux intervalles d’exécution de thread.

Texte de détails

Capture d’écran du texte de détails au-dessus de la zone d’exécution du thread.

Sur le côté droit, juste au-dessus de la zone d’exécution du thread, des détails sont fournis concernant l’exécution du thread. Le premier nombre correspond au nombre d’intervalles d’exécution au cours de cette période. Le deuxième nombre, intitulé iTime, correspond à la durée pendant laquelle les DPC ont été exécutés sur ce thread. Le troisième élément est la durée totale de l’intervalle d’exécution, et le dernier élément est le pourcentage du temps de la fenêtre d’affichage que le thread a exécuté.

Détails de l’intervalle d’exécution

Capture d’écran montrant les détails d’un intervalle d’exécution de thread.

Couleur d’arrière-plan

La couleur GPUView code la couleur d’arrière-plan de l’intervalle d’exécution pour afficher la relation du processeur. Dans le cas du diagramme précédent, le processus inactif a deux threads, ce qui indique qu’il s’agit d’une machine double cœur. Un processeur s’est vu attribuer la couleur blanche et l’autre vert vif. Lorsque des commutateurs de thread se produisent, GPUView peint l’arrière-plan avec les informations du processeur montrant que lorsque le thread système s’est exécuté, il s’est exécuté sur le premier processeur.

GPUView affiche actuellement huit couleurs de processeur uniques et prend en charge jusqu’à 32 processeurs uniques.

Priorité du thread

Le nombre affiché au début de chaque intervalle d’exécution est la priorité du thread.

Interruptions matérielles ou DPC

Les interruptions matérielles ou les appels de procédure différée peuvent s’exécuter sur n’importe quel thread à tout moment. GPUView affiche ces informations sous forme de temps croisé dans l’intervalle d’exécution. Les interruptions matérielles sont affichées en hachages rouges et les DPC en bleu.

Capture d’écran des interruptions matérielles et DPC dans GPUView.

Dans le diagramme précédent, un DPC s’est exécuté sur le premier cœur inactif et, peu après, une interruption matérielle s’est produite sur le deuxième cœur inactif.

Profilage d’exécution imbriqué

Avec certaines API, GPUView affiche le temps passé dans des fonctions particulières. Il s’agit de l’exécution imbriquée dans l’intervalle d’exécution. Une partie importante du noyau vidéo journalise les événements qui indiquent quand le thread a entré ou quitté une routine particulière.

Capture d’écran du profilage d’exécution imbriqué dans GPUView.

Dans le diagramme précédent, la flèche la plus à gauche pointe vers l’heure d’exécution imbriquée qui est bleue. Le bleu est une couleur réservée qui désigne le code du noyau vidéo. La deuxième flèche pointe vers l’heure d’exécution imbriquée qui est rouge. Le rouge est réservé en tant que temps de code du noyau du pilote vidéo.

Points de marche de pile

Capture d’écran des points de la procédure de pile sous les intervalles d’exécution.

Si la marche de la pile est activée pour la trace, GPUView les affiche sous forme de points juste en dessous de l’intervalle d’exécution. Dans le diagramme précédent, il existe trois points stack walk pour les deux intervalles.

Temps de non-exécution

Si un thread est créé ou détruit dans le délai de la fenêtre d’affichage, GPUView affiche l’absence via une ligne horizontale. Dans le diagramme suivant, l’heure de début de la fenêtre d’affichage est représentée par la ligne verticale située juste à droite du nom du thread. La ligne horizontale, référencée par la flèche rouge, entre elle et la zone d’exécution représente l’heure à laquelle le thread n’existait pas.

Capture d’écran du temps de non-exécution dans GPUView.