Condividi tramite


Visualizzazione Thread (prestazioni in parallelo)

Questa visualizzazione è la più dettagliata e avanzata disponibile nel visualizzatore della concorrenza. Tramite questa visualizzazione è possibile identificare se i thread sono in esecuzione o bloccati a causa di operazioni di sincronizzazione o di I/O o per altri motivi.

Durante l'analisi del profilo vengono esaminati, tramite il visualizzatore della concorrenza, tutti gli eventi di cambio di contesto del sistema operativo per ciascun thread di un'applicazione. I cambi di contesto possono verificarsi per molti motivi, ad esempio i seguenti:

  • Un thread è bloccato su una primitiva di sincronizzazione.

  • Il quantum di un thread scade.

  • Un thread esegue una richiesta di I/O del blocco.

Nella visualizzazione Thread viene assegnata una categoria a ogni cambio di contesto quando l'esecuzione di un thread si interrompe. Le categorie sono riprodotte nella legenda presente nella parte inferiore sinistra della visualizzazione e vengono descritte in argomenti della Guida corrispondenti. La categorizzazione degli eventi di cambio di contesto si ottiene mediante la ricerca di API di blocco note nello stack di chiamate del thread. In caso non si trovi una corrispondenza nello stack di chiamate, si utilizza il motivo di attesa fornito da Windows. Sebbene tecnicamente corretta, la categoria Windows può essere basata su un dettaglio dell'implementazione anziché su quanto previsto dall'utente. Un esempio di questo comportamento è dato dal fatto che Windows segnalerà il blocco in lettura-scrittura nativo come I/O anziché come sincronizzazione. Tuttavia, in questi casi dovrebbe essere possibile identificare la causa radice di qualsiasi evento di blocco esaminando gli stack di chiamate corrispondenti agli eventi di cambio di contesto.

Nella visualizzazione Thread vengono inoltre mostrate le dipendenze tra thread. Ad esempio, se si identifica un thread bloccato su un oggetto di sincronizzazione, lo strumento è spesso in grado di visualizzare il thread che lo ha sbloccato e l'attività che il thread stava eseguendo, visualizzando il relativo stack di chiamate risalente al momento in cui è stato sbloccato il thread interessato.

Infine, durante l'esecuzione dei thread lo strumento consente di raccogliere campioni, affinché sia possibile individuare il codice eseguito da uno o più thread durante un segmento di esecuzione. Oltre a fornire la visibilità basata su campioni dell'esecuzione dei thread, questa visualizzazione consente di generare rapporti di profilo di esecuzione della struttura ad albero dello stack di chiamate e di bloccare rapporti.

Utilizzo

La visualizzazione Thread consente di eseguire diverse attività, In genere, tra gli utilizzi tipici rientrano i seguenti:

  • Identificazione dei motivi per cui l'interfaccia utente di un'applicazione non risponde durante alcune fasi di esecuzione.

  • Identificazione della quantità di tempo trascorso in un blocco dovuto a sincronizzazione, operazioni di I/O, errori di pagina e così via.

  • Identificazione del grado di interferenza con altri processi in esecuzione nel sistema.

  • Identificazione dei problemi di bilanciamento del carico per l'esecuzione parallela.

  • Identificazione delle cause di scalabilità non ottimale o assente, ad esempio i motivi per cui le prestazioni di un'applicazione parallela non migliorano quando nel sistema sono disponibili più core logici.

  • Individuazione del livello di concorrenza nell'applicazione per agevolare la parallelizzazione.

  • Individuazione delle dipendenze tra thread di lavoro e percorsi critici di esecuzione.

Nel resto di questa sezione verrà esaminato un modello di utilizzo consigliato inteso a rendere più produttivo l'utilizzo di questa visualizzazione. È innanzitutto consigliabile utilizzare la Visualizzazione Utilizzo CPU per concentrare l'attenzione su una fase specifica dell'esecuzione del processo a cui si è interessati. L'utilizzo di Supporto di indicatori di scenario nell'applicazione può agevolare notevolmente in questo processo. Dopo avere eseguito lo zoom avanti in un intervallo di tempo di esecuzione di interesse, è possibile selezionare la visualizzazione Thread.

Identificazione e restrizione di un'area di interesse

