Desempenho e filas de espera

Atrasos, débito, produto banda-atraso, lei de Little e modelos M/M/1 e M/D/1.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Um pacote de 1500 bytes precisa de 1,2 ms para entrar numa ligação de 10 Mbit/s, mas pode esperar muito mais do que isso pela sua vez. O débito mede bits por segundo e o atraso mede quanto tempo o pacote demora; aumentar o primeiro não elimina propagação nem espera.

Atraso de um salto

d=dproc+dfila+LR+Dv.d=d_{proc}+d_{fila}+\frac{L}{R}+\frac{D}{v}.

dprocd_{proc} mede processamento e dfilad_{fila} mede espera pela saída; LL é o comprimento do pacote, RR o débito da ligação, DD a distância e vv a velocidade de propagação. L/RL/R é o tempo de transmissão, até sair o último bit, e D/vD/v é o tempo de propagação, até um bit atravessar a distância. Usa bits e bit/s na primeira fração, metros e m/s na segunda.

Exemplo. Pacote de 1500 bytes, ligação de 10 Mbit/s, distância de 100 km e velocidade 2×1082\times10^8 m/s. Transmissão 12000/107=1,212000/10^7=1{,}2 ms; propagação 105/(2×108)=0,510^5/(2\times10^8)=0{,}5 ms. Sem fila nem processamento, o último bit chega em 1,7 ms.

Com três ligações store-and-forward de 10, 20 e 5 Mbit/s, a transmissão de um pacote soma 1,2+0,6+2,4=4,21{,}2+0{,}6+2{,}4=4{,}2 ms; acrescenta a propagação de cada ligação. Para muitos pacotes, existe paralelismo, por isso não multipliques o atraso do primeiro pelo número de pacotes.

Débito e bits em trânsito

Sem tráfego concorrente ou outras limitações, o débito sustentado de um fluxo não ultrapassa o menor débito do percurso. Um caminho de menor custo de encaminhamento não é necessariamente o caminho de maior débito: o custo pode representar distância, política ou o inverso da capacidade.

O produto banda-atraso R tpR\,t_p conta bits que cabem numa ligação durante a propagação num sentido. Para dimensionar uma janela de transporte usa-se frequentemente R RTTR\,RTT, porque a confirmação faz a viagem de ida e volta. Confirma qual destas definições o enunciado pede.

A 100 Mbit/s com RTT de 40 ms, R RTT=4R\,RTT=4 Mbit, ou 500000 bytes. Uma janela de apenas 100000 bytes limita idealmente o débito a W/RTT=2,5W/RTT=2{,}5 MB/s, ou 20 Mbit/s, mesmo antes de considerar perdas e cabeçalhos.

Lei de Little

Num sistema estável, a média presente NN satisfaz:

N=λT.N=\lambda T.

Se chegam 200 pacotes/s e cada pacote passa em média 30 ms no sistema, N=200×0,03=6N=200\times0{,}03=6 pacotes. Se a fila admite perdas, a taxa admitida pode diferir da taxa oferecida.

Chegadas Poisson

Um processo Poisson de taxa λ\lambda modela chegadas aleatórias. O número A(t)A(t) de chegadas num intervalo de duração tt satisfaz:

P(A(t)=k)=e−λt(λt)kk!.P(A(t)=k)=e^{-\lambda t}\frac{(\lambda t)^k}{k!}.

A taxa λ=20\lambda=20 pacotes/s não significa que chegue um pacote exatamente a cada 50 ms. Num intervalo de 0,1 s, a contagem média é λt=2\lambda t=2, mas a probabilidade de zero chegadas é e−2≈0,1353e^{-2}\approx0,1353. A probabilidade de pelo menos uma é 1−e−2≈0,86471-e^{-2}\approx0,8647.

As contagens em intervalos sem sobreposição são independentes e os tempos entre chegadas são exponenciais, de média 1/λ1/\lambda. Uma sequência regularmente espaçada com a mesma taxa não tem essas propriedades.

A notação de Kendall resume o modelo em três símbolos, A/S/c: A descreve as chegadas, S o serviço e c o número de servidores. M significa sem memória, D valores constantes e G uma distribuição geral. Na secção seguinte, M/M/1 fixa Poisson nas chegadas e serviço exponencial; a página seguinte troca o serviço para determinístico ou geral, mantendo a mesma convenção de letras.

M/M/1: hipóteses e fórmulas

