Salta al contenuto
Note per Studenti Introduzione alla teoria delle code

Introduzione alla teoria delle code

In questa pagina 6

Perché serve

Nell'Analisi delle prestazioni di reteLe prestazioni di una rete si misurano con tre famiglie di metriche: traffico (bitrate $R_0$ massimo del collegamento, throughput $S\le R_0$ dati consegnati con successo, goodput al livello applicazione), ritardo (end-to-end $d_{tot}=d_{proc}+d_{queue}+d_{trans}+d_{prop}$ con $d_{trans}=L/R$ e $d_{prop}=d/v$; jitter; RTT) e capacità del tubo (BDP $=R\cdot$ ritardo, bit che riempiono il collegamento), più l'affidabilità (PER, PDR, PLR). Il throughput di un percorso è quello del collegamento collo di bottiglia, $\min$ dei bitrate, ricordando che i collegamenti condivisi dividono la capacità.Analisi delle prestazioni di rete → il ritardo di accodamento dqueued_{queue} era stato lasciato da parte: dipende dall'intensità del traffico, non solo dalle caratteristiche dei collegamenti. Per calcolarlo, e per stimare il ritardo dei protocolli di accesso al mezzo (Prestazioni dei protocolli di accesso - ALOHA, CSMA, TDMA e FDMACon arrivi di Poisson, la probabilità di successo di un frame è la probabilità che nessun altro frame arrivi nel tempo vulnerabile: ALOHA puro $P_S=e^{-2G}$, throughput $S=Ge^{-2G}$ con massimo $1/(2e)\approx0{,}18$ in $G=1/2$; slotted ALOHA $S=Ge^{-G}$ con massimo $1/e\approx0{,}37$ in $G=1$. CSMA non persistente con $a=\tau_p/t_F$: $S=\frac{Ge^{-aG}}{G(1+2a)+e^{-aG}}$, che tende a 1 per $a\to0$ ma crolla per $a$ grande, dove lo slotted ALOHA è migliore. Per TDMA ($M/D/1$) $E[T]=t_F\left(\frac{N_u}2+\frac{SN_u}{2(1-S)}+1+a\right)$ e per FDMA $E[T]=t_F\left(N_u+\frac{SN_u}{2(1-S)}+a\right)$: FDMA è più lento di $t_F(N_u/2-1)$.Prestazioni dei protocolli di accesso - ALOHA, CSMA, TDMA e FDMA →) o il jitter, si modella il collegamento come un sistema a coda (queueing system, QS).

Il corso la presenta in tre parti: (1) notazione e definizione di un sistema a coda, (2) metriche di prestazione, (3) risultati scelti (legge di Little, coda M/M/1, coda M/G/1), senza dimostrazioni tranne quella della legge di Little. Qui, per non lasciare passaggi nascosti, si aggiungono anche le derivazioni delle formule della M/M/1 e della M/D/1 (servono solo la probabilità e la Serie notevoli - geometrica, telescopica, armonicaLe serie di cui si conosce il carattere e da usare come termine di paragone: geometrica (converge a 1/(1-q) se |q|<1), telescopiche (somma b_1 - lim b_n, come Mengoli), armonica generalizzata (1/n^alpha converge se e solo se alpha>1).Serie notevoli - geometrica, telescopica, armonica →). La stessa teoria, vista dai sistemi di telecomunicazione, è in Sistemi a coda - processo di Poisson, M/M/1 e formula di LittleUn sistema a coda ha arrivi (di pacchetti, file) e un servitore (il collegamento). Con arrivi di Poisson di intensità $\lambda$ e tempi di servizio esponenziali di media $\frac1\mu$ (coda M/M/1) e $\rho=\frac\lambda\mu<1$: $P[N=n]=(1-\rho)\rho^n$, numero medio nel sistema $\bar N=\frac\rho{1-\rho}$, tempo medio di permanenza $\bar W=\frac1{\mu-\lambda}$, attesa in coda $\bar W_q=\frac\rho{\mu-\lambda}$. La formula di Little $\bar N=\lambda\bar W$ vale in generale. Con buffer finito (M/M/1/K) i pacchetti sono persi con $P_K=\frac{(1-\rho)\rho^K}{1-\rho^{K+1}}$.Sistemi a coda - processo di Poisson, M/M/1 e formula di Little →.

Parte 1: il modello

