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