Parte II — Sistemi a coda e dimensionamento · Capitolo 6

Sistemi con attesa: formula C, M/M/m e M/M/1

~42 min di lettura6 widget interattivi

In questo capitolo

  1. Il sistema M/M/m con coda infinita
  2. La formula C di Erlang
  3. Indici medi di prestazione
  4. Dimensionamento sui tempi di attesa
  5. Distribuzione del tempo di attesa
  6. Il sistema M/M/1
  7. P₀ = 1 − ρ: un risultato generale
  8. Il processo delle partenze e il teorema di Burke
  9. Confronto fra M/M/1 e M/M/m
  10. Coda finita: M/M/1/L
  11. Esercizi svolti
  12. Verifica le tue conoscenze

1. Il sistema M/M/m con coda infinita

Il sistema con spazio di attesa infinito M/M/m ha risorse limitate a m servitori, ma chi li trova tutti occupati non viene rifiutato: va in coda. Essendo lo spazio di attesa infinito non si ha mai perdita, quindi λp = 0 e λs = λ.

Le frequenze di transizione differiscono da quelle del capitolo 5 in un solo punto, ma decisivo: superato lo stato m, la frequenza di servizio smette di crescere, perché i servitori sono finiti.

M/M/m — fino a m i servitori si riempiono, oltre m si forma la coda 0 1 m m+1 m+2 λ λ λ λ μ da qui in poi la frequenza di servizio e satura Pₖ = (A₀ᵏ/k!) P₀ per k ≤ m Pₖ = A₀ᵏ/(m! mᵏ₋ᵐ) P₀ per k > m Stabile solo se A₀ < m, cioè ρ = A₀/m < 1. Altrimenti la coda cresce senza limite.
Tavola 6.1 — La catena dell'M/M/m. Il punto m è la cerniera: prima di esso ogni nuovo utente aggiunge capacità di smaltimento, dopo di esso no. Per questo la condizione di stabilità nasce esattamente lì.

Le probabilità di stato si ottengono al solito dal processo di nascita e morte:

Pₖ = (A₀ᵏ / k!) ⋅ P₀                    k ≤ m
Pₖ = A₀ᵏ / (m! ⋅ mᵏ⁻ᵐ) ⋅ P₀             k > m

con P₀ determinato dalla normalizzazione ∑ₖ Pₖ = 1
Attenzione — condizione di stabilità

Il sistema è stabile solo se A0 < m, cioè ρ = A0/m < 1. È la prima volta nel corso che la stabilità va verificata: nel capitolo 5 i sistemi erano sempre stabili perché la catena era finita. Qui la catena è infinita, e se il traffico offerto supera la capacità la serie che definisce P0 non converge. Negli esercizi questa verifica va fatta per prima.

2. La formula C di Erlang

Qui la congestione non è più un rifiuto ma un'attesa: si definisce probabilità di congestione la probabilità di essere in uno stato in cui tutti i servitori sono occupati e l'utente deve quindi fare attesa. È la formula C di Erlang:

C(m, A₀) = Prob{ k ≥ m } = ∑ₖ₀ᶜₘ∞ Pₖ

La formula C si può calcolare anche tramite la formula B, e questa è la via che si segue in pratica perché consente di riutilizzare le tabelle e la ricorsione del capitolo 5:

                 m ⋅ B(m, A₀)
C(m, A₀)  =  ——————————————————————
              m − A₀ [ 1 − B(m, A₀) ]
Per l'esame

Le due formule rispondono a due domande diverse, e confonderle è l'errore più costoso della prova scritta. B è la probabilità che una chiamata venga persa (sistema senza coda). C è la probabilità che una chiamata debba attendere (sistema con coda). A parità di m e A0 vale sempre C > B, perché nel sistema con coda gli stati oltre m esistono e portano via probabilità agli stati bassi.

3. Indici medi di prestazione

Nota C, tutto il resto discende dal teorema di Little e dalla struttura del sistema. Vale la pena imparare queste cinque righe come un blocco unico:

numero medio di utenti in coda        Aₜ = C ⋅ A₀ / (m − A₀)

traffico medio nel sistema            A = A₀ + Aₜ

tempo medio di attesa in coda
di un utente generico                 η̄ = Aₜ/λ = C ⋅ &thetas;̄ / (m − A₀)