Nella visualizzazione Thread viene rappresentata una visualizzazione di sequenza temporale con il tempo sull'asse x. Sull'asse Y sono riportati due canali di I/O, uno per le letture e uno per le scritture, per ogni dispositivo disco fisico nel sistema in cui è stata registrata attività durante la raccolta del profilo. Sotto i canali del disco, è disponibile un canale per ogni thread del processo. Inizialmente i thread sono disposti nell'ordine in cui vengono creati, pertanto il primo sarà il thread dell'applicazione principale. È possibile utilizzare l'opzione di ordinamento presente nell'angolo superiore sinistro della visualizzazione per ordinare i thread in base a un altro criterio, ad esempio secondo i thread che svolgono la maggior quantità di lavoro di esecuzione.

È quindi possibile nascondere i thread che non stanno eseguendo alcun lavoro nello scenario di interesse selezionandone i nomi dalla colonna a sinistra e facendo clic sull'icona Nasconde i thread selezionati sulla barra degli strumenti. Tali thread possono esistere per molte ragioni, ad esempio potrebbe trattarsi di thread del pool inattivi. Questi thread sono in genere completamente bloccati, di solito a causa della sincronizzazione. È necessario rimuoverli dalla visualizzazione perché le relative statistiche possono contaminare i rapporti con informazioni irrilevanti.

È possibile utilizzare il rapporto della scheda Suddivisione esecuzione per identificare eventuali thread aggiuntivi nascosti. Per visualizzare il grafico Suddivisione esecuzione, fare clic su Riepilogo per thread nella legenda attiva. In questo grafico viene illustrata la suddivisione degli stati dei thread dell'applicazione per l'intervallo di tempo attualmente visibile. Per supportare la scalabilità in tale grafico, è necessario limitare il numero di thread visualizzati, pertanto in alcuni casi nel grafico non verranno visualizzati dati per tutti i thread dell'applicazione. In questo caso, nella posizione all'estrema destra vengono visualizzati puntini di sospensione.

Dopo avere limitato l'analisi a un'area di interesse e avere selezionato i thread desiderati, è possibile avviare l'analisi delle prestazioni. Nelle sezioni seguenti vengono descritti i vari strumenti disponibili.

Dettagli sul blocco dei thread

Per capire le ragioni sottostanti per le aree di blocco dei thread, posizionare il mouse su una di queste aree oppure selezionarle facendo clic con il pulsante sinistro del mouse. Quando si posiziona il mouse su un'area di blocco, viene visualizzata una descrizione comando contenente informazioni generali sull'evento di blocco, ad esempio la categoria, un'API di blocco se disponibile, l'ora di inizio dell'area e la durata del blocco. Per la categoria di precedenza vengono inoltre indicati l'ID processo e l'ID thread nel processo pianificato sulla CPU quando il thread è stato interrotto dal kernel. È inoltre possibile selezionare un'area di blocco in un canale di interesse, con conseguente visualizzazione dello stack corrente nella finestra inferiore. Oltre alle informazioni contenute nella descrizione comando, nella scheda Stack corrente verrà visualizzato lo stack di chiamate che ha comportato il blocco del thread. Esaminando lo stack di chiamate, è possibile determinare la ragione sottostante per l'evento di blocco del thread. Per impostazione predefinita, in questa visualizzazione verranno mostrati gli stack di chiamate completi, inclusi gli stack utente e kernel. Quando lo strumento è in grado di identificare un'API specifica come causa, lo stack di chiamate viene tagliato oltre quel frame. Se lo strumento non è in grado di determinare la chiamata di funzione radice che ha causato il blocco, viene esposto l'intero stack per consentire all'utente di esaminarlo e di procedere a tale determinazione.

Accade spesso che un percorso di esecuzione comporti più eventi di blocco. In alcune circostanze può anche essere importante comprendere i ritardi di blocco cumulativi organizzati per stack di chiamate. A questo scopo, viene fornito un rapporto di profilo basato su una struttura ad albero delle chiamate per ciascuna categoria di blocco. È possibile visualizzare il profilo selezionando una delle voci della legenda delle categorie di blocco sulla sinistra. Questi rapporti offrono un modo rapido per assegnare le priorità temporali ai diversi aspetti dell'applicazione durante l'ottimizzazione.

Dipendenze tra thread

Il visualizzatore della concorrenza mostra dipendenze tra thread di blocco all'interno del processo. Per determinare il thread le cui azioni hanno sbloccato un thread di interesse, fare clic sul segmento di blocco attinente. Se lo strumento è in grado di determinare il thread di sblocco, disegna una linea per connettere il segmento di esecuzione che segue il segmento di blocco all'altro thread. Tale linea mostra il modo in cui il thread selezionato è sbloccato da un thread diverso. La scheda Stack di sblocco viene inoltre popolata con lo stack di chiamate attinente. È pertanto possibile identificare rapidamente un thread bloccato, verificare quali operazioni sta tentando di eseguire e vedere ciò che è stato effettivamente in grado di eseguire.

