Simulação de Sistemas Computacionais Por: Carlos Cordeiro {cmc@cin.ufpe.br}

Post on 07-Apr-2016

214 views 1 download

Transcript of Simulação de Sistemas Computacionais Por: Carlos Cordeiro {cmc@cin.ufpe.br}

Simulação de Sistemas Computacionais

Por:Carlos Cordeiro

{cmc@cin.ufpe.br}

RoteiroIntrodução

Desempenho Medidas de desempenho Técnicas de avaliação

SimulaçãoFerramentas/Linguagens de simulaçãoAvaliação de resultados de simulaçãoConclusões

IntroduçãoDesempenho é um critério chaveTodo profissional em Ciência da

Computação deve: Enumerar os requisitos de performance

de seus sistemas Comparar diferentes alternativas até

encontrar a que melhor se adequa à seus requisitos

O que é “Desempenho”?Webster’s:

The manner in which a mechanism performs.

Aurélio: Mil. Conjunto de características ou de

possibilidades de atuação de uma aeronave, tais como velocidade de cruzeiro, velocidade de pouso, capacidade de carga, autonomia de vôo, etc.

Avaliação de DesempenhoObjetivo:

Enfatizar técnicas que resolvam os problemas do dia-a-dia

Exemplos problemas: Especificar requisitos de desempenho Comparar dois ou mais sistemas Determinar o valor ótimo de um parâmetro Encontrar o gargalo de um sistema Caracterizar a carga de um sistema

Medidas de desempenho de um automóvel

Velocidade máxima Aceleração (tempo para ir de 0 a 100

km/h)Espaço de frenagem a uma dada

velocidade

Medidas de desempenhoVelocidade

tempo de resposta, vazão e utilizaçãoConfiabilidade

Probabilidade de erro Intervalo entre erros

Disponibilidade Duração da falha Intervalo entre falhas

Medidas de desempenho de sistemas computacionais

Vazão/Taxa (Throughput) Taxa na qual os pedidos são atendidos

(servidos) pelo sistema.Utilização:

Fração do tempo em que o recurso permanece ocupado atendendo os pedidos dos usuários

Tempo de resposta: tempo decorrido entre o pedido e o

início/conclusão da realização do serviço.

Técnicas de AvaliaçãoCritério Modelagem

analíticaSimulação Medição

Estágio Qualquer Qualquer Protótipo

Temponecessário

Pouco Médio Variado

Ferramentas Analistas Linguagens deProgramação

Instrumentação

Precisão Pouca Moderada Variada

Avaliação deCompromissos

Fácil Moderada Difícil

Custo Baixo Médio Alto

Saleability Baixa Média Alta

ModelosNos deparamos todos os dias com

vários os tipos de modelos Ex: Brinquedos são modelos de objetos

do mundo realUm modelo é um tipo de abstração

ModelosO que são Modelos?

Um modelo é a descrição de algum sistema com o objetivo de prever o que acontece quando determinadas ações são tomadas

É uma aproximação de um sistema existente ou hipotético

Modelos como AbstraçõesUm modelo é uma simplificação do objeto

do mundo real (sistema, processo, ...)Perda de propriedades do sistema realContudo, simplificações:

custam menos são mais rápidas

Simulação X Modelos Simular é estudar um modelo no tempo

SimulaçãoTécnica muito útil para ADSEspecialmente:

se sistema não disponível para prever o desempenho de diversas

alternativas facilidade de efetuar comparações para

uma maior variedade de cargas e de ambientes

Simulação: perguntas e respostas...

Quais os erros mais comuns?Como está caracterizado uma simulação de

um sistema computacional?Qual linguagem devo usar para simular?Como posso avaliar os resultados da minha

simulação? Por quanto tempo devo executar minha

simulação?Quais são as dicas mais importantes?

Erros ComunsNível de abstração inadequado

Modelo inadequadoLinguagem inadequadaModelos não verificados ou inválidosTratamento inadequado das condições

iniciaisSimulações muito curtasGeradores de número aleatórios ruins

(semente inadequada Correlação)

Modelo de Sistemas Computacionais

Tempo contínuo (estado definido em todos os instantes)

