Guia de Iniciação: Analisar dados de perfilamento

Objectivos

Para analisar os dados recolhidos a partir de um processo Java, utilizando as vistas Perfilar e Registar da perspectiva Perfilar e Registar do seguinte modo:

Tempo necessário

1 hora

Antes de começar

Antes de começar a ler este guia de iniciação terá de:

  1. Instalar a plataforma Eclipse, incluindo a Test and Performance Tools Platform (TPTP).
  2. Ter o ficheiro de perfilamento de exemplo (hcframe.jar) pronto para a importação. O ficheiro deverá estar no seguinte directório:
    TPTP_install_dir\eclipse\plugins\org.eclipse.tptp.platform.collection.framework_4.0.0

Descrição

Neste guia de iniciação, o utilizador irá usar as diferentes vistas Perfilar e Registar para analisar o exemplo PerformanceExample.class. O exemplo abre uma estrutura que contém dois botões.

Deverá concluir as seguintes tarefas:

  1. Abrir a perspectiva Perfilar e Registar no ambiente de trabalho
  2. Perfilar a classe PerformanceExample
  3. Analisar as informações de perfilamento

Para actualizar as vistas enquanto a aplicação está a ser executada, fazer clique no botão Actualizar Vistas um botão com ícone estilizado.

Abrir a perspectiva Perfilar e Registar no ambiente de trabalho.

No menu Janela, fazer clique em Abrir Perspectiva > Outra > Perfilar e Registar.

Perfilar a classe PerformanceExample

Para perfilar a classe PerformanceExample, siga os passos seguintes:

  1. Fazer clique no menu pendente Perfil um botão com ícone estilizado e seleccionar Perfil. Irá abrir-se a caixa de diálogo Lançar Perfil.
  2. Fazer duplo clique em Aplicação Java Externa para criar uma nova configuração.
  3. Mudar para o separador Início.
  4. Inserir org.eclipse.hyades.test.collection.framework.PerformanceExample no campo Nome de classe.
  5. Fazer clique em Adicionar Jar para adicionar o jar que contém esta classe.
  6. Seleccionar TPTP_install_dir\eclipse\plugins\org.eclipse.tptp.platform.collection.framework_4.0.0\hcframe.jar
  7. Fazer clique em Abrir. O jar será adicionado.
  8. Fazer clique no separador Supervisor. Pode especificar os critérios de perfilamento neste separador.
  9. No separador Supervisor, expandir o nó identificado como Perfilamento de Java, seleccionar Análise de Memória Básica e marque a caixa de verificação junto a esta opção. Esta opção irá adicionar informações relacionadas com a memória à lista de tipos de informações que devem ser recolhidas na aplicação.
  10. Seleccionar Análise do Tempo de Execução e seleccionar a caixa de verificação junto a esta opção. Com esta opção seleccionada, o utilizador pode usar as vistas de estatística para analisar as informações relacionadas com o tempo. Terá de recolher os detalhes gráficos da execução para conseguir utilizar as vistas Fluxo de Execução e Invocação de Método. Uma vez que o objectivo deste exemplo é guiar o utilizador através das vistas de perfilamento, incluindo as vistas Fluxo de Execução e Invocação de Método, ao seleccionar Análise do Tempo de Execução, fazer clique em Editar Opções, seleccionar Mostrar detalhes gráficos do fluxo de execução na caixa de diálogo Opções de Edição de Perfilamento. Além disso, fazer clique sobre a caixa de verificação Recolher classes de limite excluídas pelo conjunto de filtros e definir a Profundidade de classe de limite para 1. Fazer clique em Terminar.
  11. A opção Conjunto de Perfilamento de Filtros faculta a capacidade de especificar o sub-conjunto de informações que pretende analisar. Isto é útil se pretende filtrar e excluir as classes ou pacotes que não encontram dentro dos limites que gostaria de analisar.
    Seleccionar o colector de dados Perfilamento de Java e fazer clique em Editar Opções. Irá abrir-se a caixa de diálogo Conjunto de filtros. Sob Conteúdo do conjunto de filtros seleccionado, fazer clique em Adicionar para adicionar as classes ou pacotes para o qual pretende recolher os dados. Irá abrir-se a caixa de diálogo Adicionar Filtro.
  12. Para perfilar esta classe, inserir org.eclipse.hyades.test.collection.framework.* como a Classe.
  13. Especificar o Nome de método como * para incluir apenas os métodos relacionados com este exemplo.
  14. Faça clique em OK.O critério de filtro será adicionados à lista de conteúdos.
  15. Para excluir outras classes existentes da lista de conteúdos de filtros, fazer clique em Incluir sob a coluna Regra para a classe e alterar a opção para Excluir.
  16. Fazer clique em Seguinte para ir para a página Limites. Esta página controla a quantidade de dados que são recolhidos, quer se baseiem no tempo decorrido ou no número de invocações de método. Aceitar as predefinições. Fazer clique em Terminar para fechar e aplicar as alterações efectuadas.
  17. Fazer clique no separador Destino. ProfileProject e DefaultMonitor são os recursos de perfilamento predefinidos, e podem ser utilizados para armazenar dados nesta sessão de perfilamento.
  18. Fazer clique em Perfil.
  19. Os recursos de perfilamento necessários são criados, e o agente e o processo aparecem na vista Supervisor de Perfilamento.  
  20. Activar a visualização dos Supervisores seleccionando Disposição Distribuído como se mostra na seguinte captura de ecrã. Isto permite ver o supervisor que agrupa os dados, bem como a máquina na qual está a executar a área de trabalho.

    Supervisor de Perfilamento a mostrar a hierarquia dos recursos e o menu pendente para seleccionar os recursos para os ocultar

