I thread visualizzano i report nel visualizzatore di concorrenza

Questo articolo fornisce informazioni sui report nella visualizzazione Thread del visualizzatore di concorrenza.

Rapporto profili del tempo di blocco

I rapporti profili contengono dati aggregati relativi al tempo di blocco per gli stack di chiamate specifici di ogni categoria di blocco, ad esempio "I/O" o "Sincronizzazione". Il rapporto Precedenza elenca i processi che precedevano il processo corrente con il numero di istanze di precedenza. Per compilare il rapporto profili di blocco, lo strumento raccoglie chiamate API di blocco e le accumula in un albero degli stack di chiamate. I dati visualizzati in questi rapporti variano in base all'intervallo di tempo corrente, ai thread nascosti e ai seguenti due filtri che possono essere applicati:

  • Se l'opzione Just My Code è selezionata, vengono presentati solo gli stack frame con codice utente, più un livello sotto il codice utente.

  • Se è impostato il valore di riduzione del rumore, gli stack fascicolati con una frequenza minore di quella specificata vengono ignorati.

    Espandere qualsiasi voce dell'albero delle chiamate per individuare la riga di codice in cui viene impiegato il tempo di blocco. Per individuare la riga di codice sorgente per una voce, scegliere Visualizza origine nel relativo menu di scelta rapida. Per individuare la riga di codice che ha chiamato questa riga, scegliere Visualizza siti di chiamata nel menu di scelta rapida. Se solo un sito di chiamata è disponibile, il comando si connette alla riga di codice evidenziata per il sito di chiamata. Se sono disponibili più siti di chiamata, il comando apre una finestra di dialogo in cui è possibile selezionare una voce e quindi scegliere il pulsante Passa all'origine per individuare il sito di chiamata evidenziato. Spesso è molto utile visualizzare il codice sorgente per il sito di chiamata con il maggior numero di istanze, i tempi più elevati o entrambi.

Colonne del rapporto del tempo di blocco

Nella tabella seguente sono riportate le colonne per ogni rapporto del tempo di blocco.

Nome colonna Descrizione
Nome Nome della funzione per ogni livello dello stack di chiamate.
Istanze Numero di istanze della chiamata di blocco per il periodo di tempo visibile.
Tempo inclusivo di blocco Tempo di blocco totale impiegato per tutti gli stack con rollup a questo livello dell'albero degli stack di chiamate. Il numero inclusivo è la somma del tempo esclusivo di blocco per questa funzione e del tempo esclusivo di blocco per tutti i relativi nodi figlio.
Tempo esclusivo di blocco Tempo di blocco totale impiegato in cui questa funzione è il livello più basso dello stack di chiamate. Una voce univoca dello stack di chiamate con un tempo esclusivo di blocco elevato può essere una funzione di interesse.
API/Categoria di attesa Visualizzata solo per le funzioni al livello più basso dello stack di chiamate. Se la firma della chiamata di blocco viene riconosciuta, viene specificato il nome dell'API di blocco. Se la firma non viene riconosciuta, vengono specificate le informazioni segnalate dal kernel.
Dettagli Nome completo della funzione. Include il conteggio delle righe, se disponibile.

Sincronizzazione

Il rapporto Sincronizzazione specifica le chiamate responsabili dei segmenti di blocco nel tempo di sincronizzazione e i tempi di blocco aggregati di ogni stack di chiamate. Per altre informazioni, vedere Periodo di sincronizzazione.

Sospendi

Il rapporto Sospensione specifica le chiamate responsabili del tempo di blocco attribuito al tempo trascorso in modalità di sospensione e i tempi di blocco aggregati di ogni stack di chiamate. Per altre informazioni, vedere Tempo di sospensione.

I/O

Il rapporto I/O specifica le chiamate responsabili dei segmenti di blocco nel tempo di I/O e i tempi di blocco aggregati di ogni stack di chiamate. Per altre informazioni, vedere Tempo di I/O (visualizzazione Thread).

Gestione della memoria

Il rapporto Gestione della memoria specifica le chiamate responsabili dei segmenti di blocco nelle operazioni di gestione della memoria e i tempi di blocco aggregati di ogni stack di chiamate. Per altre informazioni, vedere Tempo di gestione della memoria.

Precedenza

Il rapporto Precedenza elenca i processi che precedevano il processo corrente insieme al numero di istanze. È possibile espandere ogni processo per visualizzare i thread specifici che hanno sostituito i thread nel processo corrente e per visualizzare una suddivisione delle istanze di precedenza per ogni thread. Questo rapporto di blocco consente di eseguire meno azioni rispetto agli altri poiché la precedenza di solito viene imposta al processo dal sistema operativo, non da un problema nel codice. Per altre informazioni, vedere Tempo di precedenza.