tempo medio di attesa in coda
per chi va effettivamente in coda      ε̄ = η̄/C = &thetas;̄ / (m − A₀)

tempo medio di permanenza             δ̄ = &thetas;̄ + η̄

La distinzione fra η̄ e ε̄ è quella che negli esercizi separa la risposta giusta da quella sbagliata. η̄ media su tutti gli utenti, compresi quelli che non aspettano affatto e contribuiscono con uno zero; ε̄ media solo su chi ha effettivamente atteso. Il legame è semplice: η̄ = C ⋅ ε̄, cioè il tempo medio complessivo è il tempo di chi aspetta pesato dalla probabilità di aspettare.

Un'ultima osservazione delle slide, tutt'altro che secondaria: questi valori medi sono validi per qualunque disciplina di servizio. FIFO, LIFO o scelta casuale danno esattamente gli stessi valori medi; cambiano solo le distribuzioni. È la stessa idea che nel capitolo 7 diventerà la legge di conservazione di Kleinrock.

4. Dimensionamento sui tempi di attesa

Come nel capitolo 5 si dimensionava m imponendo una probabilità di blocco, qui lo si dimensiona imponendo un tempo di attesa. Le slide distinguono due criteri, che corrispondono alle due medie appena viste:

CriterioCondizioneInterpretazione
sul tempo medio di attesa di un utente generico numero minimo di m tale che η̄ ≤ η0 obiettivo sulla qualità media complessiva del servizio
sul tempo medio di attesa di chi va in coda numero minimo di m tale che ε̄ ≤ ε0 obiettivo sull'esperienza di chi è effettivamente costretto ad aspettare

Il secondo criterio è più severo del primo, ed è quello che si usa quando la promessa contrattuale riguarda l'utente insoddisfatto: «nessuno aspetterà più di tre minuti» è un'affermazione su ε, non su η.

5. Distribuzione del tempo di attesa

Sotto l'ipotesi aggiuntiva di disciplina di coda FIFO, si può fare un passo oltre le medie e ricavare la distribuzione del tempo di attesa. Il risultato è di rara eleganza: entrambe le distribuzioni sono esponenziali, con lo stesso esponente.

utente che va in coda:    Fᵩ(ε₀) = 1 − e⁻⁽ᵐᵐ₋ᵏ⁾ᵩ₀

utente generico:          Fᵗ(η₀) = 1 − C ⋅ e⁻⁽ᵐᵐ₋ᵏ⁾ᵗ₀

La grandezza mμ − λ è la capacità di smaltimento residua del sistema quando tutti i servitori sono occupati: quanto più margine resta, tanto più rapidamente la coda si scarica. Le due espressioni differiscono solo per il fattore C, che è la probabilità di dover aspettare: l'utente generico ha una probabilità 1 − C di attendere zero.

Da qui discende il criterio di dimensionamento più fine, quello sulla distribuzione: il numero minimo di servitori tale che il tempo di attesa in coda sia inferiore a un certo valore con una certa probabilità minima. Imponendo Fε0) ≥ π0 si ricava, come mostrato nell'esercizio 13:

1 − e⁻⁽ᵐᵐ₋ᵏ⁾ᵩ₀ ≥ π₀

   ⇒   mμ − λ ≥ −ln(1 − π₀) / ε₀

   ⇒   m ≥ (1/μ) [ λ − ln(1 − π₀)/ε₀ ]
Idea chiave

Questa formula chiusa è una scorciatoia preziosa: dà m senza iterare sulle tabelle. Nell'esercizio del call center universitario permette di passare, in una riga, da «60 operatori distribuiti» a «23 operatori centralizzati». Ed è particolarmente istruttivo il fatto che il criterio sulla distribuzione di ε non dipenda dalla formula C: dipende solo da λ, μ e dal margine mμ − λ.

6. Il sistema M/M/1

Il caso m = 1 merita un trattamento a parte, non perché sia più semplice ma perché è il modello del multiplatore statistico, cioè dell'interfaccia di uscita di un router. È il sistema che comparirà in ogni esercizio sulle reti a pacchetto.

