L = λ × W
Найкорисніша формула в плануванні ємності
Для будь-якої стабільної черги, незалежно від її внутрішньої структури: L = λ × W, де:
- L = середня кількість предметів у системі (в процесі або у чатуванні)
- λ (лямбда) = середня швидкість прибуття (предметів на одиницю часу)
- W = середній час, який кожен предмет витрачає у системі
Геометричний прочитання: зобразіть λ по одній осі та W по іншій. Продукт L є об'ємом прямокутника, який вони утворюють. Планування ємності відбувається всередині цього прямокутника.
Чому це має значення: будь-які дві з трьох величин визначають третю. Якщо вимірювати черезпуск та затримку, ви знаєте зайомість. Якщо вимірювати зайомість та черезпуск, ви знаєте затримку. Закон є міцним: він застосовується до веб-запитань, столових ресторану, супермаркетів черг, та CPU-пайплайнів без змін.
Три конкретних приклади:
- Вебслужба обробляє 200 запитань/с з середньою затримкою 50 мс (0,05 с). L = 200 × 0,05 = 10 в польоті.
- Кав'ярня обслуговує 60 клієнтів/год з середнім часом перебування 15 хвилин (0,25 год). L = 60 × 0,25 = 15 клієнтів всередині.
- Пул задач обробляє 1500 запитань/с з середньою затримкою 200 мс (0,2 с). L = 1500 × 0,2 = 300 в польоті.
Наступство розміщення: кількість робітників / потоків / підключень рівня повинен бути принаймні L, щоб утримувати швидкість. Anything less means queue growth.
Чи зриває затримка понад 80% використання
Найважливіший графік у роботі
Графік використання на осі X (0% до 100%) та середній час очікування на осі Y. Форма є однією з найбільш важливих кривих у плануванні потужності.
Модель чергування M/M/1: для системи з випадковими прихідами (Poisson) та випадковими часами обслуговування (exponential), середній час очікування:
W_q = ρ / (μ × (1 - ρ))
де ρ - використання (0 до 1) та μ - швидкість обслуговування.
Форма кривої:
- При ρ = 0.5 (50% використов.), час очікування невеликий (1 час обслуговування).
- При ρ = 0.7 (70% використов.), час очікування ~2.3 часів обслуговування.
- При ρ = 0.8 (80% використов.), час очікування ~4 часи обслуговування.
- При ρ = 0.9 (90% використов.), час очікування ~9 часів обслуговування.
- При ρ = 0.95 (95% використов.), час очікування ~19 часів обслуговування.
- При ρ = 1.0 (100% використов.), час очікування безкінечний.
Нога: близько 80% використання, крива різко відхиляється. Понизу ноги, потужність комфортна; вище, затримка зростає швидше, ніж використання.
Практичне прочитання: максимально 70% використання для стабільного стану, ніколи 100%. 30% "пустої потужності" не є витратами; це ціна обмеженого часу затримки.
Розмірування через ногу
Два сценарії:
Сценарій A: 10 реплік, які працюють на 60% CPU. Latency p99 = 100 ms.
Сценарій B: той же флот, який працює на 90% CPU через зростання трафіку. p99 = 600 ms.
Той сам флот, той же код, лише використання змінилося.
Розмір і спрацювання разом
Синтез
Тепер ви можете застосувати закон Літтла як прямокутник, прочитати криву черги та її коліно, та зв’язати обидва з рішеннями щодо потужності.
Застосуйте обидва.
Повздовжній рівень обробки обробляє 2000 запитів/с з середньою затримкою 50 мс на репліку, потужність репліки 80 запитів/с при 70% CPU. Коефіцієнт спаду 2x; ви хочете вижити при 3 одночасних збоїв репліки.
Допоміжні Примітки
Допоміжні Примітки
Ця геометрія-ліярність перетворює основну лярню Stateless Horizontal Scaling як кількісну геометрію.
Наступна допоміжна лярня, geometry_of_ingress_egress_separation, перетворює розділення мережевого кордону як двосторонню графу з вершиною розрізу, яку видалення розрізу видаляє.
Добре зроблено.