Introdução: Detecção de Gargalo de Encadeamento

Os gargalos de encadeamento, como contenções e conflitos, podem deixar seu aplicativo lento ou causar uma interrupção. A perspectiva Profiling and Logging (Traçado de Perfil e Log) inclui visualizações e ferramentas que podem ajudá-lo a detectar e resolver esses problemas de encadeamento.

É possível utilizar as seguintes visualizações para detectar gargalos de encadeamento:

Ao trabalhar para detectar gargalos de encadeamento, normalmente são selecionados recursos de traçado de perfil na visualização Profiling Monitor (Monitor de Traçado de Perfil).

Também é possível investigar gargalos de encadeamento utilizando probes personalizados projetados no Probekit.

Coletando Dados para a Detecção de Gargalo de Encadeamento

É possível utilizar o conjunto de traçado de perfil Thread Analysis (Análise de Encadeamento) para coletar dados sobre gargalos de encadeamento no aplicativo.

Pré-requisitos:

Para coletar dados:
  1. Clique em Run (Executar) > Profile (Perfil).
  2. Na página Profiling (Traçado de Perfil) da caixa de diálogo Profile (Perfil), selecione o conjunto de traçado de perfil Thread Analysis (Análise de Encadeamento).
  3. Clique em Profile (Perfil) para iniciar seu aplicativo.
  4. Exercite as partes de seu aplicativo onde acredita que existam gargalos de encadeamento. Os dados de encadeamento são coletados e registrados em um recurso de traçado de perfil Thread Analysis (Análise de Encadeamento), que é exibido no Profiling Navigator (Navegador de Traçado de Perfil). Você pode, agora, parar o aplicativo.

Utilizando as Visualizações Thread View (Visualização de Encadeamento), Call Stack View (Visualização da Pilha de Chamada) e UML2 Sequence Diagram (Diagrama de Seqüência UML2) para Detecção de Gargalo de Encadeamento

Em Thread View (Visualização de Encadeamento), é possível ver um histórico de execução de encadeamento para todos os encadeamentos em seu aplicativo mais indicações explícitas de conflitos e contenções. Em Call Stack View (Visualização da Pilha de Chamada), é possível ver quadros temporários para todos os encadeamentos dos recursos de traçado de perfil selecionados. Na visualização UML2 Object Interactions (Interações de Objeto UML2), é possível ver a seqüência de chamadas durante a execução do traçado de perfil.

Para detectar gargalos de encadeamento:
  1. Exiba a Thread View: Clique com o botão direito do mouse no recurso de traçado de perfil para os dados coletados e, no menu pop-up, selecione Open With (Abrir com) > Thread View (Visualização de Encadeamento).
  2. Na Thread View, procure por setas verticais entre os encadeamentos. As setas verticais apontam de um encadeamento que está solicitando um bloqueio para o encadeamento que contém o bloqueio. Uma única seta indica uma contenção de encadeamento em que um encadeamento está aguardando que outro encadeamento libere um bloqueio. Várias setas indicam um conflito em que dois encadeamentos pertencem ao mesmo estado de conflito de encadeamento.
  3. Identifique os métodos chamados no momento do gargalo. Para identificar os métodos, execute as seguintes etapas:
    1. Localize o nome do bloqueio pelo qual o encadeamento está aguardando. Na Thread View, pause o cursor sobre o encadeamento no local que está aguardando pelo bloqueio. O nome da trava e também o nome do encadeamento do bloqueio que está mantendo a trava são exibidos em Dicas de Ferramenta.
    2. Clique com o botão direito do mouse no recurso de traçado de perfil Thread Analysis na visualização Profiling Monitor e clique em Open With (Abrir com) > UML2 Object Interactions (Interações de Objeto UML2). A visualização UML2 Object Interactions mostra as chamadas de método entre as instâncias da classe Java.
    3. Na Thread View, posicione o indicador Current Time (Hora Atual) sobre a seta do pedido que deseja investigar. Isso sincroniza a visualização UML2 Object Interactions e o recurso de traçado de perfil Call Stack na Call Stack View. Por padrão, o indicador Current Time (Tempo Atual) está localizado na borda esquerda do gráfico Thread View (Visualização de Encadeamento). Para mover este indicador, arraste-o para o novo local ou clique na régua de tempo seconds (segundos) em Thread View (Visualização de Encadeamento).
  4. Se estiver disponível, exiba o código fonte responsável pela retenção do bloqueio. Para fazer isso:
    1. Clique no menu drop-down na barra de título de Thread View (Visualização de Encadeamento) e clique em Open Call Stack View (Abrir Visualização da Pilha de Chamada).
    2. Clique com o botão direito do mouse na chamada mais recente na Call Stack do encadeamento que está retendo o bloqueio e, em seguida, clique em Open Source (Abrir Origem) no menu pop-up. O código fonte estará disponível apenas se você estiver trançando o perfil de um projeto Java que esteja atualmente aberto na perspectiva Java. Agora é possível fazer alterações no código para resolver o gargalo.
  5. Trace novamente o perfil de seu aplicativo para verificar se o gargalo foi resolvido.

Para obter informações adicionais, leia Detectando Gargalos de Encadeamento.

Utilizando as Visualizações Execution Flow e Execution Flow Table

Nestas visualizações, é possível ver diferentes formatos dos dados brutos nos quais a Thread View (Visualização de Encadeamento) é baseada.

Para utilizar essas visualizações:
  1. Para exibir a visualização Execution Flow (Fluxo de Execução) ou Execution Flow Table (Tabela do Fluxo de Execução), selecione Window (Janela) > Show View (Mostrar Visualização) > Other (Outro); expanda a entrada Profiling and Logging (Traçado de Perfil e Log) na caixa de diálogo Show View (Mostrar Visualização) e selecione a visualização que deseja exibir.
  2. Nas visualizações Execution Flow e Execution Flow Table, é possível subtrair o tempo atribuído ao traçado de perfil selecionando-se Compensated Time (Tempo Compensado) no menu pop-up.

Feedback
(C) Copyright IBM Corporation 2000, 2005. Todos os Direitos Reservados.