Con un solo servitore le frequenze sono λk = λ e μk = μ, costanti. Il traffico offerto coincide con l'utilizzazione, e le probabilità di stato diventano una geometrica:

A₀ = λ/μ = ρ

Pₖ = (1 − ρ) ρᵏ

stabile solo se  ρ < 1

La probabilità di congestione è la probabilità che il servitore sia occupato, cioè che l'utente che arriva debba fare attesa:

πᵣ = Prob{ k ≥ 1 } = 1 − P₀ = ρ         che corrisponde a  C(1, A₀)

Gli indici medi si ottengono dalle formule generali dell'M/M/m ponendo m = 1, oppure direttamente dalla geometrica:

Aₜ = ρ² / (1 − ρ)              numero medio di utenti in coda
A  = ρ / (1 − ρ)               traffico medio nel sistema

δ̄ = &thetas;̄ / (1 − ρ) = 1/(μ − λ)   tempo medio di permanenza
η̄ = ρ &thetas;̄ / (1 − ρ)             attesa media di un utente generico
ε̄ = &thetas;̄ / (1 − ρ)               attesa media per chi va in coda

Si noti che ε̄ = δ̄: chi trova il servitore occupato aspetta in media quanto un utente generico passa complessivamente nel sistema. È una coincidenza numerica specifica dell'M/M/1, dovuta all'assenza di memoria del servizio in corso.

Sotto ipotesi FIFO si ricavano anche le distribuzioni, ancora una volta esponenziali:

Fδ(t) = 1 − e⁻⁽ᵐ₋ᵏ⁾ᵗ              Fᵗ(t) = 1 − ρ e⁻⁽ᵐ₋ᵏ⁾ᵗ
A e δ̄ in funzione di ρ (M/M/1) ρ 0 0.5 0.8 0.95 ρ → 1 A = ρ/(1−ρ) δ̄ = &thetas;̄/(1−ρ) Fino a ρ ~ 0.7 la crescita e quasi lineare; oltre 0.8 diventa esplosiva. Raddoppiare il carico da 0.45 a 0.9 moltiplica il ritardo per undici.
Tavola 6.2 — Il ginocchio dell'M/M/1. Il denominatore 1 − ρ è la sola ragione di questa forma: quando l'utilizzazione si avvicina a uno, il margine di smaltimento si annulla e ogni grandezza media diverge.

7. P₀ = 1 − ρ: un risultato generale

Il risultato P0 = 1 − ρ è stato ricavato per l'M/M/1, ma le slide dimostrano che vale in generale per qualunque sistema a coda ergodico a singolo servitore in cui il tempo medio interarrivo e il tempo medio di servizio siano finiti. La dimostrazione è un piccolo capolavoro di contabilità, e vale la pena seguirla per intero.

Si osservi il sistema per un tempo T e si definiscano:

Per un sistema ergodico il servitore è libero esattamente per la frazione di tempo P0, e le partenze si contano dividendo il tempo di lavoro per il tempo medio di servizio:

B(T) = T (1 − P₀)          I(T) = T P₀

d(T) = B(T)/E[&thetas;] = T (1 − P₀) μ
a(T) = λT

equilibrio statistico:   d(T) = a(T)

  ⇒   T (1 − P₀) μ = λT   ⇒   P₀ = 1 − λ/μ = 1 − ρ
Idea chiave

Nessuna ipotesi di Poisson, nessuna ipotesi di esponenzialità: solo ergodicità e medie finite. È lo stesso stile di ragionamento del teorema di Little, e la conclusione è altrettanto robusta. In pratica: su un singolo servitore, la frazione di tempo in cui è occupato è sempre ρ, quale che sia la statistica del traffico. Questo risultato verrà usato senza esitazione nel capitolo 7 per l'M/G/1.

8. Il processo delle partenze e il teorema di Burke

Fin qui abbiamo studiato un nodo isolato. Ma una rete è fatta di nodi in cascata, e la domanda naturale è: che cosa esce da una coda? Se l'uscita di un nodo alimenta il nodo successivo, occorre sapere che tipo di processo essa sia.

Le slide ragionano sul tempo che intercorre fra due partenze successive, distinguendo due casi:

La densità di probabilità del tempo tra due partenze successive è quindi la miscela pesata delle due, e il calcolo porta a un risultato notevole, il teorema di Burke (valido anche per m > 1):