Definizione (sistema a coda). Una popolazione di clienti (nelle reti: pacchetti dati; ma anche viaggiatori in fila al check-in, persone alla posta) arriva a un sistema formato da una coda (buffer, sala d'attesa) e da una struttura di servizio con mm servitori. I clienti escono dopo il servizio (processo di partenza).

Il processo degli arrivi

I clienti arrivano secondo un processo aleatorio. Si assume una popolazione infinita: i nuovi arrivi non sono influenzati da quelli passati (assenza di memoria). Il cliente CnC_n è l'nn-esimo:

  • istante di arrivo di CnC_n: tnt_n;
  • tempo di interarrivo tra Cn−1C_{n-1} e CnC_n: τn=tn−tn−1\tau_n=t_n-t_{n-1};
  • ipotesi: i τn\tau_n sono indipendenti e identicamente distribuiti (i.i.d.) con funzione di distribuzione comune Pτ(a)=P[τn≤a]P_\tau(a)=P[\tau_n\le a], a≥0a\ge0.

Il processo di conteggio degli arrivi A(t)A(t) dice quanti clienti sono arrivati fino al tempo tt: A(t)=∫0t∑n=1+∞δ(u−tn) du,A(t)=\int_0^t\sum_{n=1}^{+\infty}\delta(u-t_n)\,du, dove δ\delta è la delta di Dirac (Delta di Dirac e derivate generalizzateLa delta di Dirac $\delta(t)$ è l'impulso ideale: area 1 concentrata in un punto, definita dalla proprietà rivelatrice $\int x(t)\delta(t-t_0)dt = x(t_0)$. Nel discreto la delta di Kronecker vale 1 in $n=0$. La derivata (generalizzata) di un salto di ampiezza $\Delta$ contiene una delta di area $\Delta$; così si derivano i segnali a tratti.Delta di Dirac e derivate generalizzate →: l'integrale di una delta in tnt_n vale 11 se tnt_n cade nell'intervallo, quindi ogni arrivo fa saltare A(t)A(t) di uno). Se gli interarrivi sono i.i.d. il processo si dice omogeneo, e con E[τ]E[\tau] tempo medio di interarrivo il tasso di arrivo è λ≜1E[τ][clienti/s].\lambda\triangleq\frac1{E[\tau]}\quad[\text{clienti/s}].

Arrivi di Poisson. Si considera solo il processo di Poisson omogeneo di tasso λ\lambda (Somma di Poisson indipendenti e processo di PoissonSe X ~ Po(λ) e Y ~ Po(μ) sono indipendenti, X + Y ~ Po(λ + μ). Un processo di Poisson di intensità λ (eventi per unità di tempo) è una famiglia {Xₜ} in cui Xₜ ~ Po(λt) conta gli eventi in [0, t], gli incrementi X_{t+τ} − Xₜ ~ Po(λτ) dipendono solo dalla lunghezza τ dell'intervallo, e incrementi su intervalli disgiunti sono indipendenti. Quindi il numero di eventi in un intervallo non dipende da quanti ne sono avvenuti prima; la probabilità di nessun evento in un tempo τ è e^{−λτ}.Somma di Poisson indipendenti e processo di Poisson →). Il numero di arrivi in un intervallo di durata τ\tau è una variabile di Poisson di parametro λτ\lambda\tau (Distribuzione di PoissonPoi(λ) conta eventi rari: P(X = k) = e^(−λ) λ^k / k! per k = 0, 1, 2, …, con media e varianza entrambe uguali a λ; approssima la binomiale Bin(n, p) quando n è grande e p piccolo, con λ = np.Distribuzione di Poisson →); da qui si ricava il tempo di interarrivo: l'evento «il prossimo arrivo avviene dopo più di aa secondi» coincide con «in aa secondi non arriva nessun cliente», che ha probabilità e−λae^{-\lambda a} (Poisson con k=0k=0). Quindi P[τ>a]=e−λaP[\tau>a]=e^{-\lambda a} e Pτ(a)=1−e−λaP_\tau(a)=1-e^{-\lambda a}: il tempo di interarrivo è esponenziale (Distribuzioni uniforme continua ed esponenzialeU(a, b) ha densità costante 1/(b − a) su [a, b], media (a + b)/2 e varianza (b − a)²/12; Exp(λ) ha densità λe^(−λx) per x ≥ 0, FdD 1 − e^(−λx), P(X > t) = e^(−λt), media 1/λ, varianza 1/λ², ed è l'unica legge continua senza memoria (versione continua della geometrica).Distribuzioni uniforme continua ed esponenziale →, con media 1/λ1/\lambda): pτ(a)=λe−λa,Pτ(a)=∫0apτ(x) dx=1−e−λa,a≥0.p_\tau(a)=\lambda e^{-\lambda a},\qquad P_\tau(a)=\int_0^ap_\tau(x)\,dx=1-e^{-\lambda a},\qquad a\ge0. La probabilità che in un intervallo di durata τ\tau arrivino esattamente kk clienti è P(k,τ)≜e−λτ(λτ)kk!.P(k,\tau)\triangleq\frac{e^{-\lambda\tau}(\lambda\tau)^k}{k!}.

Esempio. Pacchetti con λ=2\lambda=2 al secondo: il tempo medio di interarrivo è E[τ]=1/2=0,5E[\tau]=1/2=0{,}5 s. In un intervallo τ=1,5\tau=1{,}5 s il numero medio di arrivi è λτ=2⋅1,5=3\lambda\tau=2\cdot1{,}5=3, e si applica P(k,τ)=e−33k/k!P(k,\tau)=e^{-3}3^k/k! con e−3=0,0498e^{-3}=0{,}0498: nessun arrivo (k=0k=0, 0!=10!=1) e−3=0,0498e^{-3}=0{,}0498; esattamente 11: 3e−3=0,14943e^{-3}=0{,}1494; esattamente 22: 322!e−3=92e−3=0,2240\frac{3^2}{2!}e^{-3}=\frac{9}{2}e^{-3}=0{,}2240; esattamente 33: 333!e−3=276e−3=0,2240\frac{3^3}{3!}e^{-3}=\frac{27}{6}e^{-3}=0{,}2240 (uguale al caso k=2k=2 perché 9/2=27/69/2=27/6). Proprio la formula con k=0k=0 è quella che dà la probabilità di successo di ALOHA (e−2Ge^{-2G}, e−Ge^{-G}): si chiede che non arrivi nessun altro frame nel tempo vulnerabile.

Grafico interattivo: Tempo di interarrivo esponenziale con λ = 2 al secondo: densità 2e^(−2a) (decrescente, vale 2 in a = 0) e distribuzione cumulativa 1 − e^(−2a); il tempo medio è 0,5 s e la probabilità di un interarrivo ≤ 0,5 s è 1 − e^(−1) = 0,632

La densità è massima in a=0a=0: gli interarrivi brevi sono i più probabili, anche se la media è 0,50{,}5 s; la media 1/λ1/\lambda è il baricentro della coda lunga, non il valore più frequente.

Il processo di servizio

La struttura di servizio ha uno o più servitori che lavorano in parallelo e indipendentemente. Per il cliente CnC_n il tempo di servizio è il tempo yny_n che passa nella struttura di servizio; i tempi di servizio sono variabili aleatorie i.i.d., indipendenti dal processo degli arrivi, con densità py(a)p_y(a), a≥0a\ge0. Il tasso di servizio di un singolo servitore è il numero di clienti che serve nell'unità di tempo, μ≜1E[y][clienti/s],\mu\triangleq\frac1{E[y]}\quad[\text{clienti/s}], e con mm servitori in parallelo è mμm\mu.

Le distribuzioni più comuni del tempo di servizio:

La struttura della coda

  • Capacità della coda QQ: il massimo numero di clienti che si possono accumulare in coda (per i pacchetti: quelli memorizzabili nel buffer).
  • Capacità di immagazzinamento del sistema KK: il massimo numero di clienti nel sistema (in coda o in servizio): K=m+Q.K=m+Q.
  • Sistemi con blocco (blocking): se KK è finito, i clienti che trovano il sistema pieno non entrano (probabilità di blocco PblkP_{blk}). Il tasso dei clienti accettati e quello dei clienti scartati sono λa=λ(1−Pblk),λd=λ−λa=λPblk.\lambda_a=\lambda(1-P_{blk}),\qquad\lambda_d=\lambda-\lambda_a=\lambda P_{blk}.
  • Sistemi senza blocco (non-blocking): buffer infinito. Esempio: un servitore e coda infinita.

Disciplina di servizio: l'ordine con cui i clienti sono presi dalla coda. Le più comuni sono FCFS (First Come First Served, detta anche FIFO, quella usata nell'analisi matematica), LCFS (Last Come First Served, LIFO) e la coda con priorità.

Notazione di Kendall. Un sistema a coda si descrive con A / B / C / K / N − SA\,/\,B\,/\,C\,/\,K\,/\,N\,-\,S dove AA è il modello statistico degli interarrivi, BB quello del servizio, CC il numero di servitori, KK la capacità del sistema, NN la dimensione della popolazione e SS la disciplina. KK, NN, SS sono opzionali: se mancano si assume KK ed NN infiniti e disciplina FCFS. AA e BB valgono tipicamente M (markoviano, cioè esponenziale/Poisson), D (deterministico), G (generico).

Esempio. M/M/1: arrivi di Poisson, servizio esponenziale, un servitore, coda infinita, FCFS. M/D/1: arrivi di Poisson, servizio deterministico. M/G/1: arrivi di Poisson, servizio con distribuzione qualsiasi.

Misure di occupazione

Al tempo tt si definiscono: q(t)q(t) numero di clienti nella coda d'attesa; z(t)z(t) numero di clienti in servizio; x(t)x(t) numero di clienti nell'intero sistema. Naturalmente x(t)=q(t)+z(t).x(t)=q(t)+z(t). Inoltre x(t)=A(t)−D(t)x(t)=A(t)-D(t) (arrivi meno partenze fino a tt).

Definizione (stabilità). Un QS è stabile se ammette una distribuzione asintotica propria px(n)p_x(n), n=0,1,2,…n=0,1,2,\dots, per x(t)x(t), indipendente dallo stato iniziale x(0)x(0). Se la distribuzione asintotica è identicamente nulla o dipende dallo stato iniziale, il QS è instabile.

Parte 2: le metriche

Stabilità per i sistemi senza blocco. I clienti devono arrivare, in media, a un tasso minore di quello a cui possono essere serviti: λ<mμ.\lambda<m\mu. Se λ>mμ\lambda>m\mu la coda cresce indefinitamente, perché i clienti arrivano più in fretta di come possono essere serviti: si accumulano in coda al tasso medio λ−mμ\lambda-m\mu. Nelle slide la simulazione di una M/M/1 con λ\lambda solo l'1%1\% maggiore di μ\mu mostra il numero di clienti x(t)x(t) che cresce senza limite. I sistemi con blocco sono sempre stabili, perché il numero di clienti è limitato da KK.

Misure di tempo

  • wnw_n: tempo di attesa (di accodamento) di CnC_n, cioè il tempo passato nel buffer prima di entrare in servizio;
  • yny_n: tempo di servizio;
  • sns_n: tempo di sistema, il tempo totale che CnC_n passa nel sistema dall'arrivo alla partenza.

Con dnd_n istante di partenza: sn=dn−tn,sn=wn+yn.s_n=d_n-t_n,\qquad s_n=w_n+y_n.

Misure di traffico

  • Tasso di arrivo λ\lambda: numero medio di arrivi per unità di tempo.
  • Traffico offerto GG: numero medio di arrivi durante il tempo medio di servizio,

    G=λμ=λE[y].G=\frac\lambda\mu=\lambda E[y].

  • Throughput η\eta (tasso di uscita): numero medio di clienti che lasciano il sistema per unità di tempo. Con rn=dn−dn−1r_n=d_n-d_{n-1} tempo di interpartenza, η=1/E[r]\eta=1/E[r].
  • Traffico utile SS: numero medio di partenze durante il tempo medio di servizio, cioè il throughput normalizzato al tasso di servizio: S=ημ=ηE[y]=E[y]E[r](S∈[0,1] per un solo servitore).S=\frac\eta\mu=\eta E[y]=\frac{E[y]}{E[r]}\qquad(S\in[0,1]\text{ per un solo servitore}).
  • Fattore di carico (o fattore di utilizzazione, o intensità di traffico) ρ\rho, con mm servitori:

    ρ=E[y]mE[τ]=λmμ=Gm.\rho=\frac{E[y]}{mE[\tau]}=\frac\lambda{m\mu}=\frac Gm.

La condizione di stabilità λ<mμ\lambda<m\mu equivale a ρ<1\rho<1. Per un sistema stabile e senza blocco il tasso di uscita deve essere uguale al tasso di ingresso (altrimenti i clienti si accumulerebbero), quindi: η={λρ<1 (stabile)mμρ≥1 (instabile: i servitori lavorano al massimo)S={Gρ<1mρ≥1\eta=\begin{cases}\lambda&\rho<1\ \text{(stabile)}\\ m\mu&\rho\ge1\ \text{(instabile: i servitori lavorano al massimo)}\end{cases}\qquad S=\begin{cases}G&\rho<1\\ m&\rho\ge1\end{cases}

Esempio. Un collegamento da 11 Mbit/s trasmette pacchetti da 10001000 bit: μ=1000\mu=1000 pacchetti/s (E[y]=tF=1E[y]=t_F=1 ms). Se arrivano λ=800\lambda=800 pacchetti/s: G=ρ=0,8G=\rho=0{,}8, throughput η=800\eta=800 pacchetti/s (tutto quello che arriva esce), traffico utile S=0,8S=0{,}8. Se arrivassero λ=1200\lambda=1200 pacchetti/s: ρ=1,2≥1\rho=1{,}2\ge1, instabile; escono solo η=μ=1000\eta=\mu=1000 pacchetti/s (S=1S=1) e la coda cresce di 200200 pacchetti al secondo.

Parte 3: la legge di Little

Teorema (legge di Little). Il numero medio di clienti E[x]E[x] in una struttura che conserva il flusso è uguale al tasso di arrivo dei clienti alla struttura per il tempo medio che un cliente vi trascorre: E[x]=λ E[s].E[x]=\lambda\,E[s].

È un risultato fondamentale perché non fa nessuna ipotesi sui processi di arrivo e di partenza (basta che esistano i valori a regime), né sulla disciplina di servizio (vale anche con scheduling non FIFO), né sulla dipendenza tra arrivi e servizio, né sul numero di servitori.

Dimostrazione. Si conta in due modi il «tempo-cliente» totale accumulato fino al tempo tt, cioè la somma dei secondi passati nella struttura da tutti i clienti.

  1. Per istante. All'istante uu ci sono x(u)=A(u)−D(u)x(u)=A(u)-D(u) clienti (arrivi meno partenze); ciascuno «consuma» un secondo-cliente per ogni secondo, quindi il tempo-cliente è l'area sotto la curva x(u)x(u): ∫0tx(u) du.\int_0^t x(u)\,du.
  2. Per cliente. Il cliente CnC_n resta nella struttura sns_n secondi, quindi il totale è ∑n=1A(t)sn\sum_{n=1}^{A(t)}s_n. I due totali coincidono a meno dei clienti ancora presenti al tempo tt (di cui si conta solo una parte): un errore che, in un sistema stabile, diventa trascurabile rispetto al totale quando t→∞t\to\infty.

Si uguagliano e si divide per tt, moltiplicando e dividendo per A(t)A(t) il membro dei clienti: 1t∫0tx(u) du=A(t)t⋅1A(t)∑n=1A(t)sn.\frac1t\int_0^tx(u)\,du=\frac{A(t)}{t}\cdot\frac1{A(t)}\sum_{n=1}^{A(t)}s_n. Per t→∞t\to\infty: a sinistra c'è il numero medio di clienti E[x]E[x] (media temporale di xx); A(t)/t→λA(t)/t\to\lambda (tasso medio di arrivo); l'ultimo fattore è la media degli sns_n, cioè E[s]E[s]. Si ottiene E[x]=λE[s]E[x]=\lambda E[s]. Non si è mai usata la distribuzione degli arrivi né l'ordine di servizio, ed è per questo che il risultato è così generale.

Applicazioni. Scegliendo la struttura:

Struttura Numero medio Tempo medio Little
tutto il QS E[x]E[x] E[s]E[s] (sistema) E[x]=λE[s]E[x]=\lambda E[s]
la sola coda E[q]E[q] E[w]E[w] (attesa) E[q]=λE[w]E[q]=\lambda E[w]
il solo servizio E[z]E[z] E[y]E[y] (servizio) E[z]=λE[y]=ρE[z]=\lambda E[y]=\rho (un servitore)

L'ultima riga dice che il numero medio di clienti in servizio è proprio l'utilizzazione: per un servitore solo, ρ\rho è la frazione di tempo in cui è occupato.

Parte 3: la coda M/M/1

Arrivi di Poisson (tasso λ\lambda), servizio esponenziale (tasso μ\mu), un servitore, buffer infinito. Fattore di carico ρ=λμ,stabilitaˋ: ρ<1.\rho=\frac\lambda\mu,\qquad\text{stabilità: }\rho<1.

Formula (distribuzione e numero medio nel sistema, M/M/1). Il numero di clienti nel sistema ha distribuzione geometrica (Distribuzione geometricaGeo(p) è il numero della prova in cui arriva il primo successo in prove indipendenti: P(X = n) = (1−p)^(n−1) p per n ≥ 1, P(X > n) = (1−p)^n (lunga attesa), media 1/p, varianza (1−p)/p², ed è senza memoria.Distribuzione geometrica →): px(n)=(1−ρ)ρ n,n=0,1,2,…p_x(n)=(1-\rho)\rho^{\,n},\qquad n=0,1,2,\dots E[x]=ρ1−ρ,Var(x)=ρ(1−ρ)2.E[x]=\frac\rho{1-\rho},\qquad\mathrm{Var}(x)=\frac\rho{(1-\rho)^2}.

Verifica: px(0)=1−ρp_x(0)=1-\rho è la probabilità che il sistema sia vuoto, cioè il complemento dell'utilizzazione, come deve essere.

Da dove vengono queste formule. Con arrivi di Poisson e servizio esponenziale (entrambi senza memoria) il sistema cambia stato solo di ±1\pm1: da nn a n+1n+1 per un arrivo (tasso λ\lambda), da n+1n+1 a nn per una partenza (tasso μ\mu). A regime il numero di passaggi al secondo da nn a n+1n+1 e da n+1n+1 a nn deve essere lo stesso, altrimenti la distribuzione cambierebbe nel tempo: λ px(n)=μ px(n+1) ⇒ px(n+1)=ρ px(n) ⇒ px(n)=ρ npx(0).\lambda\,p_x(n)=\mu\,p_x(n+1)\ \Rightarrow\ p_x(n+1)=\rho\,p_x(n)\ \Rightarrow\ p_x(n)=\rho^{\,n}p_x(0). (Il primo membro è «sono nello stato nn e arriva un cliente», il secondo «sono nello stato n+1n+1 e ne parte uno».) Le probabilità devono sommare a 11; la somma ∑n≥0ρn=11−ρ\sum_{n\ge0}\rho^n=\frac1{1-\rho} è la serie geometrica (Serie notevoli - geometrica, telescopica, armonicaLe serie di cui si conosce il carattere e da usare come termine di paragone: geometrica (converge a 1/(1-q) se |q|<1), telescopiche (somma b_1 - lim b_n, come Mengoli), armonica generalizzata (1/n^alpha converge se e solo se alpha>1).Serie notevoli - geometrica, telescopica, armonica →) e converge solo se ρ<1\rho<1, che è proprio la condizione di stabilità: px(0)∑n=0∞ρn=px(0)1−ρ=1 ⇒ px(0)=1−ρ.p_x(0)\sum_{n=0}^{\infty}\rho^n=\frac{p_x(0)}{1-\rho}=1\ \Rightarrow\ p_x(0)=1-\rho. Per il valore medio (Valore attesoIl valore atteso E[X] = Σ x p_X(x) è la media dei valori di X pesata con le loro probabilità (esiste se la serie converge assolutamente); per una funzione g vale E[g(X)] = Σ g(x) p_X(x) senza trovare la legge di g(X), ed E è lineare: E[aX + bY + c] = aE[X] + bE[Y] + c.Valore atteso →) si usa la derivata della serie geometrica, ∑n≥1nρn−1=ddρ11−ρ=1(1−ρ)2\sum_{n\ge1}n\rho^{n-1}=\frac{d}{d\rho}\frac1{1-\rho}=\frac1{(1-\rho)^2} (Regole di derivazioneDerivate delle funzioni elementari e delle loro inverse (arcsin, arctan, settcosh...) e regole di calcolo: linearità, prodotto (Leibniz), quoziente, funzione composta (regola della catena), funzione inversa, f(x)^g(x).Regole di derivazione →): E[x]=∑n=0∞n(1−ρ)ρn=(1−ρ) ρ∑n=1∞nρn−1=(1−ρ) ρ⋅1(1−ρ)2=ρ1−ρ.E[x]=\sum_{n=0}^{\infty}n(1-\rho)\rho^n=(1-\rho)\,\rho\sum_{n=1}^{\infty}n\rho^{n-1}=(1-\rho)\,\rho\cdot\frac1{(1-\rho)^2}=\frac\rho{1-\rho}. Per la varianza (Varianza e momentiI momenti E[X^k] e i momenti centrati E[(X − μ)^k] descrivono la forma di una legge; la varianza Var(X) = E[(X − μ)²] = E[X²] − E[X]² misura quanto X si disperde attorno alla media, vale Var(aX + b) = a² Var(X) e Var(X) = 0 solo se X è costante.Varianza e momenti →) si calcola prima E[x(x−1)]E[x(x-1)], con ∑n≥2n(n−1)ρn−2=d2dρ211−ρ=2(1−ρ)3\sum_{n\ge2}n(n-1)\rho^{n-2}=\frac{d^2}{d\rho^2}\frac1{1-\rho}=\frac2{(1-\rho)^3}: E[x(x−1)]=(1−ρ)ρ2⋅2(1−ρ)3=2ρ2(1−ρ)2,E[x2]=E[x(x−1)]+E[x]=2ρ2(1−ρ)2+ρ1−ρ,E[x(x-1)]=(1-\rho)\rho^2\cdot\frac2{(1-\rho)^3}=\frac{2\rho^2}{(1-\rho)^2},\qquad E[x^2]=E[x(x-1)]+E[x]=\frac{2\rho^2}{(1-\rho)^2}+\frac\rho{1-\rho}, Var(x)=E[x2]−E[x]2=ρ2(1−ρ)2+ρ1−ρ=ρ2+ρ(1−ρ)(1−ρ)2=ρ(1−ρ)2.\mathrm{Var}(x)=E[x^2]-E[x]^2=\frac{\rho^2}{(1-\rho)^2}+\frac\rho{1-\rho}=\frac{\rho^2+\rho(1-\rho)}{(1-\rho)^2}=\frac\rho{(1-\rho)^2}. Anche la coda lunga ha una formula: P[x≥n]=∑k≥n(1−ρ)ρk=(1−ρ)ρn11−ρ=ρ nP[x\ge n]=\sum_{k\ge n}(1-\rho)\rho^k=(1-\rho)\rho^n\frac1{1-\rho}=\rho^{\,n}.

Grafico interattivo: Distribuzione del numero di clienti nel sistema M/M/1 con ρ = 0,8: p(n) = 0,2·0,8^n, geometrica decrescente (p(0) = 0,2 = 1 − ρ, p(1) = 0,16, p(2) = 0,128); la media è ρ/(1−ρ) = 4

Formula (coda e tempi, M/M/1). Dal numero medio nel sistema togliendo quello in servizio (ρ\rho): E[q]=E[x]−ρ=ρ21−ρ.E[q]=E[x]-\rho=\frac{\rho^2}{1-\rho}. Con Little: E[s]=E[x]λ=1/μ1−ρ,E[w]=E[s]−1μ=ρ/μ1−ρ.E[s]=\frac{E[x]}\lambda=\frac{1/\mu}{1-\rho},\qquad E[w]=E[s]-\frac1\mu=\frac{\rho/\mu}{1-\rho}.

Il tempo medio di sistema è il tempo di servizio 1/μ1/\mu diviso per (1−ρ)(1-\rho): quando ρ→1\rho\to1 il ritardo cresce senza limite.

Esempio. Il collegamento da 11 Mbit/s con pacchetti da 10001000 bit, μ=1000\mu=1000 pacchetti/s, e λ=800\lambda=800 pacchetti/s (ρ=0,8\rho=0{,}8), con pacchetti di lunghezza esponenziale (M/M/1):

  • E[x]=0,8/0,2=4E[x]=0{,}8/0{,}2=4 pacchetti nel sistema;
  • E[q]=0,82/0,2=3,2E[q]=0{,}8^2/0{,}2=3{,}2 pacchetti in coda; E[z]=0,8E[z]=0{,}8 in servizio, e 3,2+0,8=43{,}2+0{,}8=4;
  • E[s]=(1/1000)/0,2=5E[s]=(1/1000)/0{,}2=5 ms; Little: λE[s]=800⋅0,005=4\lambda E[s]=800\cdot0{,}005=4 ✓;
  • E[w]=0,8⋅(1/1000)/0,2=4E[w]=0{,}8\cdot(1/1000)/0{,}2=4 ms, e 4+1=54+1=5 ms ✓;
  • il sistema è vuoto con probabilità 1−ρ=0,21-\rho=0{,}2 e ha almeno 55 pacchetti con probabilità P[x≥5]=ρ5=0,85=0,328P[x\ge5]=\rho^5=0{,}8^5=0{,}328 (formula della coda lunga ricavata sopra).

Se il carico sale a ρ=0,95\rho=0{,}95: E[s]=1/(1000⋅0,05)=20E[s]=1/(1000\cdot0{,}05)=20 ms, quattro volte di più: la coda è molto sensibile al carico vicino a 11.

Parte 3: la coda M/G/1

Arrivi di Poisson, servizio con distribuzione generale, un servitore. Con ρ=λ/μ<1\rho=\lambda/\mu<1, la formula di Pollaczek-Khinchin dà il tempo medio di attesa in coda in funzione del secondo momento del servizio: E[w]=λE[y2]2(1−ρ).E[w]=\frac{\lambda E[y^2]}{2(1-\rho)}. Nelle slide compaiono le espressioni del caso in cui il tempo di servizio è costante (E[y2]=1/μ2E[y^2]=1/\mu^2, cioè M/D/1; è il caso dei pacchetti tutti uguali), che sono quelle usate poi in TDMA e FDMA. Si ricavano così: si sostituisce E[y2]=1/μ2E[y^2]=1/\mu^2 in Pollaczek-Khinchin e si usa λ/μ=ρ\lambda/\mu=\rho, E[w]=λ⋅1μ22(1−ρ)=λ/μ2μ(1−ρ)=ρ2μ(1−ρ);E[w]=\frac{\lambda\cdot\frac1{\mu^2}}{2(1-\rho)}=\frac{\lambda/\mu}{2\mu(1-\rho)}=\frac{\rho}{2\mu(1-\rho)}; poi E[s]=E[w]+E[y]=1μ+ρ2μ(1−ρ)E[s]=E[w]+E[y]=\frac1\mu+\frac{\rho}{2\mu(1-\rho)} e, con Little, E[x]=λE[s]=ρ+λρ2μ(1−ρ)=ρ+ρ22(1−ρ)E[x]=\lambda E[s]=\rho+\frac{\lambda\rho}{2\mu(1-\rho)}=\rho+\frac{\rho^2}{2(1-\rho)} (ancora λ/μ=ρ\lambda/\mu=\rho):

Formula (M/G/1 con servizio costante, usata nelle slide). E[x]=ρ+ρ22(1−ρ),E[w]=ρ2μ(1−ρ),E[s]=E[x]λ=1μ(1+ρ2(1−ρ)).E[x]=\rho+\frac{\rho^2}{2(1-\rho)},\qquad E[w]=\frac{\rho}{2\mu(1-\rho)},\qquad E[s]=\frac{E[x]}\lambda=\frac1\mu\left(1+\frac{\rho}{2(1-\rho)}\right). Il tempo medio di servizio si ritrova per differenza: E[y]=E[s]−E[w]=1/μE[y]=E[s]-E[w]=1/\mu.

Con servizio esponenziale E[y2]=2/μ2E[y^2]=2/\mu^2 e la formula di Pollaczek-Khinchin restituisce E[w]=λ⋅2/μ22(1−ρ)=λ/μμ(1−ρ)=ρ/μ1−ρE[w]=\frac{\lambda\cdot2/\mu^2}{2(1-\rho)}=\frac{\lambda/\mu}{\mu(1-\rho)}=\frac{\rho/\mu}{1-\rho}, cioè il risultato M/M/1. In generale, E[y2]E[y^2] cresce con la variabilità del servizio: un servizio costante dimezza l'attesa rispetto a quello esponenziale a parità di ρ\rho.

Esempio. Stessi dati (μ=1000\mu=1000, λ=800\lambda=800, ρ=0,8\rho=0{,}8) ma pacchetti tutti da 10001000 bit (servizio costante, M/D/1): E[w]=0,82⋅1000⋅0,2=2E[w]=\dfrac{0{,}8}{2\cdot1000\cdot0{,}2}=2 ms (contro 44 ms della M/M/1), E[s]=2+1=3E[s]=2+1=3 ms, E[x]=0,8+0,640,4=2,4E[x]=0{,}8+\dfrac{0{,}64}{0{,}4}=2{,}4 pacchetti (Little: 800⋅0,003=2,4800\cdot0{,}003=2{,}4 ✓).

Grafico interattivo: Tempo medio di sistema normalizzato E[s]·μ in funzione del fattore di carico ρ: M/M/1 (1/(1−ρ)) e servizio costante (1 + ρ/(2(1−ρ))). Tutte e due divergono per ρ → 1

Il grafico mostra quanto è nociva la saturazione: fino a ρ≈0,5\rho\approx0{,}5 il ritardo è meno del doppio del tempo di servizio, poi sale ripidamente. Un collegamento va dimensionato in modo da lavorare lontano da ρ=1\rho=1.

Versione ripasso

  • Perché serve. Il ritardo di accodamento dqueued_{queue} dipende dall'intensità del traffico, non solo dai collegamenti (Analisi delle prestazioni di reteLe prestazioni di una rete si misurano con tre famiglie di metriche: traffico (bitrate $R_0$ massimo del collegamento, throughput $S\le R_0$ dati consegnati con successo, goodput al livello applicazione), ritardo (end-to-end $d_{tot}=d_{proc}+d_{queue}+d_{trans}+d_{prop}$ con $d_{trans}=L/R$ e $d_{prop}=d/v$; jitter; RTT) e capacità del tubo (BDP $=R\cdot$ ritardo, bit che riempiono il collegamento), più l'affidabilità (PER, PDR, PLR). Il throughput di un percorso è quello del collegamento collo di bottiglia, $\min$ dei bitrate, ricordando che i collegamenti condivisi dividono la capacità.Analisi delle prestazioni di rete →). Si modella il collegamento come sistema a coda (QS), anche per i protocolli di accesso (Prestazioni dei protocolli di accesso - ALOHA, CSMA, TDMA e FDMACon arrivi di Poisson, la probabilità di successo di un frame è la probabilità che nessun altro frame arrivi nel tempo vulnerabile: ALOHA puro $P_S=e^{-2G}$, throughput $S=Ge^{-2G}$ con massimo $1/(2e)\approx0{,}18$ in $G=1/2$; slotted ALOHA $S=Ge^{-G}$ con massimo $1/e\approx0{,}37$ in $G=1$. CSMA non persistente con $a=\tau_p/t_F$: $S=\frac{Ge^{-aG}}{G(1+2a)+e^{-aG}}$, che tende a 1 per $a\to0$ ma crolla per $a$ grande, dove lo slotted ALOHA è migliore. Per TDMA ($M/D/1$) $E[T]=t_F\left(\frac{N_u}2+\frac{SN_u}{2(1-S)}+1+a\right)$ e per FDMA $E[T]=t_F\left(N_u+\frac{SN_u}{2(1-S)}+a\right)$: FDMA è più lento di $t_F(N_u/2-1)$.Prestazioni dei protocolli di accesso - ALOHA, CSMA, TDMA e FDMA →).
  • Modello. Clienti (pacchetti) →\to coda (buffer, capacità QQ) →\to mm servitori. Capacità del sistema K=m+QK=m+Q. Con blocco (KK finito): i clienti che trovano il sistema pieno non entrano, λa=λ(1−Pblk)\lambda_a=\lambda(1-P_{blk}), λd=λPblk\lambda_d=\lambda P_{blk}. Senza blocco: buffer infinito.
  • Disciplina. FCFS (FIFO, il default), LCFS (LIFO), coda con priorità.
  • Notazione di Kendall A/B/C/K/N−SA/B/C/K/N-S: AA arrivi, BB servizio (M markoviano/esponenziale, D deterministico, G generico), CC servitori. Se mancano KK e NN sono infiniti e la disciplina è FCFS. Esempi: M/M/1 (arrivi di Poisson, servizio esponenziale, un servitore), M/D/1, M/G/1.
  • Arrivi. Tempi di interarrivo τn=tn−tn−1\tau_n=t_n-t_{n-1} i.i.d.; tasso λ=1/E[τ]\lambda=1/E[\tau]. Per Poisson il tempo di interarrivo è esponenziale, pτ(a)=λe−λap_\tau(a)=\lambda e^{-\lambda a}, Pτ(a)=1−e−λaP_\tau(a)=1-e^{-\lambda a}, e la probabilità di kk arrivi in τ\tau è P(k,τ)=e−λτ(λτ)kk!P(k,\tau)=\frac{e^{-\lambda\tau}(\lambda\tau)^k}{k!}.
  • Esempio arrivi. λ=2\lambda=2/s, τ=1,5\tau=1{,}5 s, media λτ=3\lambda\tau=3: P(0)=e−3=0,0498P(0)=e^{-3}=0{,}0498, P(1)=3e−3=0,1494P(1)=3e^{-3}=0{,}1494, P(2)=P(3)=0,2240P(2)=P(3)=0{,}2240. Il caso k=0k=0, e−λτe^{-\lambda\tau}, è la probabilità di successo di ALOHA.
  • Servizio. Tempi yny_n i.i.d., indipendenti dagli arrivi; tasso μ=1/E[y]\mu=1/E[y] per servitore, mμm\mu in totale. Deterministico py(a)=δ(a−1/μ)p_y(a)=\delta(a-1/\mu) (pacchetti tutti uguali: 1/μ=tF=F/R1/\mu=t_F=F/R); esponenziale py(a)=μe−μap_y(a)=\mu e^{-\mu a}.
  • Occupazione. q(t)q(t) in coda, z(t)z(t) in servizio, x(t)=q(t)+z(t)=A(t)−D(t)x(t)=q(t)+z(t)=A(t)-D(t).
  • Stabilità. Il QS è stabile se esiste una distribuzione asintotica px(n)p_x(n) indipendente dallo stato iniziale.
  • Tempi. ww attesa in coda, yy servizio, ss tempo di sistema: s=w+ys=w+y.
  • Traffico.
    • Offerto G=λ/μ=λE[y]G=\lambda/\mu=\lambda E[y]; fattore di carico ρ=λmμ=Gm\rho=\frac{\lambda}{m\mu}=\frac{G}{m}.
    • Throughput η=1/E[r]\eta=1/E[r], con rn=dn−dn−1r_n=d_n-d_{n-1} tempo di interpartenza; utile S=η/μS=\eta/\mu.
    • Stabile (senza blocco) ⇔λ<mμ⇔ρ<1\Leftrightarrow\lambda<m\mu\Leftrightarrow\rho<1: η=λ\eta=\lambda, S=GS=G. Instabile (ρ≥1\rho\ge1): η=mμ\eta=m\mu, S=mS=m, la coda cresce al tasso λ−mμ\lambda-m\mu. I sistemi con blocco sono sempre stabili.
  • Esempio traffico. Collegamento da 1 Mbit/s, pacchetti da 1000 bit: μ=1000\mu=1000/s. Con λ=800\lambda=800: G=ρ=S=0,8G=\rho=S=0{,}8, η=800\eta=800/s. Con λ=1200\lambda=1200: ρ=1,2\rho=1{,}2, η=1000\eta=1000/s e la coda cresce di 200 pacchetti/s.
  • Legge di Little. E[x]=λ E[s]E[x]=\lambda\,E[s], valida senza ipotesi su arrivi, servizio, disciplina o numero di servitori. Idea: il tempo totale speso nel sistema è lo stesso contato per cliente (∑sn\sum s_n) o per istante (∫x dt\int x\,dt). Applicazioni: sistema E[x]=λE[s]E[x]=\lambda E[s]; coda E[q]=λE[w]E[q]=\lambda E[w]; servizio E[z]=λE[y]=ρE[z]=\lambda E[y]=\rho (frazione di tempo occupato).
  • M/M/1. Con ρ=λ/μ<1\rho=\lambda/\mu<1:
    • px(n)=(1−ρ)ρnp_x(n)=(1-\rho)\rho^n (geometrica), quindi px(0)=1−ρp_x(0)=1-\rho; E[x]=ρ1−ρE[x]=\frac{\rho}{1-\rho}; Var(x)=ρ(1−ρ)2\mathrm{Var}(x)=\frac{\rho}{(1-\rho)^2};
    • E[q]=E[x]−ρ=ρ21−ρE[q]=E[x]-\rho=\frac{\rho^2}{1-\rho}; E[s]=E[x]λ=1/μ1−ρE[s]=\frac{E[x]}{\lambda}=\frac{1/\mu}{1-\rho}; E[w]=E[s]−1μ=ρ/μ1−ρE[w]=E[s]-\frac1\mu=\frac{\rho/\mu}{1-\rho}.
  • Esempio M/M/1. ρ=0,8\rho=0{,}8, μ=1000\mu=1000/s: E[x]=0,8/0,2=4E[x]=0{,}8/0{,}2=4; E[q]=0,82/0,2=3,2E[q]=0{,}8^2/0{,}2=3{,}2; E[s]=(1/1000)/0,2=5E[s]=(1/1000)/0{,}2=5 ms, con Little 800⋅0,005=4800\cdot0{,}005=4 ✓; E[w]=4E[w]=4 ms; sistema vuoto con probabilità 0,20{,}2; almeno 5 pacchetti con probabilità ρ5=0,328\rho^5=0{,}328. Con ρ=0,95\rho=0{,}95: E[s]=20E[s]=20 ms, quattro volte di più.
  • M/G/1 (Pollaczek-Khinchin). E[w]=λE[y2]2(1−ρ)E[w]=\frac{\lambda E[y^2]}{2(1-\rho)}. Servizio esponenziale (E[y2]=2/μ2E[y^2]=2/\mu^2): si ritrova la M/M/1. Servizio costante (M/D/1, E[y2]=1/μ2E[y^2]=1/\mu^2, pacchetti uguali, usato anche per TDMA e FDMA): E[x]=ρ+ρ22(1−ρ)E[x]=\rho+\frac{\rho^2}{2(1-\rho)}, E[w]=ρ2μ(1−ρ)E[w]=\frac{\rho}{2\mu(1-\rho)}, E[s]=1μ(1+ρ2(1−ρ))E[s]=\frac1\mu\left(1+\frac{\rho}{2(1-\rho)}\right), con E[y]=E[s]−E[w]=1μE[y]=E[s]-E[w]=\frac1\mu. Un servizio costante dimezza l'attesa rispetto all'esponenziale, a parità di ρ\rho.
  • Esempio M/D/1. Stessi dati (μ=1000\mu=1000, ρ=0,8\rho=0{,}8): E[w]=2E[w]=2 ms (contro 4 ms), E[s]=3E[s]=3 ms, E[x]=2,4E[x]=2{,}4 pacchetti (Little: 800⋅0,003=2,4800\cdot0{,}003=2{,}4 ✓).
  • Perché conta. E[s]μ=11−ρE[s]\mu=\frac{1}{1-\rho} nella M/M/1 diverge per ρ→1\rho\to1. Fino a ρ≈0,5\rho\approx0{,}5 il ritardo è meno del doppio del tempo di servizio, poi sale ripidamente: un collegamento va dimensionato lontano da ρ=1\rho=1.
  • Errori tipici: dimenticare che il ritardo esplode per ρ→1\rho\to1; usare λ\lambda al posto di ρ\rho nelle formule; confondere E[s]E[s] (sistema) con E[w]E[w] (solo coda); applicare le formule della M/M/1 a un servizio costante, o viceversa.

Lezioni in cui compare

Teoria collegata