L = λ × W
Das nützlichste Gleichung in der Kapazitätsplanung
Für jede stabile Warteschlange, unabhängig von ihrer internen Struktur: L = λ × W, wo:
- L = durchschnittliche Anzahl von Elementen im System (in Bearbeitung oder wartend)
- λ (lambda) = durchschnittliche Ankunftsrate (Elemente pro Zeiteinheit)
- W = durchschnittliche Zeit, die jedes Element im System verbringt
Die geometrische Lesart: Zeichne λ auf einer Achse und W auf der anderen. Das Produkt L ist die Fläche des daraus entstandenen Rechtecks. Die Kapazitätsplanung findet sich innerhalb dieses Rechtecks.
Warum es wichtig ist: Zwei der drei Größen bestimmen die dritte. Messen Sie Durchsatz und Latenz, wissen Sie die Auslastung. Messen Sie Auslastung und Durchsatz, wissen Sie die Latenz. Das Gesetz ist robust: Es gilt für Web-Anforderungen, Restauranttische, Supermarkt-Queues und CPU-Pipelines ohne Änderung.
Drei konkrete Beispiele:
- Eine Webdienst verarbeitet 200 Anforderungen pro Sekunde mit einer durchschnittlichen Latenz von 50 ms (0,05 s). L = 200 × 0,05 = 10 im Gange.
- Eine Kaffeebar bedient 60 Kunden pro Stunde mit einer durchschnittlichen Verweildauer von 15 Minuten (0,25 h). L = 60 × 0,25 = 15 Kunden drinnen.
- Eine Backend-Pool verarbeitet 1500 Anforderungen pro Sekunde mit einer durchschnittlichen Latenz von 200 ms (0,2 s). L = 1500 × 0,2 = 300 im Gange.
Auswirkungen auf die Größenwahl: Die Anzahl der Arbeiter / Threads / Verbindungen einer Schicht muss mindestens L betragen, um mitzuhalten. Weniger führt zu Wachstum der Warteschlange.
Warum die Latenz explosionsartig ansteigt, wenn die Auslastung 80% übersteigt
Die wichtigste Kurve in den Betriebsabläufen
Plotnutzung auf der x-Achse (0% bis 100%) & durchschnittliche Wartezeit auf der y-Achse. Die Form ist eine der wichtigsten Kurven in der Kapazitätsplanung.
Das M/M/1-Warteschlangenmodell: für ein System mit Poisson-Beiträgen (zufällig) & exponentielle Servicezeiten (zufällig), durchschnittliche Wartezeit:
W_q = ρ / (μ × (1 - ρ))
wo ρ die Auslastung (0 bis 1) & μ die Serviceleistung ist.
Die Form der Kurve:
- Bei ρ = 0,5 (50% Auslastung) ist die Wartezeit gering (1 Servicezeit).
- Bei ρ = 0,7 (70% Auslastung) beträgt die Wartezeit etwa 2,3 Servicezeiten.
- Bei ρ = 0,8 (80% Auslastung) beträgt die Wartezeit etwa 4 Servicezeiten.
- Bei ρ = 0,9 (90% Auslastung) beträgt die Wartezeit etwa 9 Servicezeiten.
- Bei ρ = 0,95 (95% Auslastung) beträgt die Wartezeit etwa 19 Servicezeiten.
- Bei ρ = 1,0 (100% Auslastung) beträgt die Wartezeit unendlich.
Das Knie: um die 80% Auslastung herum biegt die Kurve scharf ab. Unter dem Knie ist die Kapazität angenehm; über dem steigt die Latenz schneller als die Auslastung.
Praktische Lesart: Ziel 70% Auslastung für den Zustand des Gleichgewichts, nie 100%. Die 30% 'Freiraum' sind kein Verschwendung; es ist der Preis für begrenzte Latenz.
Größenanpassung über das Knie
Zwei Szenarien:
Szenario A: 10 Replikate, die 60% CPU nutzen. Latenz p99 = 100 ms.
Szenario B: gleiche Flotte, die aufgrund des Verkehrsanstiegs 90% CPU nutzt. p99 = 600 ms.
Gleiche Flotte, gleicher Code, nur die Auslastung wurde geändert.
Größe und Auslöser zusammen
Synthese
Sie können nun Little's Gesetz als Rechteck anwenden, die Warteschlange lesen und deren Knietiefe, und beide mit Kapazitätsentscheidungen verbinden.
Wenden Sie beide an.
Ein Backend-Tier verarbeitet 2.000 Anforderungen pro Sekunde mit einer durchschnittlichen Latenz von 50 ms pro Replika mit einer Kapazität von 80 Anforderungen pro Sekunde und 70% CPU-Auslastung. Surge-Faktor 2x; Sie möchten 3 gleichzeitige Replika-Fehler überleben.
Kommilitonennotizen
Kommilitonennotizen
Diese Geometrie-Lektion stellt die Staatlose horizontale Skalierung-Hauptlektion quantitativ als Geometrie dar.
Die nächste Begleitlektion, geometry_of_ingress_egress_separation, stellt die Netzwerk-Grenze als bipartites Graph mit einem Schnittpunkt dar, den die Trennung entfernt.
Gut gemacht.