Teorema di Burke

Il processo delle partenze da un sistema con coda infinita è un processo di Poisson simile a quello degli arrivi.

La conseguenza pratica è enorme: si può studiare una catena di nodi trattandoli uno per uno, perché ciascuno riceve in ingresso un processo di Poisson. È esattamente ciò che si fa nell'esercizio 18, in cui il sistema di monitoraggio a valle dei concentratori IoT viene studiato come un M/M/1 «facendo uso del teorema di Burke».

Due sistemi a coda in cascata Poisson λ μ₁ Poisson λ (teorema di Burke) μ₂ uscita Avvertenza delle slide Anche se vale il teorema di Burke, a valle di una coda a singolo servitore cade l ipotesi di tempi di servizio indipendenti dagli arrivi: la coda a singolo servitore SERIALIZZA gli utenti in ingresso, e cosi facendo lega la lunghezza di un pacchetto al tempo che lo separa dal precedente. Il secondo nodo non e piu un M/M/1 puro. L ipotesi torna valida se gli arrivi al secondo nodo provengono da molte sorgenti indipendenti (esercizio 18).
Tavola 6.3 — Il teorema di Burke e il suo limite. Burke garantisce che il processo in uscita sia di Poisson, ma non che sia indipendente dai tempi di servizio a valle: è una distinzione sottile che le slide non lasciano cadere.
Attenzione

Le slide aggiungono un'osservazione che vale la pena non dimenticare: anche se vale il teorema di Burke, a valle di una coda a singolo servitore cade l'ipotesi di tempi di servizio indipendenti dagli arrivi. La coda a singolo servitore «serializza» gli utenti in ingresso: un pacchetto lungo occupa a lungo il servitore, e quindi il pacchetto che lo segue arriva al nodo successivo dopo un intervallo correlato alla propria dimensione. L'approssimazione torna buona quando il secondo nodo raccoglie traffico da molte sorgenti indipendenti.

9. Confronto fra M/M/1 e M/M/m

Le slide propongono un confronto a parità di carico e di capacità totale, in tre configurazioni. È l'equivalente, nel mondo con attesa, dell'efficienza di aggregazione del capitolo 5.

#ConfigurazioneTraffico offerto
1 m sistemi M/M/1 separati, ciascuno con frequenza di servizio μ0 e arrivi λ0 A0 = ρ0 = λ00 per ciascuno
2 unico sistema M/M/m, con frequenza di servizio μ0 per servitore e arrivi 0 A0 = mλ00 = mρ0
3 unico sistema M/M/1 con frequenza di servizio 0 e arrivi 0 A0 = mλ0/(mμ0) = ρ0

Tutte e tre hanno la stessa utilizzazione ρ0 e la stessa capacità complessiva, ma prestazioni molto diverse. La configurazione 3, cioè il servitore unico più veloce, è la migliore: un solo pacchetto per volta ma servito m volte più in fretta, e nessuna possibilità che una coda sia piena mentre un altro servitore è inattivo. La configurazione 2 sta in mezzo: condivide la coda, quindi non spreca servitori, ma ogni singolo servizio resta lento. La configurazione 1 è la peggiore: m code separate che non possono aiutarsi a vicenda.

Per l'esame

Questo confronto compare quasi letteralmente nell'ultimo punto del quesito sul load balancing di un router: «confrontare i valori ottenuti con quelli che si otterrebbero se il router fosse dotato di un'unica interfaccia di uscita di capacità pari alla somma delle capacità delle tre interfacce». La risposta attesa è la configurazione 3, e va motivata, non solo calcolata.

10. Coda finita: M/M/1/L

Ultimo modello del capitolo, e il più realistico per un router: un singolo servitore con spazio di attesa finito pari a L posti. L'utente che trova il servitore occupato va in coda; l'utente che trova anche la coda piena viene bloccato.

Gli stati vanno da 0 a L+1 (i posti di attesa più quello in servizio), e le probabilità di stato sono una geometrica troncata e normalizzata:

Pₖ = A₀ᵏ (1 − A₀) / (1 − A₀ᴴ⁺²)          A₀ ≠ 1

probabilità di blocco:     πₚ = Pᴴ⁺₁
probabilità di congestione: πᵣ = 1 − P₀

