Módulos PMI

É possível monitorar o desempenho dos seus aplicativos com os módulos Performance Monitoring Infrastructure (PMI).

objectGridModule

O objectGridModule contém uma estatística de tempo: tempo de resposta de transação. Uma transação é definida como uma duração entre a chamada de método Session.begin e a chamada de método Session.commit. Esta duração é rastreada como o tempo de resposta da transação. O elemento-raiz do objectGridModule, "root", serve como ponto de entrada para as estatísticas do WebSphere eXtreme Scale. Este elemento-raiz possui ObjectGrids como seus elementos-filhos, que possuem tipos de transações como seus elementos-filhos. A estatística de tempo de resposta está associada a cada tipo de transação.
Figura 1. Estrutura do Módulo ObjectGridModule
Estrutura de Módulo ObjectGridModule
O seguinte diagrama mostra um exemplo da estruturaObjectGridModule. Neste exemplo, duas instâncias ObjectGrid existem no sistema: ObjectGrid A e ObjectGrid B. A instância ObjectGrid A possui dois tipos de transações: A e padrão. A instância ObjectGrid B possui apenas o tipo de transação padrão.
Figura 2. Exemplo da Estrutura do Módulo ObjectGridModule
Exemplo da Estrutura de Módulo ObjectGridModule
Os tipos de transações são definidos por desenvolvedores de aplicativos, porque eles sabem quais tipos de transações seus aplicativos utilizam. O tipo de transação é configurando utilizando o método Session.setTransactionType(String) a seguir:
/**
* Configura o tipo de transação para futuras transações.
*
* Quando este método é chamado, todas as futuras transações terão o mesmo tipo
* até que outro tipo de transação seja configurado. Se nenhum tipo de transação
* estiver configurado, será utilizado o tipo de transação TRANSACTION_TYPE_DEFAULT
* padrão.
*
* Os tipos de transações são utilizados principalmente para finalidade 
de rastreamento de dados estatísticos.
* Os usuários podem predefinir tipos de transações que são executadas em um
* application. A idéia é categorizar transações com as mesmas características
* para uma categoria (tipo), portanto, uma estatística de tempo de resposta 
de transação pode ser
* utilizada para rastrear cada tipo de transação.
*
* Este rastreamento é útil quando seu aplicativo tem diferentes tipos de
* transações.
* Entre eles, alguns tipos de transações, como transações de atualização, 
têm um processamento
* mais longo que outras transações, como transações de leitura. Utilizando o tipo de
* transação, diferentes transações são rastreadas por diferentes estatísticas, portanto,
* as estatísticas podem ser mais úteis.
*
* @param tranType o tipo de transação para futuras transações.
*/
void setTransactionType(String tranType);
O exemplo a seguir configura o tipo de transação como updatePrice:
// Set the transaction 
type to updatePrice
// The time between session.begin() and session.commit() will be
// tracked in the time statistic for "updatePrice".
session.setTransactionType("updatePrice");
session.begin();
map.update(stockId, new Integer(100));
session.commit();
A primeira linha indica que o tipo de transação subsequente é updatePrice. Uma estatística updatePrice existe na instância ObjectGrid que corresponde à sessão no exemplo. Utilizando interfaces Java Management Extensions (JMX), você pode obter o tempo de resposta da transação para transações updatePrice. Também é possível obter a estatística agregada para todos os tipos de transações na instância ObjectGrid especificada.

mapModule

O mapModule contém três estatísticas relacionadas aos mapas eXtreme Scale: O elemento-raiz do mapModule, "root", serve como ponto de entrada para as estatísticas do Mapa ObjectGrid. Este elemento-raiz possui ObjectGrids como seus elementos-filhos, que possuem mapas como seus elementos-filhos. Cada instância do mapa possui três estatísticas listadas. A estrutura mapModule é mostrada no diagrama a seguir:
Figura 3. Estrutura do mapModule
Estrutura do Módulo mapModule
O diagrama a seguir mostra um exemplo da estrutura mapModule:
Figura 4. Exemplo de Estrutura do Módulo mapModule
Exemplo da Estrutura de Módulo mapModule

hashIndexModule

O hashIndexModule contém as seguintes estatísticas que são relacionadas aos índices de nível de Mapa: O elemento-raiz do hashIndexModule, "root", serve como ponto de entrada para as estatísticas do HashIndex. Este elemento-raiz possui ObjectGrids como seus elementos-filhos, os ObjectGrids possuem mapas como seus elementos-filhos, que, finalmente, possuem HashIndexes como seus elementos-filhos e nós-folhas da árvore. Cada instância do HashIndex possui três estatísticas listadas. A estrutura hashIndexModule é mostrada no diagrama a seguir:
Figura 5. Estrutura do Módulo hashIndexModule
Estrutura hashIndexModule
O diagrama a seguir mostra um exemplo da estrutura hashIndexModule:
Figura 6. Exemplo da Estrutura do Módulo hashIndexModule
Exemplo da Estrutura hashIndexModule

agentManagerModule

O agentManagerModule contém as estatísticas que são relacionadas aos agentes de nível de mapa: O elemento-raiz do agentManagerModule, "root", serve como ponto de entrada para as estatísticas do AgentManager. O elemento-raiz possui ObjectGrids como seus elementos-filhos, os ObjectGrids possuem seus elementos-filhos, que, finalmente, possuem instâncias do AgentManager como seus elementos-filhos e nós-folhas da árvore. Cada instância do AgentManager possui estatísticas.
Figura 7. Estrutura agentManagerModule
Raiz, objectgrid_name, map_name, agent_class_name
Figura 8. Exemplo da Estrutura agentManagerModule

queryModule

O queryModule contém estatísticas relacionadas às consultas do eXtreme Scale: O elemento-raiz do queryModule, "root", serve como ponto de entrada para as estatísticas do Query. Este elemento-raiz possui ObjectGrids como seus elementos-filhos, que possuem objetos Query como seus elementos-filhos e nós-folhas da árvore. Cada instância do Query possui as três estatísticas listadas.
Figura 9. Estrutura queryModule
Visão geral do queryModule
Figura 10. Exemplo da Estrutura queryModule QueryStats.jpg
Exemplo da Estrutura queryModule