• Nenhum resultado encontrado

JMSCapacity: Biblioteca e Ferramentas

JDPTP-NPNT-MPG

Componente de desempenho responsável pela implementação de um canal de comunicação (DST1) com estilo de mensagem PTP e confiabilidade NPNT, associado a duas linhas de comunicação simultâneas, ou seja, dois grupos produtores (PG1 e PG2). A Figura 4-21 apresenta o modelo PN referente a este componente.

É importante analisar que todos os lugares que representam recursos compartilhadados no provider (rotulados com o prefixo PRV) são representados uma única vez no modelo. Além disso, eles são alocados, pelas transições imediatas, em ambas as linhas de comunicação, representando o compartilhamento do recurso.

O lugar DST1_Space que representa o recurso de espaço livre no destination também aparece uma única vez no modelo, indicando que ambos os grupos produtores compartilham o mesmo espaço para armazenar mensagens.

O lugar DST1_Delivered e a transição DST1_TD representam a finalização da entrega da mensagem ao consumidor e a liberação do espaço no destination, respectivamente. Portanto, também são modelados uma única vez.

Figura 4-22. Componente de desempenho: JDPTP-NPNT-MPG.

Os demais elementos do modelo são repetidos para cada PG. A justificativa de tal fato é que cada linha de comunicação possui características que podem demandar recursos do provider distintos. Logo, as transições temporizadas que representam a demanda por recursos precisam ser duplicadas para que se possam definir valores diferentes para a carga de trabalho imposta por cada PG. 4.2.5 Orientações Adicionais sobre a Construção do Modelo de Desempenho A construção do modelo de desempenho é realizada através da composição dos vários componentes de desempenho com objetivo de implementar o modelo de carga. O resultado quase sempre induz a um modelo de dimensões razoavelmente grande.

Quanto maior o número de lugares, transições e tokens circulantes na PN, maior será o espaço de estados gerado a partir desse modelo. O resultado prático disso é que, quase sempre, acontecerá o fenômeno conhecido como explosão de espaço de estado, indicando um número de estados não tratável computacionalmente. Isso leva a resolução dos modelos através de técnicas de simulação.

96 Ferramentas

Diante desse cenário, é importante observar que sempre que possível, as linhas de comunicação devem ser reduzidas. Outra opção é realizar um planejamento de capacidade particionado por linha de comunicação e não do processo de integração como um todo.

É importante ressaltar que quando uma linha de comunicação dispara um evento para outra linha, a primeira precisa ser implementada, avaliada, tendo o seu resultado levado como parâmetro de entrada para compor a próxima linha, e assim sucessivamente. Ao final, o gerente de capacidade tem condições de reunir os resultados de todas as linhas (em termos de demandas por recursos necessitados) estimando o planejamento total.

Outro ponto a considerar é, sempre que possível, o Avaliador deve utilizar componentes que tornem o modelo final limitado. Caso não seja possível, é recomendável que ele intervenha no modelo resultante para torná-lo o mais limitado possível, reduzindo o custo computacional para sua resolução.

4.3

Ferramentas

Esta seção tem como objetivo orientar quais os tipos de ferramentas são necessárias para apoiar o toolkit, além de apresentar as escolhas realizadas durante a execução deste trabalho.

As ferramentas foram divididas em categorias que direcionam sua utilização nas diversas atividades e passos do processo.

4.3.1 Monitoração da Utilização de Recursos

O objetivo desta categoria de ferramentas é monitorar os recursos demandados no MOM quando do encaminhamento das mensagens. Esses recursos foram identificados no processo durante a atividade denominada Entender o Ambiente. Esta categoria fornece suporte às atividades Caracterizar a Carga de Trabalho e Parametrizar, Validar e Calibrar o Modelo. Ela é normalmente formada por ferramentas disponibilizadas pelos fabricantes da plataforma operacional e do MOM, uma vez que se destina a monitorar recursos como CPU, disco, rede e fila.

Na caracterização da carga de trabalho, esta categoria de ferramentas auxilia na identificação de componentes básicos de carga, classificando-os quanto à utilização de recursos computacionais da plataforma.Na parametrização, essas ferramentas são responsáveis por monitorar o provider avaliando a utilização dos recursos de CPU, disco e rede (recursos modelados nos componentes de desempenho em PN), com o intuito de obter os parâmetros de entrada para o modelo de desempenho.

Na validação, ela auxilia na comprovação que os recursos do sistema real foram comprometidos com uma demanda equivalente a apresentada pelos modelos de desempenho, validando o comportamento do modelo em relação ao sistema real. As duas ferramentas utilizadas para monitorar a utilização dos recursos foram o

4.3.2 Geração de Carga Artifical

O objetivo desta categoria de ferramentas é gerar carga de trabalho artificial para o MOM, simulando as cargas especificadas durante a atividade

