Condividi tramite


Visualizzazione di un thread

Comprendere la visualizzazione dell'esecuzione del thread di GPUView è fondamentale per vedere dove sono attivi i thread e dove eseguono funzionalità specifiche del video.

Il diagramma seguente è uno screenshot di una frazione di millisecondo di tempo che mostra solo i thread attivi che si estendono su due processi, ovvero il processo di sistema e il processo di inattività GPUView. In questa visualizzazione sono visualizzati tre thread.

Screenshot del processo inattivo di GPUView con thread attivi.

Con ogni thread, il nome si trova sul lato sinistro e un'area rettangolare grigia sul lato destro è la posizione in cui vengono visualizzati gli intervalli di esecuzione. Questa intera area è nota come "Thread Area".

Nome thread

Screenshot che mostra un nome di thread con ID, modulo e funzione.

Nell'ellisse rossa nell'immagine precedente, l'ID del thread viene visualizzato tra parentesi seguito dal modulo e dalla funzione che ha generato il thread. In questo caso, è stato creato il thread 432 da dxgmms1.sys in corrispondenza dell'offset 0x37DC0. Se i simboli vengono caricati, GPUView mostra il nome simbolico anziché il numero di offset.

Area di esecuzione del thread

Screenshot dell'area di esecuzione del thread in GPUView.

L'area grigia a destra del nome, l'area di esecuzione del thread, rappresenta il tempo in cui un thread può essere eseguito. In questo caso, il thread è stato eseguito due volte durante questo periodo di tempo.

Intervallo di esecuzione thread

Screenshot degli intervalli di esecuzione dei thread in GPUView.

In questo caso, i rettangoli bianchi rappresentano quando il thread è stato effettivamente eseguito. Questo diagramma mostra due intervalli di esecuzione del thread.

Testo dettagli

Screenshot del testo dei dettagli sopra l'area di esecuzione del thread.

Sul lato destro, appena sopra l'area di esecuzione del thread, vengono forniti dettagli relativi all'esecuzione del thread. Il primo numero è il numero di intervalli di esecuzione durante questo periodo di tempo. Il secondo numero, etichettato come iTime, è la quantità di tempo in cui i DPC (Deferred Procedure Calls) sono stati eseguiti su questo thread. Il terzo elemento è la durata totale dell'intervallo di esecuzione e l'ultimo elemento è la percentuale del tempo del riquadro di visualizzazione durante il quale il thread è stato attivo.

Dettagli dell'intervallo di esecuzione

Screenshot che mostra i dettagli di un intervallo di esecuzione del thread.

Colore di sfondo

GPUView codifica a colori lo sfondo dell'intervallo di esecuzione per mostrare la relazione del processore. Nel caso del diagramma precedente, il processo Idle ha due thread, indicando che si tratta di un computer dual-core. A un processore è stato assegnato il colore bianco e l'altro verde brillante. Quando si verificano passaggi di thread, GPUView pittura lo sfondo con le informazioni sul processore, mostrando che quando il thread di sistema è stato eseguito, è stato eseguito sul primo processore.

GPUView visualizza attualmente otto colori univoci del processore e supporta fino a 32 processori univoci.

Priorità Thread

Il numero visualizzato all'inizio di ogni intervallo di esecuzione è la priorità del thread.

Interruzioni hardware o DPC

Gli interrupt hardware o le chiamate di procedura posticipata possono essere eseguiti in qualsiasi thread in qualsiasi momento. GPUView visualizza queste informazioni come tempo incrociato nell'intervallo di esecuzione. Le interruzioni dell'hardware sono mostrate in croce rossa e i DPC sono visualizzati in blu.

Screenshot delle interruzioni hardware e DPC in GPUView.

Nel diagramma precedente, un DPC è stato eseguito sul primo core inattivo e, poco dopo, si è verificata un'interruzione hardware nel secondo core inattivo.

Profilazione dell'esecuzione annidata

Con alcune API, GPUView mostrerà il tempo dedicato in determinate funzioni. Questa operazione è nota come esecuzione annidata nell'intervallo di esecuzione. Una parte significativa del kernel video registra gli eventi che indicano quando il thread è entrato o ha lasciato una determinata routine.

Screenshot della profilatura di esecuzione annidata in GPUView.

Nel diagramma precedente, la freccia più a sinistra punta al tempo di esecuzione annidato, che è blu. Il blu è un colore riservato che indica il codice del kernel video. La seconda freccia indica il tempo di esecuzione annidato, che è rosso. Il rosso è riservato come tempo di codice del kernel del driver video.

Punti di cammino nello stack

Screenshot di

Se lo stack walking è abilitato per la traccia, GPUView li visualizza come punti appena sotto l'Intervallo di Esecuzione. Nel diagramma precedente sono presenti tre punti di Stack Walk per i due intervalli.

Tempo di non esecuzione

Se un thread viene creato o eliminato definitivamente entro il tempo del riquadro di visualizzazione, GPUView mostrerà la non esistenza tramite una linea orizzontale. Nel diagramma seguente l'ora di inizio del riquadro di visualizzazione è rappresentata dalla linea verticale a destra del nome del thread. La linea orizzontale, a cui fa riferimento la freccia rossa, tra di essa e l'area di esecuzione rappresenta l'ora in cui il thread non esiste.

Screenshot del tempo di non esecuzione in GPUView.