Il sistema è sempre stabile, perché gli stati sono in numero finito: non c'è più bisogno di imporre ρ < 1. Ma questa apparente comodità nasconde il risultato più importante della sezione, sottolineato esplicitamente a lezione:

Attenzione

Per A0 > 1 non è possibile dimensionare L per ottenere una probabilità di blocco piccola a piacere. Aggiungendo memoria si riduce la perdita solo fino a un certo punto: se il traffico offerto eccede la capacità di smaltimento, una frazione irriducibile del traffico dovrà comunque essere scartata. La memoria non crea capacità.

È la traduzione quantitativa di ciò che il capitolo 1 aveva anticipato a parole: buffer grandi non risolvono la congestione, la trasformano in ritardo, e oltre un certo punto neppure quello. Il rimedio non può stare nel nodo, deve stare nella sorgente: è il controllo di congestione della Parte III.

11. Esercizi svolti

Esercizio 13 — Dimensionamento degli operatori di un call center

Un'università fornisce informazioni agli studenti tramite call center. L'ateneo ha 12 facoltà: 6 «grandi» con circa 10 000 studenti ciascuna e 6 «medie» con circa 6 000. Il call center opera 5 ore al giorno per 25 giorni al mese; le chiamate arrivano secondo un processo di Poisson e hanno durata esponenziale con media &thetas;̄ = 3 min; ogni studente chiama in media una volta al mese con probabilità 0.5. Si confrontano tre scelte progettuali.

Traffico offerto per facoltà.

facoltà medie:   λᵐ = 6000 ⋅ 0.5 / (25 ⋅ 5) = 24 ch/h = 0.4 ch/min
                 A₀ᵐ = λᵐ &thetas;̄ = 1.2 E

facoltà grandi:  λₗ = 10000 ⋅ 0.5 / (25 ⋅ 5) = 40 ch/h = 0.667 ch/min
                 A₀ₗ = λₗ &thetas;̄ = 2 E

Un call center per facoltà, senza spazio di attesa, con obiettivo πp ≤ 5%. Si applica la formula B di Erlang cercando il minimo m:

medie:   B(3, 1.2) = 0.09     B(4, 1.2) = 0.026   →  mᵐ = 4
grandi:  B(4, 2)   = 0.095    B(5, 2)   = 0.037   →  mₗ = 5

totale ateneo:  6 ⋅ 4 + 6 ⋅ 5 = 54 operatori

Un call center per facoltà, con spazio di attesa praticamente illimitato gestito FIFO, con obiettivo: chi fa effettivamente attesa deve aspettare ε ≤ ε0 = 3 min con probabilità π0 ≥ 95%. Si applica la distribuzione del tempo di attesa:

Fᵩ(ε₀) = 1 − e⁻⁽ᵐᵐ₋ᵏ⁾ᵩ₀ ≥ π₀

  ⇒   m ≥ (1/μ) [ λ − ln(1 − π₀)/ε₀ ]

medie:   mᵐ ≥ 4.196  →  mᵐ = 5
grandi:  mₗ ≥ 4.996  →  mₗ = 5

totale ateneo:  60 operatori

Poche unità in più rispetto al caso senza attesa, ma con il grosso vantaggio che quasi nessun utente resta senza servizio. Le probabilità di dover attendere sono infatti bassissime: C(5, 1.2) = 8.21⋅10−3 e C(5, 2) = 5.97⋅10−2. Il sistema è dimensionato in modo molto conservativo, come mostrano le utilizzazioni: ρm = 1.2/5 = 0.24 e ρl = 2/5 = 0.4.

Un unico call center centralizzato per l'intero ateneo, con lo stesso requisito di qualità del caso 2. Serve che ogni operatore sappia rispondere su tutte le facoltà, ma concentrando gli sforzi si ottengono prestazioni simili con molte meno risorse:

λ = 6λᵐ + 6λₗ = 6.4 ch/min
A₀ = 6A₀ᵐ + 6A₀ₗ = 19.2 E

stessa formula:   m ≥ 22.196  →  m = 23 operatori

C(23, 19.2) = 0.31          ρ = 19.2/23 = 0.835