O modelo assume chegadas Poisson de taxa λ\lambda, serviço exponencial de taxa μ\mu, um servidor e espera ilimitada. A taxa μ\mu mede pacotes por segundo com servidor sempre ocupado. O serviço médio dura 1/μ1/\mu. A carga é ρ=λ/μ\rho=\lambda/\mu. As médias seguintes exigem ρ<1\rho<1:

T=1μ−λ,Tq=ρμ−λ,T=\frac1{\mu-\lambda},\qquad T_q=\frac{\rho}{\mu-\lambda}, N=ρ1−ρ,Nq=ρ21−ρ.N=\frac{\rho}{1-\rho},\qquad N_q=\frac{\rho^2}{1-\rho}.

TT e NN incluem o serviço; TqT_q e NqN_q contam só a fila, logo T=Tq+1/μT=T_q+1/\mu e N=Nq+ρN=N_q+\rho. O servidor está ocupado uma fração ρ\rho do tempo; P(Nsistema=n)=(1−ρ)ρnP(N_{sistema}=n)=(1-\rho)\rho^n.

Exemplo. Comprimento médio de 1000 bytes e ligação de 1 Mbit/s dão serviço médio de 8 ms, logo μ=125\mu=125 pacotes/s. Para λ=100\lambda=100, ρ=0,8\rho=0{,}8, T=40T=40 ms, Tq=32T_q=32 ms, N=4N=4 e Nq=3,2N_q=3{,}2. O comprimento precisa de variar de forma compatível com o serviço exponencial para este modelo ser literal.

Se multiplicares λ\lambda e μ\mu por dez, a carga e NN mantêm-se mas os tempos dividem-se por dez. Se aumentares só λ\lambda até μ\mu, as médias divergem. Uma fila real finita perde pacotes em vez de guardar uma quantidade infinita.

Equilíbrio dos estados

O estado nn conta pacotes no sistema, incluindo serviço. Uma chegada faz passar de nn a n+1n+1 à taxa λ\lambda e uma conclusão faz passar de n+1n+1 a nn à taxa μ\mu; em equilíbrio:

λpn=μpn+1⇒pn+1=ρpn.\lambda p_n=\mu p_{n+1}\quad\Rightarrow\quad p_{n+1}=\rho p_n.

Assim pn=ρnp0p_n=\rho^n p_0. A normalização exige ∑n=0∞pn=p0/(1−ρ)=1\sum_{n=0}^{\infty}p_n=p_0/(1-\rho)=1, logo p0=1−ρp_0=1-\rho. É aqui que precisamos de ρ<1\rho<1, pois sem essa condição a soma geométrica não pode dar uma distribuição estacionária.

No exemplo de carga 0,8, p0=0,2p_0=0,2 e p1=0,16p_1=0,16. O servidor pode estar livre 20% do tempo e ainda haver espera: chegadas aleatórias não se distribuem uniformemente pelos instantes livres. Numa D/D/1 com serviço constante e chegadas regularmente espaçadas por um intervalo maior que o serviço, um sistema inicialmente vazio não acumula espera.

Fila vazia e servidor ocioso

Com nenhum pacote à espera, o servidor pode estar ocioso ou a transmitir um único pacote. Em M/M/1 estável:

P(Nq=0)=p0+p1=1−ρ2.P(N_q=0)=p_0+p_1=1-\rho^2.

Para ρ=0,8\rho=0,8, o sistema inteiro está vazio com probabilidade 0,2, mas a fila de espera está vazia com probabilidade 0,2+0,16=0,360,2+0,16=0,36. A palavra «fila» pode designar informalmente todo o sistema num enunciado; indica sempre se a contagem inclui serviço antes de escolher p0p_0.

Chegadas periódicas e perdas

Um pacote de 1000 bytes demora 4 ms numa ligação de 2 Mbit/s. Se o agregado chegar exatamente a cada 5 ms, o serviço termina antes da chegada seguinte. Partindo vazio, não há espera nem perdas, mesmo com capacidade total para apenas um pacote.

A taxa é 200 pacotes/s e a carga 0,8. Com a mesma taxa média, mas chegadas Poisson e serviço exponencial, uma M/M/1/B de capacidade total um tem estados 0 e 1. O bloqueio é p1=ρ/(1+ρ)=4/9p_1=\rho/(1+\rho)=4/9, cerca de 44,44%. Não se pode transferir esse valor para as chegadas periódicas.

