Normalmente, ao descrever um determinado item de software, a descrição pode ser dividida em duas partes, O QUE e COMO. A parte O QUE significa a descrição do que este item de código faz. Já a parte COMO significa como ele faz isso. Há uma tendência para se concentrar na parte O QUE e ignorar a parte COMO. O motivo para que seja simples e, em muitos casos, justificável. Ao fazer isso, você reduz o acoplamento entre os componentes e não precisa se preocupar com informações que, em muitos casos, são irrelevantes. Em muitos casos, o custo de ignorar a parte COMO é um desempenho ruim.
Este estudo de caso aborda a maneira como o mecanismo calcula as métricas agrupadas (responder a parte COMO) e descreve o custo de desempenho que ele implica em algumas implementações. Também aborda várias maneiras de reduzir o custo alterando a implementação.
O que são métricas agrupadas
Métricas agrupadas são métricas que se incluem na definição de um determinado grupo de recursos. Esse grupo é chamado de agrupamento da métrica e cada um dos recursos deste grupo é chamado de item de agrupamento. Ao calcular uma métrica agrupada, um cálculo à parte é executado para cada item de agrupamento. Os cálculos para estes itens são semelhantes entre si, exceto:
Como as métricas agrupadas são calculadas
Um fato importante de se entender sobre o cálculo de uma métrica agrupada é que todos os itens do agrupamento são calculados em paralelo. O termo em paralelo não significa que eles são calculados por segmentos diferentes, mas que durante o processamento de vários eventos que devem ser tratados por vários itens de agrupamento, os eventos são processados em sequência, e para cada evento, os itens de agrupamento relevantes são chamados e processam esse evento. Por exemplo, existem muitos eventos que devem ser tratados por muitos itens de agrupamento. Há duas maneiras de fazer isso:
Exemplo: opção 1
Para cada item de agrupamento C
Para cada evento E que deve ser tratado por C
Permitir que C gerencie E
Exemplo: opção 2
Para cada evento E
Para cada item de agrupamento C que deve gerenciar E
Permitir que C gerencie E
O mecanismo manipula as métricas agrupadas usando a opção 2.
Outro ponto importante de se entender é que a execução do VBScript em PslWriter é realizada por um componente chamado Script Control. Existe apenas uma única instância deste componente por cada métrica e a instância é reutilizada para o cálculo de vários itens de agrupamento. Conforme mencionado anteriormente, uma vez que os itens de agrupamento são calculados em paralelo e o componente Script Control pode conter somente os dados de um único item de agrupamento em cada momento, é necessário alterar os dados do Script Control com frequência.
Para explicar isso, um pseudo código que executa o cálculo, é apresentado a seguir com mais detalhes.
1- Para cada métrica M 2- Permitir que X seja o evento mais recente , não controlado ainda por M 3- Permitir que T seja a data/hora do estado mais recente antes de X 4- Permitir que L seja a lista de todos os eventos registrados por M (todos os itens de agrupamento) a partir da data e hora T até a hora atual. 5- Para cada evento E em L 6- Para cada item de agrupamento C que deve manipular E 7- Permitir que C seja o item de agrupamento atualmente carregado no controle de script 8- Pegue os valores das variáveis globais do scrip control e armazene-os à parte para C 9- Pegue os valores das variáveis globais armazenados à parte para C e carregue-os no Script control. 10- Manipule o evento E
Todo o processo de localizar qualquer tempo de um evento que ainda não foi considerado, e executar o cálculo a partir desse ponto em diante é chamado de Recálculo. O processo de substituição de valores das variáveis globais (etapas 8 e 9 no código acima) é chamado de alternância de contexto.
Os dois principais problemas que podem ser facilmente identificados no código acima são:
Recálculo de métricas agrupadas
Como já explicado, todos os itens de agrupamento em uma métrica agrupada são recalculados como um todo. Isso significa que, se houver uma métrica que está agrupada com mais de 1000 itens e um deles precisa de um novo cálculo do ano passado devido a alguns novos eventos que chegaram, todos os 1000 itens agrupados serão recalculados com base no ano passado.
As soluções a seguir podem reduzir este problema, mas nem sempre são aplicáveis, e cada uma possui suas desvantagens. O fator importante é entender o problema e o custo estimado e comparar este custo com o custo das soluções propostas.
Alternância de contexto
Como já explicado, a troca de contexto é feita no loop mais interno. Em outras palavras, para cada evento que deve ser controlado por cada item de agrupamento. Quando uma métrica recebe muitos eventos e quando cada evento é controlado por vários itens de agrupamento, esse valor poderá ser muito alto. Além disso, a operação de troca de contexto é relativamente cara (em relação à manipulação do evento na lógica de negócios), e você terá um problema.
O custo da operação de troca de contexto é proporcional ao tamanho dos dados que foram trocados. Os dados que foram trocados durante a troca de contexto são os valores de todas as variáveis globais na lógica de negócios (também denominado "o estado"). Portanto, quanto mais variáveis globais você tiver e maior o tamanho das variáveis globais, mais cara será a operação de troca de contexto.
Em especial, não é recomendável usar os mapas de lógica de negócios em métricas agrupadas, especialmente se o tamanho dos mapas for grande.
A ideia é reduzir o tamanho do estado (variáveis globais). Essa abordagem pode ser feita recriando a lógica de negócios, de forma que ela não contenha os mapas. Obviamente, isso nem sempre é possível, mas é recomendável fazê-lo quando for.
Quando o agrupamento é pequeno, é possível criar uma métrica separada para item de agrupamento.
Evite métricas agrupadas com muitos itens de agrupamento que registram os mesmos eventos. A ideia é o seguinte:
Se cada evento for controlado por um único item de agrupamento, o valor da troca de contexto será proporcional ao número de eventos
Se os eventos forem controlados por todos os itens de agrupamento, a quantidade de troca de contexto será proporcional ao número dos eventos vezes o número de itens de agrupamento
Crie uma métrica não agrupada que calcula os resultados de todos os itens agrupados original (que são recursos simples e não itens de agrupamento). Faça com que essa métrica envie os resultados de cada item de agrupamento como um evento. Crie outra métrica que está agrupada e que recebe os eventos da primeiro métrica e reporte o valor recebido nesses eventos como o resultado. A ideia aqui é que a grande quantidade de eventos de dados brutos seja controlada por uma métrica não agrupada e a métrica agrupada controle um único evento por período, por item de agrupamento.
| Copyright © 2012 CA. Todos os direitos reservados. | Enviar email à CA Technologies sobre este tópico |