Dettagli sull'esecuzione dei thread

È spesso utile determinare il codice eseguito dai thread quando l'applicazione è in esecuzione. Queste aree vengono visualizzate come segmenti verdi nel grafico cronologia. Due funzionalità agevolano questa operazione.

Innanzitutto, quando si fa clic su un segmento di esecuzione nella sequenza temporale, si tenta di trovare lo stack di chiamate del profilo campione più vicino. Una volta trovato, viene visualizzato un cursore nero sopra la posizione nel blocco di esecuzione in cui è stato acquisito il campione, mentre lo stesso stack di chiamate viene visualizzato nella scheda Stack corrente. È possibile selezionare altri campioni facendo clic su altri punti nei segmenti di esecuzione. In alcuni casi potrebbe risultare impossibile trovare un campione. Questo problema è in genere dovuto alla frequenza di 1 ms alla quale vengono raccolti i profili campione. Ad esempio, quando la lunghezza di un segmento di esecuzione è minore di un millisecondo, è possibile che non venga raccolto alcuno stack di chiamate. La frequenza di campionamento non può essere modificata, ma un millisecondo rappresenta un buon compromesso tra il sovraccarico di esecuzione e l'accuratezza.

In secondo luogo, il rapporto di profilo di esecuzione del campionamento insieme alla relativa visualizzazione della struttura ad albero delle chiamate è un'importante funzionalità che può aiutare l'utente a comprendere dove viene impiegato il tempo di esecuzione. Questa funzionalità è accessibile facendo clic sull'elemento Esecuzione nella legenda attiva. Il profilo di esecuzione offre un rapporto di campionamento per tutti i thread abilitati (non nascosti) nella visualizzazione corrente filtrata in base all'intervallo di tempo nella finestra.

Grafico cronologia

Nel grafico della sequenza temporale viene mostrata l'attività di tutti i thread nel processo e di tutti i dispositivi disco fisici nel computer host. È possibile eseguire lo zoom avanti sulla sequenza temporale trascinando il puntatore del mouse, utilizzando l'apposito dispositivo di scorrimento sulla barra degli strumenti della finestra oppure tenendo premuto CTRL e ruotando la rotella del mouse. Posizionare il mouse su una delle barre orizzontali, o segmenti, per visualizzare la categoria, l'ora di inizio e la durata di tale punto del thread. Fare clic su uno dei segmenti per visualizzare lo stack di chiamate nella scheda Corrente nella parte inferiore dello schermo.

Nel grafico cronologia il colore indica lo stato di un thread in un determinato momento. I segmenti verdi, ad esempio, sono in esecuzione, i segmenti rossi sono bloccati per la sincronizzazione, i segmenti gialli sono stati superati e quelli viola sono impegnati in attività di I/O del dispositivo. Questa visualizzazione è utile per esaminare il bilanciamento del lavoro di un gruppo di thread impegnati in un ciclo parallelo o in attività simultanee. Se il completamento di uno o più thread richiede più tempo degli altri, è possibile che il carico di lavoro non sia bilanciato e che le prestazioni del programma possano essere ulteriormente migliorate distribuendo in modo più uniforme il lavoro tra i thread.

È inoltre possibile utilizzare il grafico cronologia per esaminare le dipendenze tra thread e le relazioni temporali tra i thread di blocco e quelli bloccati. È possibile determinare il numero di thread in esecuzione in un determinato momento osservando la porzione verticale in quel punto della cronologia. Se in quel momento un solo thread è verde (in esecuzione), l'applicazione non sfrutta completamente la concorrenza disponibile nel sistema. Sulla barra degli strumenti è possibile fare clic sui pulsanti in su e in giù per ordinare e spostare singoli thread oppure utilizzare il pulsante Nascondi thread per nascondere i thread che non interessano.

Rapporti Profilo