A regularidade precisa de valer para o agregado. Quatro fontes que enviem cada uma a cada 20 ms podem estar alinhadas e entregar quatro pacotes simultaneamente. Com um lugar total, só um entra em cada grupo e três perdem-se, embora a taxa agregada continue a ser 200 pacotes/s. Média e carga iguais não fixam a distribuição das chegadas.

M/D/1 não é M/M/1

Com chegadas Poisson, serviço constante, um servidor e fila FIFO ilimitada sem preempção, usa M/D/1. As médias exigem ρ<1\rho<1:

Tq=ρ2μ(1−ρ),T=Tq+1μ.T_q=\frac{\rho}{2\mu(1-\rho)},\qquad T=T_q+\frac1\mu.

Nos números anteriores, Tq=16T_q=16 ms e T=24T=24 ms. A mesma carga não determina o mesmo atraso: a variabilidade do serviço conta. Para M/G/1 com a mesma disciplina FIFO, serviços independentes e identicamente distribuídos, independentes das chegadas, a fórmula de Pollaczek-Khinchine usa o segundo momento finito do serviço, Tq=λE[S2]/(2(1−ρ))T_q=\lambda E[S^2]/(2(1-\rho)). Não é uma fórmula universal para qualquer disciplina de fila.

Multiplexagem estatística e capacidade reservada

Retoma os pacotes de 1000 bytes numa ligação de 1 Mbit/s, agora com duas fontes Poisson independentes de 40 pacotes/s cada e comprimentos exponenciais independentes. Juntar os fluxos dá λ=80\lambda=80 pacotes/s. A ligação comum serve a μ=125\mu=125 pacotes/s.

Se reservarmos metade da capacidade para cada fonte, cada fila recebe 40 pacotes/s e serve a 62,5 pacotes/s. A carga é igual nas duas opções, ρ=0,64\rho=0,64, mas os tempos de serviço não são iguais:

OrganizaçãoServiço médioTempo médio no sistema
Fila comum, capacidade inteira8 ms1/(125−80)=22,221/(125-80)=22,22 ms
Uma fila por fonte, metade da capacidade16 ms1/(62,5−40)=44,441/(62,5-40)=44,44 ms

Quando uma fonte fica sem dados, a fila comum permite à outra aproveitar toda a ligação, enquanto a reserva mantém capacidade indisponível para a outra fonte mesmo quando não é usada. Esta comparação corresponde ao modelo de partilha dos slides; a conta de TDM trata a capacidade atribuída como serviço a débito reduzido, sem modelar separadamente a fase das ranhuras.

Experimentar a carga

O gráfico calcula médias teóricas. Mantém o exemplo de μ=125\mu=125 pacotes/s, serviço médio de 8 ms, e permite mudar a carga. O marcador começa em 80%. Compara a espera M/M/1 e M/D/1 na mesma carga; os valores de sistema somam também os 8 ms de serviço.

λ = 100 pacotes/s; serviço médio = 8 ms.

Tempo médio em fila (ms). M/M/1: traço contínuo; M/D/1: tracejado.

02004006008000%25%50%75%100%Carga ρ

A 100%, estas filas infinitas não têm equilíbrio estacionário. As curvas mostram até 99%; aproximar a carga de 100% faz a espera crescer sem limite.

M/M/1: fila 32,0 ms, sistema 40,0 ms. M/D/1: fila 16,0 ms, sistema 24,0 ms.

Aproximar ρ\rho de 1 aumenta muito a espera: a 90% de carga, M/M/1 dá 72 ms em fila; a 99%, dá 792 ms. Os 8 ms de serviço não mudam. A folga média de capacidade não impede chegadas próximas de acumularem pacotes.

Exercícios

Somar transmissão e propagação

1000 bytes, R=2 Mbit/s, D=200 km, v=2 ×10^8 m/s. Sem processamento nem fila, qual o atraso em ms?

Pista

Converte bytes em bits e km em metros antes de somares.

Solução

8000/2000000+200000/200000000=0,005 s=5 ms.

Voltar à explicação
Calcular serviço, espera e ocupação

Uma saída de router é modelada por M/M/1 ilimitada, FIFO. A capacidade é 512 kbit/s, chegam 50 pacotes/s e o comprimento é exponencial, de média 1024 bytes. Verifica a estabilidade e calcula serviço médio, tempo médio em fila, tempo médio no sistema e os números médios na fila e no sistema. Confere ambas as aplicações de Little.

Pista
Converte primeiro capacidade em pacotes por segundo.
Solução

