L = λ × W
Najbardziej użyteczne równanie w planowaniu pojemności
Dla dowolnej stabilnej kolejki, niezależnie od jej wewnętrznej struktury: L = λ × W, gdzie:
- L = średnia liczba elementów w systemie (w trakcie przetwarzania lub oczekujących)
- λ (lambda) = średnia intensywność przychodzenia (liczba elementów na jednostkę czasu)
- W = średni czas, jaki każdy element spędza w systemie
Geometria interpretacji: narysuj λ na jednej osi, a W na drugiej. Iloczyn L to pole prostokąta, który tworzą. Planowanie pojemności mieści się wewnątrz tego prostokąta.
Dlaczego to ma znaczenie: dowolne dwie z trzech wielkości determinują trzecią. Mierz przepustowość i opóźnienie, a poznasz obsadzenie. Mierz obsadzenie i przepustowość, a poznasz opóźnienie. Prawo jest odporne: dotyczy żądań webowych, stolików w restauracji, kolejek w supermarketach i potoków procesorów (CPU) bez żadnych modyfikacji.
Trzy konkretne przykłady:
- Usługa webowa obsługuje 200 żądań/s przy średnim opóźnieniu 50 ms (0,05 s). L = 200 × 0,05 = 10 żądań w trakcie przetwarzania.
- Kawiarnia obsługuje 60 klientów/godzinę przy średnim czasie pobytu 15 minut (0,25 h). L = 60 × 0,25 = 15 klientów wewnątrz.
- Pool backendowy obsługuje 1500 żądań/s przy średnim opóźnieniu 200 ms (0,2 s). L = 1500 × 0,2 = 300 żądań w trakcie przetwarzania.
Wpływ na rozmiarowanie: liczba workerów / wątków / połączeń warstwy musi wynosić co najmniej L, aby nadążyć. Mniejsza liczba oznacza wzrost kolejki.
Dlaczego opóźnienia gwałtownie rosną powyżej 80% wykorzystania
Najważniejsza krzywa w operacjach
Nanieś wykorzystanie na oś X (od 0% do 100%) oraz średni czas oczekiwania na oś Y. Jej kształt to jedna z najważniejszych krzywych w planowaniu pojemności.
Model kolejkowy M/M/1: dla systemu z przychodami Poissona (losowymi) oraz czasami obsługi wykładniczymi (losowymi), średni czas oczekiwania:
W_q = ρ / (μ × (1 - ρ))
gdzie ρ to wykorzystanie (od 0 do 1), a μ to tempo obsługi.
Kształt krzywej:
- Przy ρ = 0,5 (50% wykorzystania) czas oczekiwania jest niewielki (1 czas obsługi).
- Przy ρ = 0,7 (70% wykorzystania), czas oczekiwania wynosi ~2,3 czasu obsługi.
- Przy ρ = 0,8 (80% wykorzystania), czas oczekiwania wynosi ~4 czasu obsługi.
- Przy ρ = 0,9 (90% wykorzystania), czas oczekiwania wynosi ~9 czasu obsługi.
- Przy ρ = 0,95 (95% wykorzystania), czas oczekiwania wynosi ~19 czasu obsługi.
- Przy ρ = 1,0 (100% wykorzystania), czas oczekiwania jest nieskończony.
Kolano: w okolicach 80% wykorzystania krzywa ostro się załamuje. Poniżej kolana pojemność jest komfortowa; powyżej, opóźnienia rosną szybciej niż wykorzystanie.
Praktyczna interpretacja: celuj w 70% wykorzystania dla stanu ustalonego, nigdy w 100%. 30% „zapasu” nie jest marnotrawstwem; to cena ograniczonych opóźnień.
Rozmiarowanie w okolicy „kolana” krzywej
Dwa scenariusze:
Scenariusz A: 10 replik działających przy 60% obciążeniu CPU. Opóźnienie p99 = 100 ms.
Scenariusz B: ta sama flota działająca przy 90% obciążeniu CPU z powodu wzrostu ruchu. p99 = 600 ms.
Ta sama flota, ten sam kod, zmieniło się tylko obciążenie.
Wymiarowanie i wyzwalacze w praktyce
Synteza
Teraz możesz stosować prawo Little’a jako prostokąt, odczytywać krzywą kolejkową i jej kolano oraz łączyć oba te elementy z decyzjami dotyczącymi pojemności.
Zastosuj oba.
Warstwa backendowa obsługuje 2 000 żądań/s, przy średnim opóźnieniu 50 ms na replikę o wydajności 80 żądań/s przy 70% obciążeniu CPU. Współczynnik szczytu (surge) wynosi 2x; chcesz przetrwać jednoczesne awarie 3 replik.
Notatki towarzyszące
Notatki towarzyszące
Ta lekcja z zakresu geometrii przekształca główną lekcję Bestanowego Skalowania Poziomowego w ilościową geometrię.
Następny towarzysz, geometry_of_ingress_egress_separation, przekształca podział granicy sieci w graf dwudzielny z wierzchołkiem cięcia, który ten podział usuwa.
Bardzo dobrze.