Sotto il grafico della sequenza temporale è presente una finestra a schede di tipo legenda attiva con diversi rapporti. I rapporti di profilo vengono aggiornati automaticamente quando la visualizzazione thread viene modificata tramite operazioni che consentono di applicare lo zoom, scorrere, nascondere o visualizzare i thread. Per le tracce di maggiori dimensioni, la finestra dei rapporti viene visualizzata in grigio durante il calcolo dei rapporti aggiornati. Ogni rapporto dispone di due opzioni di filtro: Riduzione rumore e Solo codice utente. L'opzione Riduzione rumore consente di filtrare voci della struttura ad albero delle chiamate irrilevanti in cui la quantità di tempo impiegato è limitata. Il valore predefinito è 2%, ma può essere modificato impostando qualsiasi valore compreso tra 0% e 99%. La casella di controllo relativa a Solo codice utente consente di filtrare o visualizzare voci della struttura ad albero delle chiamate diverse dalle proprie. I rapporti disponibili sono riportati nella sezione seguente.

Rapporto Profilo

Il rapporto Profilo corrente è accessibile tramite questa scheda. Fare clic su una voce nella legenda attiva per visualizzare il rapporto Profilo desiderato. I rapporti di profilo disponibili sono elencati nella sezione seguente, a partire da Esecuzione.

Stack corrente

Questa scheda mostra gli stack di chiamate per un segmento di thread selezionato nei grafico dei dettagli. Gli stack di chiamate vengono tagliati per dare la possibilità all'utente di concentrarsi sull'attività direttamente correlata al programma. Nella finestra di selezione vengono immediatamente visualizzate le informazioni sui thread attualmente in esecuzione.

Stack di sblocco

Fare clic su Stack di sblocco per visualizzare il thread che ha sbloccato il thread corrente e la riga di codice interessata.

Esecuzione

Nel rapporto di profilo di esecuzione è presente una tabella dettagliata insieme alla percentuale di tempo impiegato da ogni thread nei vari stati, ad esempio esecuzione, I/O e gestione della memoria

Fare clic sul controllo di struttura ad albero accanto a qualsiasi voce della struttura ad albero delle chiamate di interesse per eseguire il drill-down e individuare la riga di codice in cui viene impiegato il tempo di esecuzione. Dopo avere identificato la voce di interesse nella struttura ad albero delle chiamate, fare clic con il pulsante destro del mouse su tale voce per visualizzare un menu di scelta rapida contenente Visualizza origine e Visualizza siti di chiamata. Fare clic su Visualizza origine per spostarsi sulla riga di codice sorgente o su Visualizza siti di chiamata per spostarsi sulla riga di codice che ha chiamato quella corrente. Se è presente un solo sito di chiamata, si verrà spostati direttamente sulla riga di codice evidenziata per il sito di chiamata. Se sono presenti più siti di chiamata, verrà visualizzata una finestra di dialogo nella quale potrebbe essere selezionata una voce. Fare clic sul pulsante Passa all'origine per spostarsi sul sito di chiamata evidenziato. È spesso molto utile selezionare e passare all'origine per il sito di chiamata con il maggior numero di istanze, i tempi più elevati o entrambi. Per ulteriori informazioni, vedere Rapporto del profilo di esecuzione.

Sincronizzazione

Il rapporto di sincronizzazione mostra le chiamate responsabili dei blocchi di sincronizzazione con i tempi di blocco aggregati di ogni stack di chiamate. È possibile utilizzare queste informazioni per identificare e analizzare le aree di interesse.

Fare clic sul controllo di struttura ad albero accanto a qualsiasi voce della struttura ad albero delle chiamate di interesse per eseguire il drill-down e individuare la riga di codice in cui viene impiegato il tempo di sincronizzazione. Dopo avere identificato la voce di interesse nella struttura ad albero delle chiamate, fare clic con il pulsante destro del mouse su tale voce per visualizzare un menu di scelta rapida contenente Visualizza origine e Visualizza siti di chiamata. Fare clic su Visualizza origine per spostarsi sulla riga di codice sorgente o su Visualizza siti di chiamata per spostarsi sulla riga di codice che ha chiamato quella corrente. Se è presente un solo sito di chiamata, si verrà spostati direttamente sulla riga di codice evidenziata per il sito di chiamata. Se sono presenti più siti di chiamata, verrà visualizzata una finestra di dialogo nella quale è selezionata una voce. Fare clic sul pulsante Passa all'origine per spostarsi sul sito di chiamata evidenziato. È spesso molto utile selezionare e passare all'origine per il sito di chiamata con il maggior numero di istanze, i tempi più elevati o entrambi. Per ulteriori informazioni, vedere Tempo di sincronizzazione.

I/O

Il rapporto di I/O mostra le chiamate responsabili dei blocchi di I/O con i tempi di blocco aggregati di ogni stack di chiamate. È possibile utilizzare queste informazioni per identificare e analizzare le aree di interesse.