Cada pacote tem em média 8192 bits, por isso o serviço médio é 8192/512000=0,0168192/512000=0,016 s e μ=62,5\mu=62,5 pacotes/s. A carga é 50/62,5=0,8<150/62,5=0,8<1.

O tempo no sistema é T=1/(62,5−50)=0,08T=1/(62,5-50)=0,08 s. A espera é Tq=80−16=64T_q=80-16=64 ms. Little dá N=50×0,08=4N=50\times0,08=4 pacotes e Nq=50×0,064=3,2N_q=50\times0,064=3,2. A diferença 0,8 é a ocupação média do servidor, que coincide com a carga. Estes valores são médias, não uma exigência de existirem 3,2 pacotes num instante.

Confere a tua resposta:

  • Obtenho mu=62,5 pacotes/s e rho=0,8.
  • Distingo 16 ms de serviço, 64 ms de fila e 80 ms no sistema.
  • Aplico Little às duas fronteiras.
Voltar à explicação
Dimensionar uma saída pela ocupação

Doze portas de entrada encaminham cada uma 200 kbit/s para a mesma porta de saída, com pacotes de 1000 bytes e chegadas Poisson. A saída é M/M/1. Que capacidade dá uma ocupação média de 80%? Qual o atraso médio? Explica por que a ocupação fixa a capacidade sem medir diretamente o débito.

Pista
Converte o agregado em pacotes por segundo antes de aplicares a carga.
Solução

O agregado é 12×200=240012\times200=2400 kbit/s, ou 300 pacotes/s. Com ρ=0,8\rho=0{,}8, a saída precisa de 2400/0,8=30002400/0{,}8=3000 kbit/s, servindo μ=375\mu=375 pacotes/s. O atraso médio é T=1/(375−300)≈13,33T=1/(375-300)\approx13{,}33 ms. A ocupação liga o tráfego medido à capacidade desconhecida através de ρ=λ/μ\rho=\lambda/\mu.

Confere a tua resposta:

  • Somo o tráfego oferecido das doze portas.
  • Inverto a ocupação para obter a capacidade da saída.
  • Aplico M/M/1 ao atraso médio com as taxas em pacotes/s.
Voltar à explicação
Reconhecer perda nula com chegadas regulares

Nas condições do exercício anterior, os pacotes passam a ter tamanho constante e o intervalo entre chegadas consecutivas também é constante. A fila da saída tem dois buffers, capacidade para dois pacotes. Qual a probabilidade de perda de pacotes?

Pista

Compara o serviço com o intervalo entre chegadas.

Solução

O serviço demora 8000/3000000≈2,6678000/3000000\approx2{,}667 ms e as chegadas espaçam-se 1/300≈3,3331/300\approx3{,}333 ms. Cada pacote termina antes do seguinte, a fila nunca acumula e a perda é 0. O mesmo tráfego médio em Poisson perderia pacotes; a regularidade muda o resultado.

Voltar à explicação
Comparar capacidade partilhada e dividida

Duas fontes Poisson independentes geram 40 pacotes/s cada, com comprimentos exponenciais independentes de média 1000 bytes. Compara: uma fila comum e ligação de 1 Mbit/s; duas filas separadas, uma por fonte, cada uma com 0,5 Mbit/s. Calcula carga e tempo médio no sistema em cada opção. Que muda se duplicarmos todas as taxas e capacidades, mantendo os comprimentos?

Pista
Cada opção usa uma taxa de serviço diferente.
Solução

Na fila comum, λ=80\lambda=80 e μ=1000000/8000=125\mu=1000000/8000=125 pacotes/s. A carga é 0,64 e T=1/45≈22,22T=1/45\approx22,22 ms. Nas filas separadas, cada uma tem λ=40\lambda=40 e μ=62,5\mu=62,5, a mesma carga 0,64, mas T=1/22,5≈44,44T=1/22,5\approx44,44 ms.

A ligação comum serve cada pacote à capacidade inteira e aproveita a capacidade que a outra fonte não usa. A reserva de metade aumenta o tempo de serviço mesmo quando a outra fila está vazia. Duplicar taxas e capacidades conserva as cargas e as ocupações médias de cada opção e divide os tempos por dois. Isto depende das hipóteses dadas, não é uma promessa para qualquer tráfego.

Confere a tua resposta:

  • Somo as chegadas na fila comum.
  • Divido a capacidade no cenário reservado.
  • Obtenho a mesma carga e atrasos diferentes.
  • Ao escalar ambas as taxas, mantenho N e divido T por dois.
Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.