L = λ × W: En rektangel
Littles lag: Den mest användbara ekvationen i kapacitetsplanering
John Little bevisade 1961 att för alla stabila köer, oavsett intern struktur: L = λ × W, där:
- L = genomsnittligt antal objekt i systemet (kö + i service)
- λ (lambda) = genomsnittlig ankomsthastighet för objekt per tidsenhet
- W = genomsnittlig tid varje objekt tillbringar i systemet
Den geometriska läsningen: plotta ankomsthastighet λ på en axel & vistelsetid W på den andra. Produkten L är området för den rektangel de bildar. Kapacitetsplanering lever inom denna rektangel.
Varför det är viktigt: två av de tre storheterna bestämmer den tredje. Om du mäter genomströmning och latens vet du beläggning. Om du mäter beläggning och genomströmning vet du latens. Lagen är robust: den gäller webbförfrågningar, restaurangbord, snabbkörsköer och CPU-pipelines utan ändring.
Tre konkreta exempel:
- En webbtjänst hanterar 200 förfrågningar/sekund med genomsnittlig latens 50 ms (0,05 s). L = 200 × 0,05 = 10 förfrågningar i luften när som helst.
- En kaffebar serverar 60 kunder/timme med genomsnittlig vistelsetid 15 minuter (0,25 h). L = 60 × 0,25 = 15 kunder inne i genomsnitt.
- En fabriksmonteringslinje producerar 100 widgetar/timme och varje widget tar 2 timmar från början till slut. L = 100 × 2 = 200 widgetar under bearbetning.
Försörjningskonsekvens: om du kan dimensionera för L (samtidiga objekt i luften) har du dimensionerat för systemet. Antalet arbetartrådar, databasanslutningar eller kö slots härleds alla från L.
Dimensionering av en arbetarpool
Din videokodningsservice är dimensionerad för en genomsnittlig ankomsthastighet på 30 kodningsjobb per minut, var och en tar 90 sekunder från början till slut. Den nuvarande arbetarpolen har 30 arbetare.
Varför latensen exploderar efter 80% utnyttjande
Den viktigaste kurvan i kapacitetsplanering
Plotta utnyttjande på x-axeln (0% till 100%) och genomsnittlig latens på y-axeln. Den form som uppstår är en av de viktigaste kurvorna i verksamhet: den förklarar varför team siktar på utnyttjande långt under 100%, varför reserverad headroom inte är slöseri och varför system som körs 'effektivt' vid högt utnyttjande hasar över utan varning.
M/M/1-köningskurvan: för ett system med Poisson-ankomster (slumpmässiga) och exponentiella servicetider (slumpmässiga) följer den genomsnittliga väntetiden:
W_q = ρ / (μ(1-ρ))
där ρ (rho) är utnyttjandet (0 till 1) och μ är servicehastigheten. Nämnaren (1-ρ) är pointen: när ρ närmar sig 1 närmar sig nämnaren 0 och väntetiden närmar sig oändlighet.
Numeriska exempel (latensförhållande vs ρ för M/M/1):
- ρ = 0,5: latensförhållande 1,0 (baslinje)
- ρ = 0,7: latensförhållande ~2,3
- ρ = 0,8: latensförhållande ~4,0
- ρ = 0,9: latensförhållande ~9,0
- ρ = 0,95: latensförhållande ~19,0
- ρ = 0,99: latensförhållande ~99,0
Armbågen sitter omkring 70-80% utnyttjande. Under armbågen ökar latensen långsamt när belastningen ökar. Över armbågen exploderar latensen olinjärt. Det är därför den kanoniska SRE-regeln är: sikta på steady-state-utnyttjande under 80%, kör aldrig prolongerat över 90%.
Varför traditionella ops-team underskattar detta: en server vid 60% CPU 'ser sysselsatt ut' men har bekväm latensheadroom. En server vid 90% CPU 'ser produktiv ut' men är ett arbetsbelastningshopp bort från latenskatastrof. Den geometriska sanningen: kurvans lutning är det faktiska hotet, inte dess nuvarande y-värde.
Läsa kurvan
Ett team kör en tjänst vid 85% CPU-utnyttjande i steady state. Nuvarande p99-latens är 200 ms. De överväger att lägga till 30% mer trafik för att konsolidera arbetsbelastning från en annan tjänst som fasas ut.
Lutning, skärning & prognonskonen
Läsa tillväxt från en lutning
Prognostisering av efterfrågan reduceras (i många fall) till att dra rätt linje genom historiska data. De geometriska egenskaperna för den linjen: lutning, skärning och osäkerhetskonen kodar hela prognosen.
Linjär trend (y = mx + b): lämplig för korta fönster eller genuint linjära processer. Lutning m är tillväxthastigheten per tidsenhet. Skärning b är startvärdet. Användbar när tillväxten är stabil. Tenderar att underskatta när processen faktiskt är sammansatt.
Exponentiell trend (y = b × e^(mx)): lämplig för sammansatt tillväxt: viral adoption, användarens nätverkseffekter, multiplikativ säsongsvariation. På en log-skala y-axel blir exponentiell tillväxt linjär, vilket gör lutningsuppskattning enklare. Lutning m på log-skala är tillväxthastigheten per tidsenhet.
Bitvis linjär: lämplig när tillväxten har distinkta regimer. En startup kan växa långsamt i 18 månader, sedan ha en viral böjning som producerar 6 månaders explosiv tillväxt, sedan plateå. Tre linjära segment passar detta bättre än någon enskild kurva.
Prognonskonen: den centrala uppskattningen plus övre och nedre gränser, ritade som en vidgande kon in i framtiden. Konens bredd växer över tid eftersom osäkerhet ökar. En 4-veckors prognos kan ha ±10% gränser; en 12-månadsprognos har ofta ±50% eller mer.
Säsongsnedbrytning: verklig efterfrågan kombinerar trend + säsongscykel + brus. Statistiska bibliotek (statsmodels, Prophet) dekomponerar en serie i dessa tre komponenter, vilket tillåter att trenden projiceras separat från säsongsströlet. Geometriskt är trenden den underliggande driften, säsongsväxlingen är den periodiska krusningen på toppen och bruset är den återstående jitterbussen.
Att välja en trendmodell
Du har 24 månader med månatliga begärandevolymer. Månad 1-12 växte från 1M till 2M (linjär-utseende, +83K/månad). Månad 13-18 växte från 2M till 4M (brantare, +330K/månad). Månad 19-24 växte från 4M till 12M (mycket brantare fortfarande). Marknadsföring bekräftar att en viralt produktfunktion lanserades i månad 13 som körde böjningen.
Kapacitet vs efterfrågan som 2D-geometri
Plottet varje kapacitetsteam lever inuti
Plotta tid på x-axeln. Plotta efterfrågan och kapacitet på y-axeln som två separata linjer. Det vertikala gapet mellan dem vid någon tidpunkt är headroom. Det 2D-området mellan kurvorna är headroom-kuvertet.
Tre referensformer:
- Hälsosamt kuvert: kapacitetslinje förblir bekvämt över efterfrågelinje. Gapet kan minska under toppar men försvinner aldrig. Kuvertet är ett säkerhetsband.
- Stängande kuvert: kapaciteten växer långsammare än efterfrågan. Gapet blir snävrare över tid. Skärningspunkten i framtiden är när systemet tar slut på headroom: det datum då teamet måste lägga till kapacitet senast.
- Inverterat kuvert: efterfrågan överstiger kapaciteten. Systemet är på incidentterritorium. Den vertikala storleken på inversionen är underskottet som måste hanteras på något sätt (kö-överflöde, felfrekvenser, kundpåverkan).
Standardkapacitetsplangrafen plottar:
- Nylig efterfrågehistorik (hel blå linje)
- Prognostiserad efterfrågan med gränser (streckad linje + skuggad kon)
- Nuvarande kapacitet (hel grön linje)
- Planerade kapacitetsökning med leveransdatum (stegfunktion)
- Skärningsdatumet där prognostiserad efterfrågan korsar nuvarande kapacitet: detta är deadline för nästa försörjning
Den visuella beslutsregeln: håll stegfunktionen för kapacitet ovanför den övre gränsen för prognonskonen hela tiden. Provisionera inte till den centrala uppskattningen; provisionera till den övre gränsen. Kostnaden för överförsörjning är ändlig (viss ledig kapacitet); kostnaden för underförsörjning är obunden (förlorade användare, kaskadfel, rykteskada).
Läsa kuvertet
Din kapacitetsgraf visar: nuvarande efterfrågan är 1 500 RPS som växer 20% per månad. Nuvarande kapacitet är 2 500 RPS. En ny serverbatch (+1 500 RPS-kapacitet) anländer om 8 veckor. Prognosskonen har ±15% gränser vid 8-veckors horizont.
Geometri för kapacitet: Sammanfattning
Former som förutsäger framtiden
Du har gått igenom fyra geometriska strukturer som löper under kapacitetsplanering:
- Littles lag (L = λ × W) som området för en rektangel som definierar steady-state beläggning
- Köningskurvan med sin armbåge vid 80% utnyttjande, kodande den olinjära kostnaden för att köra het
- Trendlutningar och prognoskonor som förvandlar historiska data till handlingsbara projektioner
- Headroom-kuvert som 2D-plottar av kapacitet kontra efterfrågan, med skärningsdatum som markerar försörjningsdeadlines
Kapacitetsplanering är, på sin visuella kärna, disciplinen att hålla en kurva säkert ovanför en annan över tid. Siffrorna är klädsel; formerna bär sanningen. En kapacitetsingenjör som läser köningskurvan korrekt kommer att fånga problem som en CPU-instrumentpanel döljer tills systemet redan brinner.
Följeslessonens kapacitetsplanering täckte praktieken: mätning, prognostisering, taktest, headroom och skalning. Denna lektion täckte geometrin under dem. Tillsammans bildar de det visuella och analytiska byggstillståndet för att köra tjänster som skalas utan överraskning.