L = λ × W
La più utile equazione nella pianificazione della capacità
Per qualsiasi coda stabile, indipendentemente dalla sua struttura interna: L = λ × W, dove:
- L = numero medio di elementi nel sistema (in corso di lavorazione o in attesa)
- λ (lambda) = tasso medio di arrivo (elementi per unità di tempo)
- W = tempo medio trascorso da ciascun elemento nel sistema
La lettura geometrica: traccia λ su un asse e W sull'altro. Il prodotto L è l'area del rettangolo che formano. La pianificazione della capacità vive all'interno di questo rettangolo.
Perché è importante: qualsiasi due delle tre grandezze determina la terza. Misuri throughput e latenza, sapete occupazione. Misurare occupazione e throughput, sapete la latenza. La legge è robusta: si applica alle richieste web, alle sedute di un ristorante, alle code del supermercato e alle pipeline del processore senza modifiche.
Tre esempi concreti:
- Un servizio web gestisce 200 richieste al secondo con latenza media di 50 ms (0,05 s). L = 200 × 0,05 = 10 in corso di lavorazione.
- Un bar gestisce 60 clienti all'ora con tempo di permanenza medio di 15 minuti (0,25 h). L = 60 × 0,25 = 15 clienti all'interno.
- Un pool back-end gestisce 1500 richieste al secondo con latenza media di 200 ms (0,2 s). L = 1500 × 0,2 = 300 in corso di lavorazione.
Implicazione di dimensionamento: il numero di lavoratori / thread / connessioni di un livello deve essere almeno L per mantenere il ritmo. Qualcosa di meno significa crescita della coda.
Perché la latenza esplode oltre il 80% di utilizzo
La curva più importante nelle operazioni
Tracciato dell'utilizzo sullassida x (0% a 100%) & tempo medio di attesa sulla y. La forma è una delle curve più importanti nella pianificazione delle capacità.
Modello di coda M/M/1: per un sistema con arrivi di Poisson (casuali) & tempi di servizio esponenziali (casuali), tempo medio di attesa in coda:
W_q = ρ / (μ × (1 - ρ))
dove ρ è l'utilizzo (0 a 1) & μ è la velocità di servizio.
Forma della curva:
- A ρ = 0.5 (50% di utilizzo), il tempo di attesa è piccolo (1 tempo di servizio).
- A ρ = 0.7 (70% di utilizzo), il tempo di attesa è ~2.3 tempi di servizio.
- A ρ = 0.8 (80% di utilizzo), il tempo di attesa è ~4 tempi di servizio.
- A ρ = 0.9 (90% di utilizzo), il tempo di attesa è ~9 tempi di servizio.
- A ρ = 0.95 (95% di utilizzo), il tempo di attesa è ~19 tempi di servizio.
- A ρ = 1.0 (100% di utilizzo), il tempo di attesa è infinito.
Ginocchio: intorno all'80% di utilizzo, la curva si piega bruscamente. Sotto il ginocchio, la capacità è confortevole; sopra, la latenza aumenta più velocemente dell'utilizzo.
Lettura pratica: mira a un utilizzo del 70% per uno stato stazionario, mai al 100%. Lo 'spazio' del 30% non è sprecato; è il prezzo della latenza limitata.
Dimensionamento oltre il Ginocchio
Due scenari:
Scenario A: 10 repliche in esecuzione al 60% di CPU. Latenza p99 = 100 ms.
Scenario B: stesso fleet in esecuzione al 90% di CPU a causa della crescita del traffico. p99 = 600 ms.
Stesso fleet, stesso codice, cambiato solo l'utilizzo.
Dimensionare e Triggere insieme
Synthesis
Puoi ora applicare la legge di Little come un rettangolo, leggere la curva della coda e il suo ginocchio, e collegare entrambi alle decisioni di capacità.
Applica entrambi.
Un livello back-end gestisce 2.000 richieste al secondo con latenza media di 50 ms per replica, capacità 80 richieste al secondo a 70% di utilizzo del CPU. Fattore di sopravvivenza 2x; vuoi sopravvivere a 3 fallimenti simultanei dei replicanti.
Note di accompagnamento
Note di accompagnamento
Questa geometria-di lezione riformula il Stateless Horizontal Scaling lezione principale come geometria quantitativa.
La prossima compagna, geometry_of_ingress_egress_separation, riformula lo split della frontiera di rete come un grafo bipartito con un vertice di taglio che lo split rimuove.
Ben fatto.