Introduzione: rilevamento dei colli di bottiglia del thread

I colli di bottiglia del thread così come i conflitti e le condizioni di stallo possono rallentare o arrestare l'applicazione. La prospettiva Creazione profili e log include le viste e gli strumenti che consentono di rilevare e risolvere i problemi relativi ai thread.

Per il rilevamento dei colli di bottiglia del thread sono disponibili le seguenti viste:

È inoltre possibile esaminare i colli di bottiglia del thread mediante analisi personalizzate definite in Probekit.

Argomento principale: Introduzione alla determinazione dei problemi di run-time

Raccolta dei dati per il rilevamento dei colli di bottiglia del thread

Prerequisiti:

Per raccogliere i dati:
  1. Nella scheda Creazione profili della finestra di dialogo Profilo, selezionare la serie di creazione profili Analisi thread.
  2. Fare clic su Profilo per avviare l'applicazione.
  3. Provare ad utilizzare le parti dell'applicazione che si suppone presentino colli di bottiglia del thread. I dati del thread vengono raccolti e registrati in una risorsa di creazione profili Analisi thread, visualizzata in Selezione Creazione profili. A questo punto, è possibile terminare l'applicazione.

Uso delle viste Vista Thread e Diagramma sequenza UML2 per il rilevamento dei colli di bottiglia del thread

La Vista Thread visualizza la cronologia dell'esecuzione di un thread per tutti i thread dell'applicazione ed indica in modo chiaro le condizioni di stallo ed i conflitti. Nella vista Interazioni oggetto UML2 viene visualizzata la sequenza delle chiamate durante l'esecuzione della creazione dei profili.

Per rilevare i colli di bottiglia del thread:
  1. Aprire la Vista Thread: fare clic con il pulsante destro del mouse sulla risorsa di creazione profili relativa ai dati raccolti e nel menu a comparsa selezionare Apri con > Vista Thread.
  2. Nella Vista Thread, cercare le frecce verticali Frecce indicanti richieste di blocco tra i thread. Una freccia punta da un thread che richiede un blocco al thread che trattiene il blocco. Una freccia singola indica un conflitto di thread: un thread è in attesa che un altro thread rilasci un blocco. Più frecce indicano una condizione di stallo se mostrano un modello di richiesta del blocco circolare, in cui i thread si impediscono vicendevolmente l'esecuzione in quanto risultano a loro volta in attesa di rilascio di un blocco.
  3. Identificare i metodi chiamati al momento in cui si è verificato il collo di bottiglia. Per individuare i metodi, eseguire la procedura riportata di seguito:
    1. Trovare il nome del blocco di cui il thread è in attesa. Nella Vista Thread, posizionare il cursore sul thread nell'ubicazione in cui risulta in attesa del blocco. Il nome del blocco, così come il nome del thread in blocco che trattiene il blocco, vengono visualizzati nella descrizione comandi.
    2. Fare clic con il pulsante destro del mouse sulla risorsa di creazione profili Analisi thread e nel menu a comparsa selezionare Apri con > Interazioni oggetto UML2.
    3. Nell'elenco presente nella Vista Thread, selezionare il thread che trattiene il blocco si desidera esaminare. Nella vista Interazioni oggetto UML2 vengono mostrate le interazioni oggetto del thread selezionato, compresi il blocco e le richieste relative al blocco.
    4. 3Posizionare l'indicatore Ora corrente sulla freccia relativa alla richiesta che si desidera esaminare. Questa operazione sincronizza la vista Interazioni oggetto UML2 e la risorsa di creazione profili Stack di chiamata in Controllo creazione profili. L'indicatore Ora corrente è posizionato, come impostazione predefinita, sul margine sinistro del grafico Vista Thread. Per spostarlo utilizzare il mouse.
  4. Visualizzare il codice origine responsabile di trattenere il blocco, se disponibile. A tal fine, fare clic con il pulsante destro del mouse sulla chiamata più recente in Stack di chiamata relativa al thread che trattiene il blocco, quindi selezionare Apri origine dal menu a comparsa. Il codice origine è disponibile solo se si sta creando il profilo di un progetto Java attualmente aperto nella prospettiva Java. A questo punto, è possibile apportare le modifiche al codice per risolvere il collo di bottiglia.
  5. Creare nuovamente il profilo dell'applicazione per verificare che il collo di bottiglia sia stato risolto.

Per ulteriori informazioni, leggere Rilevamento dei colli di bottiglia del thread.

Uso delle viste Flusso esecuzione e Tabella flusso esecuzione

Queste viste mostrano, in formati differenti, i dati non elaborati sui quali si basa la Vista Thread.

Per utilizzare queste viste:
  1. Per visualizzare la vista Flusso esecuzione o Tabella flusso esecuzione, selezionare Finestra > Mostra vista > Altro . . .; espandere la voce Creazione profili e log nella finestra di dialogo Mostra vista e selezionare la vista che si desidera visualizzare.
  2. Nelle viste Flusso esecuzione e Tabella flusso esecuzione, è possibile sottrarre il tempo attribuito alla creazione profili selezionando Tempo compensato nel menu a comparsa.

Clausole di utilizzo | Commenti
(C) Copyright IBM Corporation 2000, 2004. Tutti i diritti riservati.