Meno della metà del totale ottenuto con i call center dedicati. Il prezzo è però visibile: molti più utenti finiscono in attesa (il 31% contro pochi punti percentuali), anche se con la stessa probabilità di aspettare più di tre minuti. È l'efficienza di aggregazione con il suo conto esatto: utilizzazione dal 24–40% all'83.5%, e margine per i picchi drasticamente ridotto.

Esercizio 17 — Interconnessione di LAN tramite VPN

Due LAN in sedi diverse sono collegate da terminali VPN con capacità garantita C = C0 = 100 Mbit/s. La capacità interna alle LAN è molto maggiore, per cui l'accodamento si verifica solo in uscita dal router verso il collegamento VPN. I pacchetti arrivano secondo Poisson con λ = 5000 pacchetti/s e hanno lunghezza esponenziale di media D = 800 byte.

&thetas;̄ = D/C₀ = 8 ⋅ 800 / (100 ⋅ 10⁶) = 64 µs
ρ  = λ&thetas;̄ = 5000 ⋅ 64⋅10⁻⁶ = 0.32

ε̄ = &thetas;̄/(1 − ρ) = 94 µs        (attesa per chi va in coda)

Con una crescita del traffico del 40% annuo si ha λ(1) = 7000 e λ(2) = 9800 pacchetti/s. Imponendo di mantenere lo stesso livello di prestazioni, cioè ε̄ ≤ ε0 = 100 µs, si ricava in forma chiusa la capacità necessaria:

   &thetas;̄        D/C
————  =  ———————  ≤ ε₀      ⇒     C ≥ (D/ε₀)(1 + λε₀)
 1 − ρ     1 − λD/C

C(1) = 108.8 Mbit/s          C(2) = 126.7 Mbit/s

Poiché la capacità si acquisisce solo in multipli di C0, il collegamento va dimensionato con C = 2C0 già all'istante t = 0, dato che C0 non basterebbe a coprire nemmeno il primo anno. Si verifica poi che 2C0 è sufficiente anche per tutto il secondo anno.

Nota del redattore

Questo è il modello di quesito più ricorrente del compito d'esame: si costruisce un M/M/1 dall'interfaccia di un router, si impone un requisito di qualità sul tempo di attesa, si inverte la formula rispetto a C e si arrotonda ai tagli di capacità commercialmente disponibili. Il passaggio delicato è ricordare che &thetas;̄ dipende da C, quindi C compare sia al numeratore sia al denominatore e va isolata con attenzione.

Verifica le tue conoscenze

Qual è la condizione di stabilità di un M/M/m e perché nel capitolo 5 non serviva?

A0 < m, cioè ρ = A0/m < 1. Nel capitolo 5 la catena era finita (troncata a m), quindi la somma di normalizzazione era sempre una somma finita e il sistema era sempre stabile. Qui la catena è infinita: se il traffico offerto supera la capacità di smaltimento la serie non converge e la coda cresce indefinitamente.

Che cosa calcola la formula C di Erlang e come si esprime tramite la formula B?

La probabilità che un utente in arrivo debba fare attesa, cioè che tutti gli m servitori siano occupati in un sistema con coda: C(m,A0) = Prob{k ≥ m}. Si calcola con C(m,A0) = mB(m,A0) / [m − A0(1 − B(m,A0))]. A parità di m e A0 vale sempre C > B.

Distingui η̄ ed ε̄ in un M/M/m e scrivi entrambe le formule.

η̄ è il tempo medio di attesa di un utente generico, mediato anche su chi non aspetta affatto: η̄ = C&thetas;̄/(m − A0). ε̄ è il tempo medio di attesa per chi va effettivamente in coda: ε̄ = &thetas;̄/(m − A0). Sono legate da η̄ = C ⋅ ε̄.

Come sono distribuiti i tempi di attesa in un M/M/m FIFO?

Entrambi esponenzialmente, con esponente mμ − λ, cioè la capacità di smaltimento residua quando tutti i servitori sono occupati. Per chi va in coda: Fε(t) = 1 − e−(mμ−λ)t. Per l'utente generico: Fη(t) = 1 − C e−(mμ−λ)t, dove il fattore C tiene conto della probabilità 1 − C di non aspettare affatto.

Come si dimensiona m imponendo che chi aspetta lo faccia per meno di ε0 con probabilità almeno π0?