Caracterizar a Carga de Trabalho. Uma característica útil neste tipo de

ferramenta é a capacidade de avaliar métricas de resposta e produtividade ao longo dos testes.

Esta categoria fornece suporte a atividade Parametrizar, Validar e Calibrar o

Modelo. Ela atua em conjunto com as ferramentas de monitoração de recursos

proporcionando ao Avaliador determinar a carga exata de trabalho a ser submetida ao MOM em cada momento.

Na parametrização ela auxilia na reprodução de cargas especialmente escolhidas para determinar a demanda de recurso de cada tipo de componente básico de carga (mensagem).

Na validação, o Avaliador escolhe cenários para determinar se o modelo de desempenho possui o mesmo comportamento do sistema real. Nesse momento, esta categoria de ferramenta auxilia a reproduzir esses cenários de carga, devendo possuir mecanismos bastante flexíveis para este fim.

Diversas ferramentas de mercado existem com essa finalidade, algumas de código aberto, outras apenas com versão comercial. Das ferramentas de código aberto estudadas, a de maior destaque é a Apache JMeter [Apache 2006]. Porém, ela se mostrou pouco flexível, e motivou a criação de uma nova ferramenta denominada JMSMeter durante o desenvolvimento deste trabalho, tornando-se parte integrante deste toolkit.

JMSMeter

O JMSMeter é uma ferramenta de geração de carga de trabalho que consegue reproduzir os componentes de desempenho desenvolvidos: JProdGroup-Poisson, JDPTP-NPNT, JDPS-PNT, JSCons-NoWait-Poisson, JASCons etc. Ela foi desenvolvida em Java e portanto é suportada em várias plataformas.

Nesta ferramenta podem-se incluir novas métricas a serem capturadas, escolhendo o ponto exato de medição de cada uma delas, permitindo o controle sobre o que está sendo medido.

A geração de números aleatórios seguindo uma distribuição exponencial, elemento que faltava no JMeter, é uma importante contribuição para o sucesso das medições e validações, fornecendo inclusive suporte a ajuste contínuo para garantir a geração de carga numa distribuição de Poisson, independente do tempo de resposta do provider. Esse recurso garante que possa ser reproduzido o comportamento do JProdGroup-Poisson (assíncrono), por exemplo. Para garantir ao Avaliador que objetivo de manter uma taxa constante de geração está sendo cumprida, são disponibilizadas métricas de suporte (SendDelay e

ReceiveDelay).

Outro ponto relevante, e que se constitui numa contribuição para a agilidade do procedimento de medição durante a validação dos modelos, é a apuração estatística dos resultados das métricas. A ferramenta disponibiliza um resumo estatístico de cada métrica e o cálculo de cada amostra (sample) que originou o resultado da métrica.

98 Considerações Finais 4.3.3 Modelagem

O objetivo desta categoria de ferramentas é facilitar a construção dos modelos de carga de trabalho e de desempenho, e sua posterior avaliação de desempenho. Ela fornece suporte a todas as atividades do Avaliador:

Caracterizar Carga de Trabalho; Desenvolver Modelo de Desempenho; Parametrizar, Validar e Calibrar o Modelo; e Avaliar Cenários.

Na caracterização da carga, auxilia na construção do modelo de carga. No desenvolvimento do modelo de desempenho, implementa o formalismo das redes de Petri (PN). Na validação, permite avaliar os modelos PN para obter as métricas a serem comparadas com a medição do sistema real. Na calibragem do modelo, permite desenvolver aproximações de distribuições empíricas utilizando Phase Type Distributions (ver Apêndice B). Por fim, na avaliação dos cenários, permite realizar as simulações necessárias para a obtenção dos resultados que são utilizados no planejamento de capacidade.

As ferramentas utilizadas para modelagem foram o Microsoft Office Visio e o TimeNet. Este toolkit disponibiliza um stencil (.vss) com todos os componentes para construção do modelo de carga apresentados na Seção 4.1.

4.4

Considerações Finais

A biblioteca de componentes foi apresentada neste capítulo, incluindo um conjunto de orientações para o desenvolvimento do planejamento e gerenciamento da capacidade de plataformas de MOM que implementam a especificação JMS.

Inicialmente, foram apresentados os componentes de carga que auxiliam na construção do modelo de carga de trabalho, e, posteriormente, as implementações equivalentes em redes de Petri, formando o conjunto denominado de componentes de desempenho.

Durante esse capítulo foi possível observar a importância da criação de um modelo intermediário (modelo de carga) através de uma notação específica, onde elementos fundamentais da integração são extraídos de um diagrama de sequência, e possibilitam que a atividade de Desenvolver o Modelo de

Desempenho possa ser realizada de forma sistematizada, possibilitando

extensões da biblioteca, aumentando a flexibilidade do toolkit e tornando o processo mais fácil de ser utilizado.

99

5

JMSCapacity: