Simula¸
c˜
ao de Sistemas
Daniel Sadoc Menasche e Paulo Aguiar
2/1
Como analisar um sistema?
modelo simulador sistema emulador solucão analítica medidas de interesse D. Menasche e P. Aguiar
Por que simular?
Quando resolver analiticamente? modelo simples suficiente identificar trade-offs Quando simular?
enteder o comportamento de sistemas complexos implementar sistema real custoso
Quando emular? `
as vezes, emular ´e mais f´acil que simular (e.g., BitTorrent no Planetlab)
Modelagem
Como criar um modelo? Ingredientes chaves,
vari´aveis de estado (definem estado do sistema)
eventos (definem como sistema transiciona de um estado para outro)
O que fazer com um modelo?
obter resultados transientes ou estado estacion´ario
e.g., valor esperado do n´umero de clientes em fila, distribui¸c˜ao do tempo de espera, . . .
Como resolver um modelo?
Modelo pode ser resolvido
analiticamente (e.g., transformada de Laplace, cadeia de Markov, . . .)
simula¸c˜ao Exemplos
tempo de dura¸c˜ao de um leil˜ao
resolvido analiticamente na lista 2 tamb´em pode ser resolvido via simula¸c˜ao
fila M/M/1 com cat´astrofes
a ser analisado a seguir, via simula¸c˜ao
Como criar um modelo?
Identificar
vari´aveis de estado eventos
Primeira etapa: Identificando vari´
aveis de estado
O que s˜ao vari´aveis de estado?
que informa¸c˜ao preciso armazenar para ter uma “fotografia” do sistema?
qual ´e o dom´ınimo de minhas vari´aveis de estado?
todas as vari´aveis tem dom´ınio finito: espa¸co de estados finito alguma vari´avel tem dom´ınio infinito: espa¸co de estados infinito
Identificando vari´
aveis de estado: Exemplos
modelo (descri¸c˜ao): (vari´aveis de estado), descri¸c˜ao [dom´ınio] M/M/1 (fila com 1 servidor): (X ), n´umero de usu´arios no sistema [dom´ınio: {0, 1, . . .}]
M/M/1/K (fila com 1 servidor e capacidade K ): (X ), n´umero de usu´arios no sistema [dom´ınio: {0, 1, . . . , K }]
M/M/1/K com falhas (fila com 1 servidor que pode falhar e capacidade K ): (X , S ), n´umero de usu´arios no sistema e estado do servidor [dom´ınio: {0, 1, . . . , K }; {ativo, falha}]
Segunda etapa: Identificando eventos
O que s˜ao eventos?
eventos geram transi¸c˜oes entre estados eventos podem ocorrer
a certa taxa, independentemente do estado do sistema ou podem ser ativados ou desativados em decorrˆencia da execu¸c˜ao de outros eventos
Eventos s˜ao armazenados em uma lista de eventos
tempo evento tipo evento dados auxiliares do evento tempo evento tipo evento dados auxiliares do evento
Identificando eventos: Exemplos
λ µ λ µ ativo falha γ σTerceira etapa: Identificando a¸
c˜
oes a serem
executadas
Quando um evento ocorre, a¸c˜oes precisam ser executadas A¸c˜oes podem ser
atualiza¸c˜oes de vari´aveis de estado cria¸c˜ao de novos eventos
Identificando a¸
c˜
oes de eventos: Exemplos
λ µ λ µ ativo falha γ σ ao sair um cliente, 1) decrementar X 2) agendar nova saída ao chegar um cliente,1) incrementar X 2) agendar nova chegada
ao falhar o servidor, 1) atualizar estado servidor 2) interromper o serviço 3) agendar conserto
Plano de dados e de controle
Plano de dados
lista eventos L vari´aveis de estado
Plano de controle
1 inicializar vari´aveis de estado 2 inicializar lista de eventos 3 enquanto L 6= ∅
remover evento e da lista L tratar e
Exemplo 1: M/M/1
0 1 2 3 λ µ λ λ λ λ µ µ µ µExemplo 1: M/M/1
Plano de dados
lista eventos L
vari´aveis de estado: N, n´umero de clientes na fila
Plano de controle
1 inicializar vari´aveis de estado, N = 0
2 inicializar lista de eventos: sortear tempo da pr´oxima chegada
de cliente e incluir evento na lista L
3 enquanto L 6= ∅
remover evento e da lista L tratar e, caso
chegada: N ← N + 1, sortear tempo da pr´oxima chegada e incluir evento na lista; se N = 1 sortear tempo pr´oxima partida e incluir evento na lista
Exemplo 1: M/M/1 com cat´
astrofe
0 1 2 3 λ λ λ λ µ µ µ µ λ µ γ γ γExemplo 2: M/M/1 com cat´
astrofes
Plano de controle
1 inicializar vari´aveis de estado, N = 0
2 inicializar lista de eventos: sortear tempo da pr´oxima chegada
de cliente e incluir evento na lista L; sortear tempo da pr´oxima cat´astrofe e incluir evento na lista L
3 enquanto L 6= ∅
remover evento e da lista L tratar e, caso
chegada: N ← N + 1, sortear tempo da pr´oxima chegada e incluir evento na lista; se N = 1, sortear tempo da pr´oxima partida e incluir evento na lista;
partida: N ← N − 1, se N > 0 sortear tempo da pr´oxima partida e incluir evento na lista
cat´astrofe: N ← 0, remover evento de servi¸co da lista caso ∃; sortear tempo da pr´oxima cat´astrofe e incluir evento na lista
C´
alculo das medidas de interesse
o sistema ´e simulado por n rodadas considere a fila M/M/1
seja Wik o tempo de espera do k-´esimo freguˆes durante a
i -´esima rodada
na rodada s˜ao servidos K fregueses
o tempo m´edio de espera na rodada i ´e Wi
Wi =
PK
k=0Wik
Esqueleto de simulador
Plano de dados
lista eventos L vari´aveis de estado
Plano de controle
1 inicializar vari´aveis de estado 2 inicializar lista de eventos
3 enquanto L 6= ∅ e crit´erio de parada n˜ao satisfeito remover evento e da lista L
Quando parar?
Crit´erios de parada de rodada de simula¸c˜ao n´umero total de eventos
n´umero de servi¸cos
tempo de simula¸c˜ao (evitar)
N˜ao adotar “tempo real” da m´aquina como crit´erio de parada (e.g., rodar a simula¸c˜ao por 5 minutos)
Como calcular m´
etricas de interesse? Abordagem
integrada
C´alculo direto no simulador o n´umero m´edio de clientes ´e
N = ´area tempo N tempo area t t N0 N1
Como calcular m´
etricas de interesse? Abordagem
integrada
N tempo area t0 t1 N0 N1para calcular a ´area
1 seja A a ´area acumulada
2 seja t o tempo atual de simula¸c˜ao 3 inicialize A = 0, t0= 0, N0= 0
Como calcular m´
etricas de interesse? Abordagem
integrada
Seja T o tempo m´edio de permanˆencia de um usu´ario no sistema Como calcular T ?
λ ´e a taxa de chegada de clientes
λ = n´umero chegadas
tempo de simula¸c˜ao (2)
N ´e o n´umero m´edio de clientes servidos (calculado no slide anterior)
resultado de Little
N = λT (3)
Como calcular m´
etricas de interesse? Abordagem
desacoplada
C´alculo com programa de gera¸c˜ao de estat´ısticas a parte
simulador com printf´s
gerador de estatísticas
Transiente versus estado estacion´
ario
transiente equilíbrio
tempo N
Transiente versus estado estacion´
ario
Aguns sistemas nunca entram em estado estacion´ario exemplos?
Considerando m´
ultiplas rodadas: batch versus
replicativo
Esqueleto de simulador
Plano de controle
1 para cada rodada i , 1 ≤ i ≤ N 1 inicializar vari´aveis de estado 2 inicializar lista de eventos
3 enquanto L 6= ∅ e crit´erio de parada n˜ao satisfeito remover evento e da lista L
tratar e 4 obter Xi 2 µ =ˆ PN i =1Xi/N 3 σˆ2 =PN i =1 (Xi−ˆµ)2 N−1
Considera¸
c˜
oes finais sobre determina¸
c˜
ao do n´
umero
de rodadas
Seja N o n´umero de rodadas. Recordando, ˆ µ =PN i =1Xi/N ˆ σ2 =PN i =1 (Xi−ˆµ)2 N−1 intervalo de confian¸ca 2 × 1, 96ˆσ √ N (5)
O n´umero de rodadas pode ser definido arbitrariamente (e.g., N = 10)
usando regra (e.g., gerar novas rodadas at´e que intervalo de confian¸ca < 10% ˆµ)
Condi¸c˜ao de parada
2 × 1, 96ˆσ
Tempo De Ocorrˆ
encia Dos Eventos
Sobre o sorteio dos tempos dos eventos: antes de introduzir-se evento na lista,
sortea-se o intervalo de tempo at´e a ocorrˆencia do evento soma-se o valor sorteado ao tempo atual, e obtem-se o tempo t
M´
etricas de Interesse I
As m´etricas de interesse se dividem em
m´etricas de tempo: m´etricas calculadas diretamente (e.g., m´edia do tempo de download)
m´etricas de quantidade: m´etricas calculadas indiretametne (´area/tempo)
M´
etricas de Interesse II
Sobre a simula¸c˜ao batch
clientes que permanecem entre uma rodada e outra mant´em sistema em equil´ıbrio
os clientes no sistema que permanecem entre uma rodada e a outra s˜ao considerados no c´alculo de m´etricas de
quantidade (´area de baixo da curva N × t)
eles n˜ao s˜ao considerados para c´alculo da taxa de chegada, ou m´etricas de tempo (e.g., tempo m´edio de permanˆencia de usu´arios no sistema)