Modelagem e avaliação de desempenho

Agradecimentos ao Felipe Megale pelas imagens

Sumário

Introdução à modelagem e avaliação de desempenho de sistemas computacionais

Sistemas computacionais

A prática tem mostrado que frente a um baixo desempenho de sistemas computacionais (baixos níveis de QoS - Quality of Service) os maiores prejuízos financeiros ocorrem pela falta de uma mentalidade voltada para extrair o máximo benefício do investimento. Na prãtica, os responsáveis pelos setores de T.I. se apressam para propostas em mudanças de hardware sem mesmo ter esgotado todos os esforços para melhorar os níveis de QoS.

Curva de desempenho

A Engenharia de Avaliação de Sistemas computacionais tem por objetivo, frente ao aumento contínuo da carga de trabalho, alimentar a vida útil do sistema, melhorando os níveis de serviço (R - tempo de resposta, U - utilização do sistema) dentro de limites normalmente estipulados pela gerência.

A engenharia de avaliação de desempenho de sistemas computacionais possui uma metodologia para o "planejamento de capacidade" a qual envolve uma série de etapas e ações, corretivas e preventivas que podem ser aplicadas ao longo do ciclo de vida do sistema.

Resumidamente essas ações podem ser sintetizadas nas seguintes:

  • Monitor: Com quais dispositivos e durante quanto tempo?
  • Coletor: Quais porâmetros observar objetivando a avaliação do sistema?
  • Sumarizar e identificar horãrios de pico
  • Coletar novos dados: Quais parâmetros coletar objetivando a otimização do sistema?
  • Selecionar os processos críticos: Por onde começar a otimimza?
  • Otimizar: Propor soluções para aumentar a vida útil e afastar a super-utilização
  • Meta-Otimização: Tornar mais eficiente, provavelmente eficaz, o processo de otimização
  • Prever a carga de trabalho futuro: Construção de modelos matemáticos
  • Modelar o sistema: Construir modelos baseados na teoria das filas
  • Simular para prever o início da fase de super-utilização
  • Configurar: Propor configurações por meio de simulação
  • Negociar: Fortes justificativas

Ciclo de vida de um sistema computacional

Diferentemente ao ciclo de vida de um software, o ciclo de vida do sistema computacional não apresenta a "fase de morte". Qualquer mudança parcial ou completa da configuração de hardware é considerada evolução natural do sistema.

Ciclo de vida de um sistema computacional

1. Fase conceitual

Nesta fase, existe duas possíveis situações:

  1. Proposta da configuração inicial: Para esta situação não existem técnicas altamente eficientes para configurar o hardware. As técnicas mais utilizadas são as técnicas Eu acho, Benchmark, Kernel.
  2. Proposta de atualização deconfiguração existente: Para esta situação existem técnicas mais elaboradas como a teoria das filas, simulação discreta, redes de petri, etc. Dentre estas a teoria das filas é mais aplicada para fins comerciais. Isso pelo tempo necessário para implementá-la.

2. Fase de aquisição

Aparentemente esta fase parece transmitir uma impressão de simplicidade. Porém é exigido do responsável habilidades e estratégias de negociação e convencimento frente à diretoria e fornecedores. O resultado desta fase possui grandes implicações financeiras para a empresa. Isto torna-se mais sensível em ambientes onde predomina a compra de recursos e de sistemas leasing (aluguel-venda). Neste último, existe maiores responsabilidade do responsável por acompanhar o desempenho do sistema.

Por exemplo, no sistema leasing:

Custo do aluguel e custo de CPU

Custo do aluguel: Por média ou por pico?

3. Fase operacional

Espera-se que esta fase seja a mais longa de todas (2, 3 a 4 anos). Durante esta fase, o objetivo é extrair o máximo de proveito do investimento. Em outras palavras aumenta a vida últil do sistema, sem troca de configuração de hardware (aumento de memória é permitido).

Ajuste do limite

Durante a fase de operação são aplicadas as ações até a Meta-otimização do sistema. Ao final desta fase normalmente é realizada a previsão da carga de trabalho.

4. Fase de super-utilização

Esta fase se caracteriza pelo fato da utilização do sistema estar em 100% de forma permanente. Esta fase deve ser previsa com 1 ano de antecedência. Na prática deve ser previsto com no mínimo 3 meses. Muitas vezes nos encontramos já na super-utilização.

Aplicações da Metodologia para o planejamento de capacidade de sistemas computacionais

1. Diagnóstico de servidores de aplicação

Antes Depois
🅧 Memória (%) 100 98
Paginação (%) 35 5 Horário de pico
🅧 CPU (%) 5 5

2. Previsão de desempenho de sistemas virtuais de aprendizado

Foram identificados: 80 requisições distintas Modelos do sistema: 80 equações

Para simplificar o modelo:

  • Eliminação de processos obsoletos e irrelevantes
  • Redução de processos pela similaridade de características

Exempo:

Saldo Conta Corrente ≡ Saldo Poupança
Modelo resultante: 5 equações

3. Em ambientes leasing

Atividade 1 - Ambientes leasing

4. Sistemas de balanceamento de carga

Atividade 1 - Sistemas de balanceamento de carga

