L = λ × W
Det värdefullaste ekvationen i kapacitetsplanering
För någon stabil kö, oavsett dess inre struktur: L = λ × W, där:
- L = genomsnittlig antal objekt i systemet (i gång eller i kö)
- λ (lambda) = genomsnittlig ankomstfrekvens (objekt per tidsenhet)
- W = genomsnittlig tid varje objekt tillbringar i systemet
Den geometriska läsningen: plotta λ på en axel och W på den andra. Produkten L är area av rektangel de bildar. Kapacitetsplanering sker inom denna rektangel.
Varför det är viktigt: två av de tre kvantiteterna bestämmer den tredje. Mäter du genomslag och latens, vet du upptagningsgrad. Mäter du upptagningsgrad och genomslag, vet du latens. Lagen är robust: den gäller för webbbegäranden, restaurangbord, stormarknadsköer och CPU-pipeliner utan ändring.
Tre konkreta exempel:
- En webbtjänst hanterar 200 begäranden per sekund med genomsnittlig latens 50 ms (0,05 s). L = 200 × 0,05 = 10 i gång.
- En kaffeshop serverar 60 kunder per timme med genomsnittlig uppehållstid 15 minuter (0,25 h). L = 60 × 0,25 = 15 kunder inne.
- En bakre pool hanterar 1500 begäranden per sekund med genomsnittlig latens 200 ms (0,2 s). L = 1500 × 0,2 = 300 i gång.
Dimensioneringens implikation: arbetarkraftens antal / trådars antal / anslutningars antal i ett skikt måste vara minst L för att hålla takten. Något mindre innebär köväxt.
Varför latens exploderar efter 80% utnyttjande
Den viktigaste kurvan i drift
Plotta utnyttjande på x-axeln (0% till 100%) & genomsnittlig väntetid på y-axeln. Formen är en av de mest betydelsefulla kurvorna i kapacitetsplanering.
M/M/1-koherensmodellen: för ett system med Poisson-ankomster ( slumpmässiga ) & exponentiella service-tider ( slumpmässiga ), genomsnittlig väntetid:
W_q = ρ / (μ × (1 - ρ))
där ρ är utnyttjande (0 till 1) & μ är servicehastighet.
Kurvens form:
- Vid ρ = 0.5 (50% utnyttjande), väntetiden är liten (1 service-tid).
- Vid ρ = 0.7 (70% utnyttjande), väntetiden är ~2.3 service-tider.
- Vid ρ = 0.8 (80% utnyttjande), väntetiden är ~4 service-tider.
- Vid ρ = 0.9 (90% utnyttjande), väntetiden är ~9 service-tider.
- Vid ρ = 0.95 (95% utnyttjande), väntetiden är ~19 service-tider.
- Vid ρ = 1.0 (100% utnyttjande), väntetiden är obegränsad.
Knäet: runt 80% utnyttjande, kurvan böjer kraftigt. Under knäet är kapaciteten bekväm; över knäet stiger latensen snabbare än utnyttjandet gör.
Praktiskt läsande: sikta på 70% utnyttjande för ett jämviktstillstånd, aldrig 100%. De 30% 'luftfickan' är inte slöseri; det är priset för begränsad latens.
Storlek över knäet
Två scenarier:
Scenario A: 10 repliker som kör 60% CPU. Latency p99 = 100 ms.
Scenario B: samma flotta som kör 90% CPU på grund av trafikökning. p99 = 600 ms.
Samma flotta, samma kod, endast utnyttjandet ändras.
Storlek & Utlösning Tillsammans
Sammanfattning
Du kan nu tillämpa Little's lag som ett rektangel, läsa av kökurvan & dess knä, och koppla båda till kapacitetsbeslut.
Tillämpa båda.
En bakre skikt hanterar 2 000 begäranden per sekund med genomsnittlig latens 50 ms per replika kapacitet 80 begäranden per sekund vid 70% CPU. Överföringsfaktor 2x; du vill överleva 3 samtidiga replikafel.
Kompletterande Notiser
Kompletterande Notiser
Denna geometri-undervisning omformar den Stateless Horizontal Scaling huvudundervisningen till kvantitativ geometri.
Nästa kompanjong, geometry_of_ingress_egress_separation, omformar nätgränsens delning till ett bipartit graf med ett knutpunktsverktyg som delningen tar bort.
Bra gjort.