Teoria delle code e dimensionamento dei sistemi
Perche i sistemi si congestionano
Un'API che rallenta sotto carico, una linea di produzione che accumula pezzi in attesa, un servizio che va in timeout: sono tutti problemi di code. La teoria delle code fornisce gli strumenti matematici per capire e dimensionare questi sistemi.
La legge di Little
Il risultato piu importante e anche il piu semplice. La legge di Little lega tre grandezze:
dove:
- e il numero medio di elementi nel sistema;
- e il tasso medio di arrivo;
- e il tempo medio di permanenza nel sistema.
E sorprendentemente generale: vale per qualsiasi sistema stabile, indipendentemente dalla distribuzione degli arrivi. Se un'API riceve 100 richieste al secondo e ciascuna resta nel sistema 0.2 secondi, in media ci sono richieste in elaborazione.
Il modello M/M/1
Il modello base e l'M/M/1: arrivi poissoniani con tasso , tempi di servizio esponenziali con tasso , un solo servente. Il parametro chiave e l'utilizzo:
Perche il sistema sia stabile serve . Il tempo medio di permanenza e:
L'insidia della saturazione
Ecco il punto cruciale: il tempo di attesa non cresce in modo lineare con il carico, ma esplode quando si avvicina a 1. Il numero medio in coda e:
Con abbiamo ; con salta a ; con arriva a . Questo spiega perche i sistemi sembrano andare bene fino a un certo punto, poi collassano improvvisamente.
def coda_mm1(lmbda, mu):
rho = lmbda / mu
if rho >= 1:
return {"stabile": False}
return {
"stabile": True,
"utilizzo": rho,
"in_coda": rho**2 / (1 - rho),
"tempo_sistema": 1 / (mu - lmbda),
}
print(coda_mm1(80, 100)) # rho 0.8
print(coda_mm1(95, 100)) # rho 0.95 -> attesa molto maggiore
Implicazioni pratiche
- Non puntare al 100 percento di utilizzo: lasciare margine (es. ) e ingegneria, non spreco.
- Aggiungere serventi (scalare orizzontalmente) sposta il punto di saturazione.
- Ridurre la variabilita dei tempi di servizio migliora le code piu di quanto si pensi.
Conclusione
La teoria delle code trasforma intuizioni vaghe in numeri concreti per dimensionare API, microservizi e processi produttivi. In MUSTNODE la usiamo per progettare sistemi che reggono il carico reale, evitando i colli di bottiglia prima che si presentino in produzione.
Articoli correlati
Altri approfondimenti dalla categoria Dati & AI.
Inferenza bayesiana e modelli probabilistici nell'industria
Come usare il teorema di Bayes e i modelli probabilistici per stimare lo stato di processi industriali, aggiornare le previsioni e gestire l'incertezza dei dati di campo.
La matematica del monitoraggio energetico
Le formule e i modelli alla base del monitoraggio energetico: potenza, energia, fattore di potenza e analisi dei consumi, con esempi applicati a QTEP.
Reti neurali per la manutenzione predittiva
Dai dati dei sensori alla previsione dei guasti: come funzionano le reti neurali, la discesa del gradiente e l'applicazione alla manutenzione predittiva.