Critérios
  1. Envia para o servidor com menor carga;
  2. Tempo de resposta no instante t;
  3. Utilização dos servidores;
  4. Disponibilidade.

Exemplo dos critérios

5. Modelando internamente cada servidor

Lei do fluxo forçado

Lei do fluxo forçado

6. Virtualização

Virtualização

7. Nuvens

Nuvens

Metodologia para o planejamento de capacidade

A metodologia para o planejamento de capacidade possui uma série de etapas com ações tanto corretivas como preventivas. A aplicação desta metodologia procura melhorar o desempenho do sistema, aumento da vida útil do sistema dentro dos padrões de qualidade previamente estipulados.

Etapa 1: Diagnóstico inicial do desempenho do sistema

Durante esta etapa é necessário responder às seguintes questões:

  1. Quais variáveis monitorar?
  2. Quando monitorar?
  3. Com quais tipos de monitores devemos monitorar?
  4. Durante quanto tempo devemos monitorar?
  5. De quanto em quanto tempo devemos coletar?
  6. Como sintetizar?
  7. Como visualizar?

1. Variáveis a serem observadas

Variável Descrição Unidade
λ Requisições que chegam requisições por segundo
R Tempo médio de resposta segundos por requisição
Ui Utilização da CPU (processamento) porcentagem
Du Disponibilidade do sistema
M Consumo de memória porcentagem
Pag Paginação porcentagem

2. Horários para monitoramento

É altamente aconselhável realizar o monitoramento durante o horário de pico. Caso esse horário não seja previamente definido podem ser executadas as seguintes ações:

  1. Coleta de dados durante 1 semana
  2. Excepcionalmente durante 1 dia
  3. Em teoria durante 1 ano

É possível também considerar o próprio experiência.

Por exemplo:

  • Setor financeiro:
    P1: 11:00 - 13:00
    P2: 16:00 - 20:00
    
  • Setor eComerce:
    • Lojas Americanas: Exemplo da Lojas Americanas

3. Tipos de monitores

Os monitores mais utilizados comercialmente correspondem aos monitores de software, os quais ficam residentes em memória observando todas as interrupções (instruções) do sistema.

Esses monitores consomem memória, CPU, disco e possuem impacto no desempenho do sistema. Existem 2 modalidades:

  1. RMF: Monitores orientados a eventos. Altamente precisos, porém com grande impacto no desempenho atual do sistema. devem ser evitados quando o sistema é crítico. Estes podem chegar a impactar até 15%.

  2. SMF: Orientado a amostragem. O sistema é observado de tempos em tempos. São mais imprecisos e redundantes. Comercialmente mais utilizados.

Exemplo do SMF

4. Tempo de observação e amostragem

Para monitores na modalidade SMF 2 parâmetros devem ser ajustados:

T₀: Tempo de observação
Tₛ: Tempo de amostragem

O ajuste desses parâmetros dependem dos objetivos.

Para o diagnóstico não existe fortes restrições para ajustar o T₀ e Tₛ.

Exemplo:

T₀ = 30 min, 1h
Tₛ = 2, 3 até 5h

// Observação: Procurar respeitar a Hipótese do Equilíbrio de Fluxo
  1. Objetivo é o diagnóstico

    T₀ = não há restrições
    Tₛ = 2 a 5 segundos (recomenda-se 3 segundos)
    
    // Observação: Procurar respeitar a Hipótese do Equilíbrio de Fluxo
    
  2. Objetivo é a modelagem

    T₀ = não é possível definir a priori
    Tₛ = não é possível definir a priori
    
    // Condições: Respeitar a Hipótese do Equilíbrio de Fluxo e das transições unitárias
    

5. Visualização de dados para avaliação de desempenho

É recomendado a construção de gráficos de valores médios de consumo ao longo das semanas e/ou meses. Referências menores à semana, por dia, não é interessante, pois mostra excessiva variabilidade. O objetivo é observar tendências.

Visualização de dados para avlaiação de desempenho

Usuário batch vs. online

Observações:

  1. Batch aumenta ➡️ Online diminui
  2. Batch próximo de 100%
  3. Online abaixo do batch
  4. Não existem variações abruptas
  5. Pouca permanência em condição de alto consumo
  6. Sistema estável, sem variações significativas

Etapa 2: Identificação do horário de pico

De forma a ser eficientes na melhoria do desempenho do sistema os esforços de otimização devem estar concentrados durante o(s) horário(s) de pico. Daí é imperativo identificar esses horários.

Para isto, deve ser feita uma coleta do consumo do processador ao longo de 1 ano, 24 horas, por dia. A ideia é identificar:

  • Mês mais crítico
  • Semana mais crítica
  • Dia da semana mais crítico
  • Período do dia mais crítico

Procedimentos

  1. Definir

    T₀ = 365 dias x 24 horas
    Tₛ = 3 segundos
    
  2. Definir períodos do dia

    Exemplo:

    P₁ 08:00 - 10:00
    P₂ 10:01 - 12:00
    P₃ 12:10 - 18:00
    P₄ 18:01 - 07:59
    

Identificação do horário de pico (1) Identificação do horário de pico (2)