Simulação de Sistemas
Computacionais
Por:
Carlos Cordeiro {[email protected]}
Roteiro
Introdução
Desempenho
Medidas de desempenho
Técnicas de avaliação
Simulação
Ferramentas/Linguagens de simulação
Avaliação de resultados de simulação
Conclusões
Introdução
Desempenho é um critério chave
Todo 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 Desempenho
Objetivo:
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 desempenho
Velocidade
tempo de resposta, vazão e utilização
Confiabilidade
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ção
Critério
Modelagem
analítica
Qualquer
Simulação
Medição
Qualquer
Protótipo
Tempo
necessário
Ferramentas
Pouco
Médio
Variado
Analistas
Instrumentação
Precisão
Pouca
Linguagens de
Programação
Moderada
Avaliação de
Compromissos
Custo
Fácil
Moderada
Difícil
Baixo
Médio
Alto
Saleability
Baixa
Média
Alta
Estágio
Variada
Modelos
Nos deparamos todos os dias com vários
os tipos de modelos
Ex: Brinquedos são modelos de objetos do
mundo real
Um modelo é um tipo de abstração
Modelos
O 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ções
Um modelo é uma simplificação do objeto
do mundo real (sistema, processo, ...)
Perda de propriedades do sistema real
Contudo, simplificações:
custam menos
são mais rápidas
Simulação X Modelos
Simular é estudar um modelo no tempo
Simulação
Técnica muito útil para ADS
Especialmente:
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 Comuns
Nível de abstração inadequado
Modelo inadequado
Linguagem inadequada
Modelos não verificados ou inválidos
Tratamento inadequado das condições
iniciais
Simulações muito curtas
Geradores 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ção
Linguagem de propósito geral
Extensão de uma linguagem de propósito
geral
Pacote de simulação
Linguagens de Simulação
Economizam tempo de desenvolvimento
Recursos:
avançar no tempo
escalonar (programar) eventos
geração de valores aleatórios
coleta de dados estatísticos (probes)
Foco no problema
Código modular e legível
Linguagem de Propósito Geral
Familiaridade do analista
Início imediato
Overhead 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 hospedeiro
Compromisso entre
Eficiência
Flexibilidade
Portabilidade
Pacotes de Simulação
Biblioteca com estruturas de dados,
rotinas e algoritmos
Grande economia de tempo
Inflexível  Simplificação
Ferramentas para Simulação
Métodos Formais
Z-eves e Z-ans
Linguagens
Funcionais
IA
Prolog
JEOPS (http://www.di.ufpe.br/~csff/jeops)
Redes de Computadores
SMPL
Simscript
BONeS
NS - Network Simulator
Avaliação dos Resultados de
Simulação
Técnicas de verificação do modelo
Técnicas de validação do modelo
Remoção de transientes
Critério de parada: estimativa da variância
Redução da variância
Verificação X Validação
Verificar  Depurar
Validar  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ída
Testes degenerativos
Configurações e cargas extremas
Independência das sementes
Resultados semelhantes para sementes
diferentes
Técnicas de Validação do
Modelo
Aspectos 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
Modelo
Um modelo completamente válido é um
MITO
Podemos mostrar apenas que um modelo
não é inválido para algumas situações
Remoção de Transientes
Geralmente 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)
Critério de parada: estimativa
da variância
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
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ância
Reduza a variância através do controle da
cadeia de números aleatórios
Introduz correlação em observações
sucessivas
Problema
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ção
Defina o sistema a ser modelado
Definir as propriedades importantes do
sistema
Determinar que propriedades ignorar no
modelo (conhecer o problema)
Decidir que método usar e porque
Devida o modelo em sub-problemas
Verificar e Validar os sub-modelos com o
sistema real
Conclusões
ADS é uma Arte
Simulação é um dos métodos mais
aplicados e eficazes para ADS
Apenas simulação não é suficiente. Valide
os resultados de simulação:
Modelagem analítica
Medição
Download

NS - Network Simulator