Analisar as informações de perfilamento

Ver o comportamento da execução ao longo de um período de tempo

Pode examinar a execução da aplicação utilizando a vista e a tabela Fluxo de Execução. A execução de todo o programa é representada nesta vista graficamente e num formato tabular. Na vista Fluxo de Execução, o tempo é mostrado no eixo vertical. A tabela Fluxo de Execução fica aberta por baixo da vista Fluxo de Execução e lista cada módulo e os métodos chamados por cada módulo.

  1. Na vista Supervisor de Perfilamento, seleccionar o supervisor, fazer clique com o botão direito do rato e seleccionar Abrir com > Fluxo de Execução para abrir a vista Fluxo de Execução. Irá abrir-se a vista Fluxo de Execução.
  2. Para examinar um método específico, fazer clique no método para o seleccionar. Todos os respectivos métodos chamados serão então realçados a amarelo. O comprimento vertical da área realçada é uma indicação do tempo base para o método. O valor exacto para o tempo base é apresentado na linha de estado.

    Vista Fluxo de Execução com dois métodos

    Mover o cursor sobre qualquer objecto na vista mostrará informações detalhadas na barra de estado na parte inferior da janela.

  3. Utilizar a ferramenta Ampliar  um botão com ícone estilizado para activar o cursor, em seguida, indicar e fazer clique para alargar a área.  

Nota: para actualizar as vistas enquanto a aplicação está a ser supervisionada, fazer clique no botão Actualizar Vistas um botão com ícone estilizado.

Identificar módulos activos

Na vista Fluxo de Execução, cada módulo contém períodos de actividade, que são identificador por uma profusão de chamadas de método. Na representação simbólica, o primeiro método chamado é uma faixa, e os métodos que chama subsequentemente aparecem como outras faixas à direita. A sequência de chamadas de método progride da esquerda para a direita; as partes activas do módulo são identificadas por esta progressão da esquerda para a direita.

Ao seleccionar toda a secção de delimita a sequência de chamadas de método, o tempo base que é gasto na execução dessa sequência é apresentado na linha de estado. Para ver o tempo base durante o qual o módulo esteve activo, calcular a diferença entre os tempos seguintes:

  1. Indicar a linha superior horizontal da área seleccionada a amarelo para visualizar o tempo base correspondente na linha de estado.
  2. À semelhança, indicar o limite inferior da área seleccionada a amarelo (que cobre o período de execução quando a sequência de método está em acção), e ver o tempo base nesse momento.