Fare clic sul controllo di struttura ad albero accanto a qualsiasi stack di chiamate di interesse per eseguire il drill-down e trovare la riga di codice su cui viene trascorso il tempo di I/O. Dopo avere identificato la voce di interesse nella struttura ad albero delle chiamate, fare clic con il pulsante destro del mouse su tale voce per visualizzare un menu di scelta rapida contenente Visualizza origine e Visualizza siti di chiamata. Fare clic su Visualizza origine per spostarsi sulla riga di codice sorgente o su Visualizza siti di chiamata per spostarsi sulla riga di codice che ha chiamato quella corrente. Se è presente un solo sito di chiamata, si verrà spostati direttamente sulla riga di codice evidenziata per il sito di chiamata. Se sono presenti più siti di chiamata, verrà visualizzata una finestra di dialogo nella quale è selezionata una voce. Fare clic sul pulsante Passa all'origine per spostarsi sul sito di chiamata evidenziato. È spesso molto utile selezionare e passare all'origine per il sito di chiamata con il maggior numero di istanze, i tempi più elevati o entrambi. Per ulteriori informazioni, vedere Tempo di I/O (visualizzazione Thread).

Sleep

Il rapporto di sospensione mostra le chiamate responsabili dei blocchi di sospensione con i tempi di blocco aggregati di ogni stack di chiamate. È possibile utilizzare queste informazioni per identificare e analizzare le aree di interesse.

Fare clic sul controllo di struttura ad albero accanto a qualsiasi stack di chiamate di interesse per eseguire il drill-down e trovare la riga di codice su cui viene trascorso il tempo di sospensione. Dopo avere identificato la voce di interesse nella struttura ad albero delle chiamate, fare clic con il pulsante destro del mouse su tale voce per visualizzare un menu di scelta rapida contenente Visualizza origine e Visualizza siti di chiamata. Fare clic su Visualizza origine per spostarsi sulla riga di codice sorgente o su Visualizza siti di chiamata per spostarsi sulla riga di codice che ha chiamato quella corrente. Se è disponibile un solo sito di chiamata, si verrà spostati direttamente sulla riga di codice evidenziata per il sito di chiamata. Se sono disponibili più siti di chiamata, verrà visualizzata una finestra di dialogo nella quale è selezionata una voce. Fare clic sul pulsante Passa all'origine per spostarsi sul sito di chiamata evidenziato. È spesso molto utile selezionare e passare all'origine per il sito di chiamata con il maggior numero di istanze, i tempi più elevati o entrambi. Per ulteriori informazioni, vedere Durata della sospensione.

Paging

Il rapporto di paging mostra le chiamate in cui si sono verificati blocchi di precedenza, oltre ai tempi di blocco aggregati di ogni stack di chiamate. È possibile utilizzare queste informazioni per identificare e analizzare le aree di interesse. Questo rapporto di blocco è meno utilizzabile di altri perché la precedenza viene in genere imposta al processo dal sistema operativo anziché dal codice. Mostra i tipi di precedenze che si sono verificati e la relativa posizione, oltre alla durata di un determinato stato di precedenza per il processo.

Fare clic sul controllo di struttura ad albero accanto a qualsiasi voce della struttura ad albero delle chiamate di interesse per eseguire il drill-down e individuare la riga di codice in cui viene impiegato il tempo di precedenza. Dopo avere identificato la voce di interesse nella struttura ad albero delle chiamate, fare clic con il pulsante destro del mouse su tale voce per visualizzare un menu di scelta rapida contenente Visualizza origine e Visualizza siti di chiamata. Fare clic su Visualizza origine per spostarsi sulla riga di codice sorgente o su Visualizza siti di chiamata per spostarsi sulla riga di codice che ha chiamato quella corrente. Se è disponibile un solo sito di chiamata, si verrà spostati direttamente sulla riga di codice evidenziata per il sito di chiamata. Se sono disponibili più siti di chiamata, verrà visualizzata una finestra di dialogo nella quale è selezionata una voce. Fare clic sul pulsante Passa all'origine per spostarsi sul sito di chiamata evidenziato. È spesso molto utile selezionare e passare all'origine per il sito di chiamata con il maggior numero di istanze, i tempi più elevati o entrambi. Per ulteriori informazioni, vedere Tempo di gestione della memoria.

Precedenza