Elaborazione interfaccia utente

Il rapporto relativo all'elaborazione dell'interfaccia utente indica le chiamate responsabili dei segmenti di blocco nei blocchi di elaborazione dell'interfaccia utente, oltre ai tempi di blocco aggregati di ogni stack di chiamate. Per altre informazioni, vedere Tempo di elaborazione dell'interfaccia utente.

Report delle operazioni su disco (visualizzazione Thread)

Nel rapporto delle operazioni su disco vengono descritte le operazioni I/O eseguite nei canali del disco.

Per ogni accesso al disco che avviene per conto del processo sottoposto a profilatura nell'intervallo di tempo attualmente visibile, vengono segnalate le informazioni seguenti:

  • Nome e PID del processo che ha eseguito l'accesso al disco

  • ID del thread che ha eseguito l'accesso al disco

  • Nome del file al quale è stato eseguito l'accesso.

  • Numero di letture per ogni file

  • Numero di byte letti.

  • Latenza di lettura in millisecondi

  • Numero di operazioni di scrittura

  • Numero di byte scritti

  • Latenza di scrittura in millisecondi

Report del profilo di esecuzione

Il rapporto del profilo di esecuzione è un profilo di campionamento tradizionale. I campioni vengono presi ogni millisecondo circa durante i periodi in cui un thread è in esecuzione su un core logico e il visualizzatore di concorrenza compila un albero delle chiamate tipico collazionando il set di stack di campioni accumulato. I dati della tabella possono essere influenzati dall'intervallo di tempo corrente e dai thread nascosti e dai filtri seguenti che possono essere applicati:

  • Se l'opzione Just My Code è selezionata, vengono visualizzati solo gli stack frame con codice utente, più un livello sotto il codice utente.

  • Se è impostato il valore di Riduzione rumore, gli stack collazionati con una frequenza minore di quella specificata vengono esclusi dal filtro.

    Nella tabella seguente vengono illustrate le colonne del rapporto.

Colonna Descrizione
Name Nome della funzione per ogni livello dello stack di chiamate.
Campioni inclusivi Numero totale di campioni raccolti per tutti gli stack accumulati nel livello dell'albero dello stack di chiamate. Il numero inclusivo è la somma dei campioni esclusivi per questa funzione e dei contatori inclusivi per tutti i nodi figlio.
Campioni esclusivi Numero totale di campioni raccolti per cui questa funzione è il livello più basso dello stack di chiamate.
% inclusivi La percentuale di campioni totali visualizzata nella colonna dei campioni inclusivi. Le percentuali vengono arrotondate a due cifre decimali.
% esclusivi La percentuale di campioni totali visualizzata nella colonna dei campioni esclusivi. Le percentuali vengono arrotondate a due cifre decimali.
Dettagli Nome completo della funzione. Include il conteggio delle righe, se disponibile.

Questa tabella di report è illustrata in Tempo di esecuzione (visualizzazione Thread).

Rapporto marcatori

Il rapporto Marcatori elenca i marcatori nell'intervallo di tempo visualizzato. La panoramica o lo zoom così come le corsie nascoste potrebbero far comparire o scomparire i marcatori. Il rapporto contiene le informazioni seguenti per ogni marcatore:

  • L'ora in cui è stato avviato, rispetto all'inizio della traccia.

  • La durata. La durata è zero per i flag e i messaggi poiché rappresentano un istante.

  • L'ID del thread che lo ha generato.

  • Il provider ETW (Event Tracking for Windows) che lo ha generato.

  • La serie di marcatori da cui è stato scritto.

  • La categoria di eventi a cui appartiene.

  • Il livello di importanza.

  • Il tipo (intervallo, flag o messaggio).

  • Una descrizione dettagliata di cosa rappresenta.

    Scegliere il pulsante Esporta per salvare il rapporto Marcatori come file con estensione csv. È possibile usare i dati nel file con estensione csv con altre app o strumenti.

Nota

Il rapporto Marcatori può visualizzare 1000 marcatori. Per visualizzare tutti i marcatori, esportare il rapporto completo in un file con estensione csv.

Report di riepilogo per thread

Questo grafico a barre mostra la percentuale di tempo usata da ogni thread non nascosto per ciascuna categoria di attività durante l'intervallo di tempo attualmente visibile. "Esecuzione" indica che il thread è in esecuzione; tutte le altre categorie indicano che il thread è in attesa.