Modelagem e Simulação
CCMP0057
www.univasf.edu.br/~brauliro.leal
Prof. Brauliro Gonçalves Leal
Modelagem Conceitual de SF
Os pacotes chegam na Fila, um por vez, o Servidor os atendem também um por vez.
Um pacote aguardará na Fila se o Servidor estiver ocupado, caso contrário, será atendido.
Modelagem Conceitual de SF
A figura abaixo é uma representação gráfica de Sistemas de Fila M/M/1 e seus elementos constituintes:
● o Sistema de Fila (SF) ● uma Fila (F)
Modelagem Conceitual de SF
Variável Descrição
τ tempo entre chegadas, isto é, o intervalo de tempo entre duas chegadas sucessivas
λ taxa média de chegada por unidade de tempo
s tempo de serviço, tempo requerido para processar pacotes ou tempo no Servidor
Modelagem Conceitual de SF
Os valores que ns pode assumir são 0 ou 1,
correspondendo a Servidor ocioso ou Servidor ocupado, respectivamente.
Os valores que nf pode assumir são os
inteiros positivos, nf ∈ [0,∞), temos também
que:
nsf = nf + ns.
As variáveis cpf, eps e sps, são as variáveis de estado do sistema, são eventos discretos no tempo.
Para o mesmo evento tem-se que:
Modelagem Conceitual de SF
A figura ao lado é uma ilustração estática do Modelo Conceitual de Sistemas de Fila M/M/1.
Mas nela está implícito os aspectos dinâmicos deste modelo.
Pacotes chegam continuamente no sistema, os pacotes um a um, são encaminhados para o Servidor e após, ser processadas, saem do sistema.
Este fluxo permite gerar uma tabela com os valores de cpf, eps e sps, discutida a seguir.
Modelagem Conceitual de SF
Cálculo de da taxa de chegada (λ) e do tempo de serviço (μ)
Os dados de entrada para a simulação de Sistemas de Fila M/M/1 são:
● a taxa média de chegada (λ) ou os valores de ic de cada pacote
● a taxa média de serviço(μ) ou os valores de ts de cada pacote
As unidades de ic e ts são segundo/pacote (s/p). Os valores de ic = 1/λ e ts = 1/μ.
O valor de ic depende do modelo de negócio. O tamanho do pacote, usado para calcular o valor de ts, depende do serviço prestado, que depende também do modelo de negócio.
Modelagem Conceitual de SF
A figura abaixo é um infográfico da Nasdaq: DOMO de 11/08/2020, com o tráfego por minuto de plataformas e aplicativos mundiais. Com estes dados pode-se estimar o valor de ic destas plataformas e aplicativos, como ilustrado na tabela.
Plataforma Pacotes por Minuto λ (p/s) ic (s/p)
Amazon 6.659 111 0,00900
Facebook 150.000 2500 0,0004000
Zoom 208.333 3472 0,0002880
Instagram 347.222 5787 0,0001728
Modelagem Conceitual de SF
Estimar o tamanho máximo de um pacote do Instagram?
Comprimentos máximos de itens de uma mensagem do aplicativo Instagram, em caracteres:
● legendas: 2.200 caracteres
● hashtags: 30 hashtags de até 24 caracteres ● biografia: 150 caracteres
● nome de usuário: 30 caracteres
Tamanho máximo de um pacote do Instagram = 2200 + 30 x 24 + 150 + 30 B = 3100 B ≈ 3 KB
Vale destacar que pacotes são partes dos protocolos de comunicação. Quando os pacotes são muito pequenos, o tamanho dos protocolos de comunicação não precisam ser considerados.
Modelagem Conceitual de SF
Exemplo Estimar o tamanho máximo de um pacote do Twitter?
Comprimentos máximos de itens de uma mensagem do aplicativo Twitter, em caracteres, são destacados abaixo (sem DM):
● Tuíte: 140 caracteres ● Usuário: 15 caracteres
● Nome de perfil: 20 caracteres
Tamanho máximo de um pacote do Twitter = 140 + 15 + 20 B = 175 B
Observe que o datagrama do IPv6 (40 B) deve ser inserido no pacote do Twitter para fins de tráfego na Internet, desta forma, o pacote final terá 215 B.
O protocolo IPv6 representa 18,6% do tamanho do pacote final, o que é considerável.
Modelagem Conceitual de SF
A memória RAM GDDR6X da Nvidia GeForce RTX 3080 tem taxa de transferência de 19 Gb/s. Qual o tempo de serviço desta RAM para pacotes de 5 MB?
Tamanho do pacote = 5 MB Taxa de serviço:
Tempo de serviço:
Ou seja, esta memória pode transferir, aproximadamente, 486 pacotes de 5 MB a cada segundo; o tempo requerido para transferir um único pacote de 5 MB é 0,00205 s. μ=19Gb /s=19 Gb s pacote pacote= 19 Gb pacote pacote s = 19Gb 5 MB pps= 19×1024 Mb 5 M×8 b =486,4 pps ts=μ =1 1 486,4 pps=0,00205 s / p
Modelagem Conceitual de SF
A Nvidia GeForce RTX 3080 tem taxa bruta de 29,77 Teraflops (TFLOPS) de performance computacional. Qual o tempo de serviço desta placa para multiplicação de matrizes quadradas de tamanho 5000?
O tempo de execução para a multiplicação de matrizes quadradas de ordem n é O(n³) – algoritmos convencionais.
Tamanho do pacote = 5000³= 1,25e11 FLOP Taxa de serviço:
Tempo de serviço:
Ou seja, esta placa pode multiplicar, aproximadamente, 238 matrizes quadradas de ordem 5000 a cada segundo, a duração de uma única multiplicação é 0,00420 s. μ=29,77TFLOPS=29,77TFLOP s pacote pacote= 29,77 TFLOP pacote pps= 29,771012FLOP 1,25×1011FLOP pps=238,2 pps ts=μ =1 1 238,2 pps=0,00420 s/ p
Modelagem Conceitual de SF
Sejam N = 10 pacotes que chegam em um Sistema de Fila M/M/1 com intervalo entre chegadas:
ic = { 8, 5, 12, 15, 8, 11, 9, 10, 7, 6 },
e tempos de serviço:
ts = { 11, 10, 9, 12, 9, 11, 14, 8, 9, 10 },
ic e ts em segundos (s).
A simulação do sistema é feita conforme mostrado na tabela ao lado.
p
ic
ts
cpf eps sps
1
8
11
2
5
10
3
12
9
4
15
12
5
8
9
6
11
11
7
9
14
8
10
8
9
7
9
10
6
10
Modelagem Conceitual de SF
Valores Iniciais da Simulação
O estado inicial do Sistema de Fila:
● Fila vazia
● Servidor ocioso.
Para iniciar a contagem do tempo, o cronômetro é zerado:
Modelagem Conceitual de SF
p
ic
ts
cpf
eps
sps
0
0
0
1
8
11
2
5
10
3
12
9
4
15
12
5
8
9
6
11
11
7
9
14
8
10
8
9
7
9
10
6
10
valores iniciais da simulação t = cpf = eps = sps = 0
Modelagem Conceitual de SF
Valores Iniciais da Simulação
No exemplo, após 8 s chega o primeiro pacote:
p = 1, ic = 8 s/p, ts = 11 s/p
O pacote 1 chega na Fila em cpf = 8 s.
Como o Servidor está ocioso, ele recebe o pacote em eps = 8 s e demora 11 s para processá-lo, assim:
Modelagem Conceitual de SF
p
ic
ts
cpf
eps
sps
0
0
0
1
8
11
8
8
19
2
5
10
3
12
9
4
15
12
5
8
9
6
11
11
7
9
14
8
10
8
9
7
9
10
6
10
p = 1 eps[1] = ic[1]
eps[1] = cpf[1]
sps[1] = eps[1] + ts[1]
Modelagem Conceitual de SF
Cálculo de cpf
Quando o segundo pacote chega na Fila do sistema:
p = 2, ic = 5 s, ts = 10 s/p
O tempo transcorrido é a soma dos ic dos pacotes anteriores,
neste caso são 8+5 = 13 s/p. Esta soma é armazenada em
cpf, logo:
cpf[2] = cpf[1] + ic[2] = 8 + 5 = 11 s/p.
Generalizando:
Modelagem Conceitual de SF
p
ic
ts
cpf
eps
sps
0
0
0
1
8
11
8
8
19
2
5
10
13
3
12
9
25
4
15
12
40
5
8
9
48
6
11
11
59
7
9
14
68
8
10
8
78
9
7
9
85
10
6
10
91
cpf[p] = cpf[p-1] + ic[p], p > 1
Modelagem Conceitual de SF
Cálculo de eps
Quando o segundo pacote chega no Sistema de Fila, o Servidor pode estar ocioso ou ocupado.
Servidor Ocioso Servidor Ocupado
O Servidor recebe o pacote e o valor de eps é igual ao de cpf, ambos do segundo pacote.
O Servidor permanece ocupado até o tempo sps do pacote anterior e, assim, eps é igual ao valor de sps do pacote anterior
Modelagem Conceitual de SF
Cálculo de eps
Desta forma, para o cálculo de eps[p], p ∈ [2,N], é necessário considerar duas alternativas, a saber:
● cpf[p] > sps[p-1] então eps[p] = cpf[p], o Servidor está ocioso e o pacote é
enviado a ele
● cpf[p] ≤ sps[p-1] então eps[p] = sps[p-1], o pacote aguarda na Fila e será
enviado ao Servidor assim que ele finalizar o pacote anterior
Servidor Ocioso Servidor Ocupado
Modelagem Conceitual de SF
Na figura ao lado, estão representados três pacotes de um Sistema de Fila, Pi-2, Pi-1 e Pi. Cada pacote com seus três tempos
dos eventos discretos: ∎ - chegada de pacote na Fila (cpf), ∎ - entrada de pacote no Servidor (eps) e ∎ - saída de pacote do
Servidor (sps).
O valor de cpf de um pacote é calculado em função da taxa de chegada, já sps deste mesmo pacote depende da taxa de serviço e eps.
O valor de epsi depende do valor de spsi-1, ou seja, para
calcular epsi de um pacote é necessário o valor de sps do
pacote que o antecede.
Ao chegar no Sistema de Fila, o pacote será encaminhado ao Servidor se ele estiver ocioso. Servidor ocioso indica que o pacote anterior foi processado e, neste caso, cpfi > spsi-1. Por
outro lado, se o Servidor estiver ocupado então o pacote anterior ainda não foi processado e, neste caso, cpfi ≤ spsi-1.
Em termos matemáticos, o cálculo de eps de Pi-1 e Pi da figura acima é:
● epsi-1 = spsi-2 ● epsi = cpfi
Modelagem Conceitual de SF
eps[p] = cpf[p] > sps[p-1] ? cpf[p] : sps[p-1], p > 1
p
ic
ts
cpf
eps
sps
0
0
0
1
8
11
8
8
19
2
5
10
13
19
3
12
9
25
29
4
15
12
40
40
5
8
9
48
52
6
11
11
59
61
7
9
14
68
72
8
10
8
78
86
9
7
9
85
94
10
6
10
91
103
Modelagem Conceitual de SF
Cálculo de sps
Quando o segundo pacote sai do Servidor do Sistema de Fila,
o tempo transcorrido é igual ao valor de eps acrescido de ts,
ambos do segundo pacote.
Modelagem Conceitual de SF
p
ic
ts
cpf
eps
sps
0
0
0
1
8
11
8
8
19
2
5
10
13
19
29
3
12
9
25
29
38
4
15
12
40
40
52
5
8
9
48
52
61
6
11
11
59
61
72
7
9
14
68
72
86
8
10
8
78
86
94
9
7
9
85
94
103
10
6
10
91
103
113
sps[p] = eps[p] + ts[p], p > 1
Modelagem Conceitual de SF
Modelagem Conceitual de SF
Algoritmo para Calcular nf
Para calcular o valor de nf é necessário comparar os valores de cpf de
um dado pacote com os de sps dos pacotes anteriores. Considerando o Servidor inicialmente ocioso, tem-se:
● o pacote p = 1, o primeiro a chegar no Sistema de Fila, vai
diretamente para o Servidor, isto é nf[1] = 0
● quando o segundo pacote (p = 2) chegar no Sistema de Fila, o
Servidor pode estar ocioso ou ocupado. Se o Servidor estiver ocioso, não há pacote na Fila, então cpf[2] ≥ sps[1] e nf[2] = 0. Se o
Servidor estiver ocupado então cpf[2] < sps[1] e nf[2] = 1
● o terceiro pacote (p = 3), ao chegar no Sistema de Fila, se cpf[3] ≥
sps[2] então o Servidor está ocioso e nf[3] = 0, caso contrário nf[3]
= 1, pelo menos o pacote 2 está na Fila. Se cpf[3] < sps[1] então o primeiro pacote ainda está na Fila e nf[3] = 2.
Modelagem Conceitual de SF
Algoritmo para Calcular nf
Generalizando, quando o p-ésimo pacote chega no Sistema de Fila, o tamanho da Fila nf[p] será igual à contagem dos casos em que cpf[p] <
sps[c].
n
f[
p ]=
∑
c =1 p−1
Modelagem Conceitual de SF
Algoritmo para Calcular nf
void Nf( int p ){ nf[p] = 0; for( int c = 0; c < p-1; c++ ) if( cpf[p] < sps[c] ) nf[p] += 1; } void Nf( int p ){ int c = p-1; nf[p] = 0; while( cpf[p] < sps[c] ){ nf[p] += 1; c--; } }
n
f[
p ]=
∑
c =1 p−11 , cpf [ p]<eps[c]
Modelagem Conceitual de SF
Algoritmo para Calcular U
A Utilização é a razão entre o tempo de ocupação do Servidor e o tempo da simulação.
O tempo que o Servidor fica ocupado durante a simulação igual a soma dos valores de ts durante todo processo e U pode ser estimada pela
equação:
U =
tempo de ocupaçãp do Servidor
tempo da simulação
U =
1
T
∑
p=1 NModelagem Conceitual de SF
Algoritmo para Calcular U
U =
1
T
∑
p=1 Nt
s[
p]
T = sps[N-1];
Sx = 0;
for( int p = 0; p < N; p++ )
Sx += sps[p]-eps[p];
U = Sx/T;
p0 = 1-U;
t
s[
p]=sps[ p ]−eps[ p]
Modelagem Conceitual de SF
Sumário do Modelo Conceitual de Sistemas de Filas
Entrada N, λ e μ
Parâmetros ic e ts, com ic = 1/λ e ts = 1/μ
Eventos cpf, eps, sps
Saída T, U, E[nf], E[tf], E[ts], E[tsf], U, DP[nf], DP[tf], DP[ts], DP[tsf]
p = 1 eps[1] = cpf[1] = ic[1]sps[1] = cpf[1] +ts[1]
2 ≤ p ≤ N cpf[p] = cpf[p-1] + ic[p]cpf[p] > sps[p-1] então eps[p] = cpf[p] senão eps[p] = sps[p-1] sps[p] = eps[p] + ts[p]
Modelagem Conceitual de SF
No Sistema de Fila M/M/1 simulado abaixo, com N = 10 pacotes,
ic(s/p) = {3, 5, 4, 3, 8, 5, 9, 8, 7, 6 } e ts(s/p) = { 12, 12, 10, 9, 2, 2, 1, 3, 2, 5 } p ic ts cpf eps sps nf tf tsf 1 3 12 3 3 15 0 0 12 2 5 12 8 15 27 1 7 19 3 4 10 12 27 37 2 15 25 4 3 9 15 37 46 2 22 31 5 8 2 23 46 48 3 23 25 6 5 2 28 48 50 3 20 22 7 9 1 37 50 51 3 13 14 8 8 3 45 51 54 4 6 9 9 7 2 52 54 56 1 2 4 10 6 5 58 58 63 0 0 5 ∑ 58 58 19 108 166
Modelagem Conceitual de SF
Tem-se que T = sps[10] = 63 s.
O tempo de espera na Fila é dada por tf[p] = eps[p]-cpf[p].
Os valores de tf estão calculados na tabela acima: E[tf] = ∑tf[p]/N = 108/10 = 10,8 s. O tamanho médio da Fila é E[nf] = ∑nf[p]/N = 19/10 = 1,9 ou E[nf] = 2
A utilização U = ∑tps[p]/T = 58/63 = 0,921 ou U = 92,1%. O cálculo de p0 = 1-U = 0,079 ou p0 = 7,9%. O cálculo de E[tps] = ∑tps[p]/N = 58/10 = 5,8 s. p ic ts cpf eps sps nf tf tsf 1 3 12 3 3 15 0 0 12 2 5 12 8 15 27 1 7 19 3 4 10 12 27 37 2 15 25 4 3 9 15 37 46 2 22 31 5 8 2 23 46 48 3 23 25 6 5 2 28 48 50 3 20 22 7 9 1 37 50 51 3 13 14 8 8 3 45 51 54 4 6 9 9 7 2 52 54 56 1 2 4 10 6 5 58 58 63 0 0 5 ∑ 58 58 19 108 166
Modelagem Conceitual de SF
Será calculado o valor de nf[8] a título de exemplo, neste caso nf[8] = 4:
● o pacote 8 chegou na Fila no tempo cpf[8] = 45 s e entrará no Servidor no tempo sps[7] = 51 s, ou seja, no
tempo 51 s ela está na Fila pois cpf[8] < sps[7]
● o pacote 7 chegou na Fila no tempo cpf[7] = 37 s e entrará no Servidor no tempo sps[6] = 50 s, ou seja, no
tempo 37 s ela está na Fila pois cpf[7] < sps[6]
● o pacote 6 chegou na Fila no tempo cpf[6] = 28 s e entrará no Servidor no tempo sps[5] = 48 s, ou seja, no
tempo 28 s ela está na Fila pois cpf[6] < sps[5]
● o pacote 5 chegou na Fila no tempo cpf[5] = 23 s e entrará no Servidor no tempo sps[4] = 46 s, ou seja, no
tempo 23 s ela está na Fila pois cpf[5] < sps[4]
● o pacote 4 chegou na Fila no tempo cpf[4] = 15 s e entrará no Servidor no tempo sps[3] = 37 s, ou seja, no
tempo 15 s ela não está na Fila pois cpf[7] > sps[3]
● os pacotes anteriores já foram processados em sps[7] = 51 s.
p ic ts cpf eps sps nf tf tsf 1 3 12 3 3 15 0 0 12 2 5 12 8 15 27 1 7 19 3 4 10 12 27 37 2 15 25 4 3 9 15 37 46 2 22 31 5 8 2 23 46 48 3 23 25 6 5 2 28 48 50 3 20 22 7 9 1 37 50 51 3 13 14 8 8 3 45 51 54 4 6 9 9 7 2 52 54 56 1 2 4 10 6 5 58 58 63 0 0 5 ∑ 58 58 19 108 166
Exercícios
Preencha o quadro abaixo para:
N = 10 pacotes, ic(s/p) = { 3, 5, 4, 6, 5, 7, 6, 1, 5, 9 } e ts(s/p) = { 6, 8, 9, 9, 8, 2, 7, 4, 3, 5 } p ic ts cpf eps sps nf tf tsf 1 2 3 4 5 6 7 8 9 10 ∑
Exercícios
Preencha o quadro abaixo para:
N = 10 pacotes, ic(s/p) = { 3, 7, 6, 1, 5, 9, 5, 4, 6, 5 } e ts(s/p) = { 6, 8, 7, 4, 3, 5, 9, 9, 8, 2 } p ic ts cpf eps sps nf tf tsf 1 2 3 4 5 6 7 8 9 10