Il rapporto di paging mostra le chiamate in cui si sono verificati blocchi di precedenza, oltre ai tempi di blocco aggregati di ogni stack di chiamate. È possibile utilizzare queste informazioni per identificare e analizzare le aree di interesse. Questo rapporto di blocco è meno utilizzabile di altri perché la precedenza viene in genere imposta al processo dal sistema operativo anziché dal codice. Mostra i tipi di precedenze che si sono verificati e la relativa posizione, oltre alla durata di un determinato stato di precedenza per il processo.

Fare clic sul controllo di struttura ad albero accanto a qualsiasi stack di chiamate di interesse per eseguire il drill-down e individuare la riga di codice in cui è stato impiegato il tempo di precedenza. Dopo avere identificato la voce di interesse nella struttura ad albero delle chiamate, fare clic con il pulsante destro del mouse su tale voce per visualizzare un menu di scelta rapida contenente Visualizza origine e Visualizza siti di chiamata. Fare clic su Visualizza origine per spostarsi sulla riga di codice sorgente o su Visualizza siti di chiamata per spostarsi sulla riga di codice che ha chiamato quella corrente. Se è disponibile un solo sito di chiamata, si verrà spostati direttamente sulla riga di codice evidenziata per il sito di chiamata. Se sono disponibili più siti di chiamata, verrà visualizzata una finestra di dialogo nella quale è selezionata una voce. Fare clic sul pulsante Passa all'origine per spostarsi sul sito di chiamata evidenziato. È spesso molto utile selezionare e passare all'origine per il sito di chiamata con il maggior numero di istanze, i tempi più elevati o entrambi. Per ulteriori informazioni, vedere Tempo di annullamento.

Elaborazione interfaccia utente

Il rapporto di elaborazione interfaccia mostra le chiamate responsabili dei blocchi di elaborazione interfaccia con i tempi di blocco aggregati di ogni stack di chiamate. È possibile utilizzare queste informazioni per identificare e analizzare le aree di interesse.

Fare clic sul controllo di struttura ad albero accanto a qualsiasi voce della struttura ad albero delle chiamate di interesse per eseguire il drill-down e individuare la riga di codice in cui viene impiegato il tempo di elaborazione dell'interfaccia utente. Dopo avere identificato la voce di interesse nella struttura ad albero delle chiamate, fare clic con il pulsante destro del mouse su tale voce per visualizzare un menu di scelta rapida contenente Visualizza origine e Visualizza siti di chiamata. Fare clic su Visualizza origine per spostarsi sulla riga di codice sorgente o su Visualizza siti di chiamata per spostarsi sulla riga di codice che ha chiamato quella corrente. Se è disponibile un solo sito di chiamata, si verrà spostati direttamente sulla riga di codice evidenziata per il sito di chiamata. Se sono disponibili più siti di chiamata, verrà visualizzata una finestra di dialogo nella quale è selezionata una voce. Fare clic sul pulsante Passa all'origine per spostarsi sul sito di chiamata evidenziato. È spesso molto utile selezionare e passare all'origine per il sito di chiamata con il maggior numero di istanze, i tempi più elevati o entrambi. Per ulteriori informazioni, vedere Tempo di elaborazione dell'interfaccia utente.

Riepilogo per thread

Questa scheda contiene una visualizzazione a colonne contraddistinte dal colore del tempo totale trascorso da ogni thread in ogni stato, ad esempio esecuzione, blocco e I/O. Le colonne sono identificate nella parte inferiore. Nel livello di zoom predefinito, il thread principale è la colonna più a sinistra. Quando si regola il livello di zoom nel grafico dei dettagli, i rapporti a schede vengono aggiornati automaticamente per riflettere la nuova scala cronologica. Per supportare la scalabilità in questo grafico, si limita il numero di thread visualizzati. Pertanto, in certi casi è possibile che il grafico non mostri i dati per tutti i thread nell'applicazione ma questa limitazione è indicata da puntini di sospensione nella posizione più a destra. Se il thread che si desidera visualizzare in questo grafico non è presente, è possibile nascondere thread non di interesse finché il thread desiderato non sarà visualizzato nel grafico. Per ulteriori informazioni, vedere Rapporto di riepilogo per thread.

Operazioni su file

Questa scheda mostra i thread inclusi in I/O su disco e i file interessati. Sono incluse le DLL caricate, il numero di byte letti e altre informazioni. Questo rapporto può essere utile nella valutazione del tempo impiegato per l'accesso ai file durante l'esecuzione, specialmente se il processo presenta in apparenza vincoli di I/O. Per ulteriori informazioni, vedere Rapporto delle operazioni su file (Visualizzazione thread).

Vedere anche

Concetti

Visualizzatore di concorrenze