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