Estados discretos ( eventos discretos)Probabilístico (resultados imprevisíveis)Dinâmico (tempo é uma variável)Não-Linear (Saída = f(Entrada))Aberto ou Fechado (entrada externa)Estável ou Instável (estado permanente)

Selecionando uma Linguagem para Simulação

Linguagem de simulaçãoLinguagem de propósito geralExtensão de uma linguagem de

propósito geralPacote de simulação

Linguagens de SimulaçãoEconomizam tempo de desenvolvimentoRecursos:

avançar no tempo escalonar (programar) eventos geração de valores aleatórios coleta de dados estatísticos (probes)

Foco no problemaCódigo modular e legível

Linguagem de Propósito GeralFamiliaridade do analistaInício imediatoOverhead no desenvolvimento de

rotinas típicas de simulação Tratamento de eventos Geração de valores aleatórios

Eficiência e Flexibilidade

Extensão de uma Linguagem de Propósito Geral

Bibliotecas que contém funções de simulação

Sistema hospedeiroCompromisso entre

Eficiência Flexibilidade Portabilidade

Pacotes de SimulaçãoBiblioteca com estruturas de dados,

rotinas e algoritmosGrande economia de tempoInflexível Simplificação

Ferramentas para SimulaçãoMétodos Formais

Z-eves e Z-ansIA

Prolog JEOPS (http://www.di.ufpe.br/~csff/jeops)

Redes de Computadores SMPL BONeS NS - Network Simulator

Simscript

Linguagens Funcionais

Avaliação dos Resultados de Simulação

Técnicas de verificação do modeloTécnicas de validação do modeloRemoção de transientesCritério de parada: estimativa da

variânciaRedução da variância

Verificação X Validação

Verificar DepurarValidar Modelo = Mundo

Real

Técnicas de Verificação do Modelo

Projeto Modular Top-Down Dividir para Conquistar

Medidas Antibugs Inclusão de verificações (Probabilidades=1)

Varrida Estruturada Explicação do código

Trace Lista de eventos e variáveis (níveis de trace)

Técnicas de Verificação do Modelo

Teste de continuidade Pequena mudança na entrada

pequena mudança na saídaTestes degenerativos

Configurações e cargas extremasIndependência das sementes

Resultados semelhantes para sementes diferentes

Técnicas de Validação do ModeloAspectos a serem validados

Hipóteses Valores dos parâmetros de entrada e

distribuições Valores de saída e conclusões

Técnicas Intuição do especialista Medidas de um sistema real Resultados teóricos

Técnicas de Validação do ModeloUm modelo completamente válido é

um MITOPodemos mostrar apenas que um

modelo não é inválido para algumas situações

Remoção de TransientesGeralmente estamos interessados no

desempenho do sistema em estado permanente Remover a parte inicial

Heurísticas Execuções longas Inicialização apropriada Médias (várias iterações)

Executar até que o intervalo de confiança seja estreito o bastante (5%, 10%, ...) x ± z1-/2Var(x)

Para observações independentes Var(x) = Var(x)/n

Independência não é aplicável a muitas simulações

Para observações correlacionadas Variância real >> Var(x)/n

Critério de parada: estimativa da variância

Critério de parada: estimativa da variância

Soluções Replicações Independentes (~10

replicações) Médias de Lotes (batches) Método Regenerativo (ciclos de

regeneração)Métodos para determinar a variância de

de sistemas com eventos dependentes

Redução da VariânciaReduza a variância através do controle

da cadeia de números aleatórios Introduz correlação em observações

sucessivasProblema

O uso sem o devido cuidado pode não dar certo, levando a aumentar a variância

Não é recomendado para iniciantes

Algumas Dicas para SimulaçãoDefina o sistema a ser modeladoDefinir as propriedades importantes do

sistemaDeterminar que propriedades ignorar no

modelo (conhecer o problema)Decidir que método usar e porqueDevida o modelo em sub-problemasVerificar e Validar os sub-modelos com o

sistema real

ConclusõesADS é uma ArteSimulação é um dos métodos mais

aplicados e eficazes para ADSApenas simulação não é suficiente.

Valide os resultados de simulação: Modelagem analítica Medição