Si impone 1 − e−(mμ−λ)ε0 ≥ π0, da cui mμ − λ ≥ −ln(1−π0)/ε0 e quindi m ≥ (1/μ)[λ − ln(1−π0)/ε0]. È una formula chiusa: non richiede di iterare sulle tabelle di Erlang.

Scrivi le probabilità di stato e i principali indici di un M/M/1.

Pk = (1−ρ)ρk, stabile per ρ < 1. Indici: A = ρ/(1−ρ), Aq = ρ²/(1−ρ), δ̄ = &thetas;̄/(1−ρ) = 1/(μ−λ), η̄ = ρ&thetas;̄/(1−ρ), ε̄ = &thetas;̄/(1−ρ). La probabilità di congestione, cioè di dover attendere, è semplicemente ρ.

Dimostra che P0 = 1 − ρ per un qualunque sistema a coda ergodico a singolo servitore.

Si osserva il sistema per un tempo T. Il servitore è occupato per B(T) = T(1−P0) e libero per I(T) = TP0. Le partenze sono d(T) = B(T)/E[&thetas;] = T(1−P0 e gli arrivi a(T) = λT. In equilibrio statistico d(T) = a(T), quindi T(1−P0)μ = λT e P0 = 1 − λ/μ = 1 − ρ. Non servono ipotesi di Poisson né di esponenzialità: solo ergodicità e medie finite.

Enuncia il teorema di Burke e la sua avvertenza.

Il processo delle partenze da un sistema con coda infinita è un processo di Poisson simile a quello degli arrivi, e il risultato vale anche per m > 1. L'avvertenza: anche se Burke vale, a valle di una coda a singolo servitore cade l'ipotesi di tempi di servizio indipendenti dagli arrivi, perché la coda serializza gli utenti legando la lunghezza di un pacchetto all'intervallo che lo separa dal successivo. L'approssimazione torna buona se il nodo a valle raccoglie traffico da molte sorgenti indipendenti.

Fra m code M/M/1 separate, un M/M/m e un M/M/1 m volte più veloce, quale è meglio e perché?

Il migliore è il terzo, l'M/M/1 con servitore m volte più veloce: serve un utente per volta ma in un tempo m volte inferiore, e ha traffico offerto ρ0 invece di 0. Il secondo (M/M/m) è intermedio: condivide la coda e quindi nessun servitore resta inattivo mentre qualcuno aspetta, ma ogni servizio resta lento. Il peggiore è il primo, perché m code separate non possono aiutarsi a vicenda: una può essere satura mentre un'altra è vuota.

In un M/M/1/L, perché non si può ottenere una probabilità di blocco piccola a piacere se A0 > 1?

Perché la memoria non crea capacità di smaltimento. Se il traffico offerto eccede la capacità del servitore, in media arriva più di quanto possa uscire, e nessuna dimensione di L può assorbire uno squilibrio permanente: si riesce solo a ritardare le perdite, non a evitarle. Aumentare L abbassa la probabilità di blocco fino a un asintoto positivo, non a zero.

Un router ha un'interfaccia a 100 Mbit/s, λ = 5000 pacchetti/s e pacchetti esponenziali di media 800 byte. Quanto attende chi va in coda?

&thetas;̄ = 8⋅800/(100⋅106) = 64 µs, quindi ρ = λ&thetas;̄ = 0.32. L'attesa per chi effettivamente va in coda è ε̄ = &thetas;̄/(1−ρ) = 64/0.68 ≈ 94 µs. Nota che la probabilità di doverci andare è ρ = 32%, quindi l'attesa media di un pacchetto generico è η̄ = ρε̄ ≈ 30 µs.

Perché centralizzare un call center riduce gli operatori ma aumenta la percentuale di chi attende?

Perché il criterio di qualità riguarda la durata dell'attesa, non la sua probabilità. Nel caso dell'esercizio 13 si passa da 60 operatori distribuiti a 23 centralizzati mantenendo lo stesso requisito su Prob{ε ≤ 3 min}, ma l'utilizzazione sale dal 24–40% all'83.5% e la probabilità di attendere passa da qualche punto percentuale al 31%. Si aspetta più spesso, ma non più a lungo.