Sugestões

Identificar métodos frequentemente chamados

Para identificar métodos frequentemente chamados:

  1. Utilizar a ferramenta do Zoom um botão com ícone estilizado para ampliar a sequência de chamadas de método.
  2. Procurar as faixas da mesma cor dentro da área seleccionada. Estas ficas identificam os métodos da mesma ocorrência de classe que foram chamados várias vezes.
  3. Verificar o comprimentos das faixas de cores diferentes (cada uma delas representa um método). Quanto mais longa for a faixa, maior é o tempo de execução desse método.

Detectar a recolha de lixo

Normalmente, é impossível dizer se ocorreu uma recolha de lixo para um objecto através da inspecção das faixas num módulo de utilizador nesta vista.

Siga estes passos:

  1. O módulo da recolha de lixo fica oculto por predefinição. Pode activá-lo seleccionando Módulos > RL sob o menu Contexto para a vista.
  2. Seleccionar a coluna mais à esquerda nesta vista. Esta coluna está reservada para o módulo de recolha de lixo, e chama-se coluna de módulo de RL.
  3. Verificar se existe um rectângulo único e fino na coluna de módulo de RL. O rectângulo provavelmente deve estar localizado muito abaixo das chamadas de método no objecto. Este rectângulo aparece na coluna de módulo de RL sempre que ocorreu uma recolha de lixo para um objecto.

Identificar as fases de execução do programa

Identificar a fase de iniciação

  1. Utilizar a ferramenta para Ampliar um botão com ícone estilizado para alargar a sequência de chamadas de método na parte superior do módulo principal.
  2. Repare que os métodos estão marcados como -init-.
  3. Fazer clique para seleccionar o método. A barra de estado é actualizada para indicar que o método ajuda na iniciação (atribuição de valores a variáveis utilizadas na aplicação).

Analisar métodos utilizando a vista Invocação de Método

  1. No Supervisor de Perfilamento, seleccionar um supervisor ou um agente. Fazer clique com o botão direito do rato, em seguida, seleccionar Abrir com > Fluxo de Execução. Aparece a vista Fluxo de Execução.
  2. Seleccionar o método que pretende estudar, fazer clique com o botão direito do rato, em seguida, seleccionar Mostrar Invocação de Método.
  3. Utilizar a ferramenta Ampliar um botão com ícone estilizado para alargar uma secção da visualização.   As faixas são codificadas através de cores por classe e estão ligadas por linhas horizontais que representam chamadas de método.
  4. Seleccionar um método fazendo clique no respectivo nome.  
  5. Fazer clique no botão Actualizar Vistas um botão com ícone estilizado para assegurar que está a visualizar as informações actuais.
  6. Repare na linha:
    linha de estado que apresenta o nome de método e os número 1/1

    Esta linha apresenta o nome do método, seguido de n/m, onde n é a invocação que está actualmente a ser visualizada fora do total das respectivas invocações m.
  7. Fazer clique em Anterior um botão com ícone estilizado e Seguinte um botão com ícone estilizado para procurar todas as investigações do método seleccionado (ou cada mensagem para o objecto seleccionado). A fracção na barra de ferramentas é alterada para indicar qual a invocação que está a visualizar.

Localizar o chamador de um método

Para localizar quem está a chamar um método, seguindo estes passos, prossiga na vista Invocação de Método:

  1. Para ver o chamador do método, fazer clique no botão Mostrar Chamador um botão com ícone estilizado. O método é apresentado juntamente com o respectivo chamador à esquerda.
  2. Para ver mais detalhes sobre o chamador do método para cada nova invocação que visualizar, posicione o cursor por cima da faixa que representa o chamados na vista. A linha de estado apresenta as informações sobre o chamador.
  3. Para ver o método que um método seleccionado chama, fazer clique no botão Mostrar Método Chamado um botão com ícone estilizado