L = λ × W
Самое полезное уравнение в планировании ёмкости
Для любой стабильной очереди, независимо от её внутренней структуры: L = λ × W, где:
- L = среднее количество элементов в системе (в обработке или в ожидании)
- λ (лямбда) = средняя интенсивность поступления (элементов за единицу времени)
- W = среднее время, которое каждый элемент проводит в системе
Геометрическая интерпретация: постройте график с λ на одной оси и W на другой. Произведение L представляет собой площадь прямоугольника, который они образуют. Планирование мощности заключается именно в этом прямоугольнике.
Почему это важно: любые два из трех величин определяют третью. Измерив пропускную способность и задержку, вы узнаете занятость. Измерив занятость и пропускную способность, вы узнаете задержку. Закон устойчив: он применим к веб-запросам, столам в ресторане, очередям в супермаркете и конвейерам ЦП без каких-либо изменений.
Три конкретных примера:
- Веб-сервис обрабатывает 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, чтобы успевать за нагрузкой. Если их меньше, очередь будет расти.
Почему задержка резко возрастает при загрузке выше 80%
Самая важная кривая в операционной деятельности
Постройте загрузку на оси X (от 0% до 100%) и среднее время ожидания на оси Y. Форма этой кривой является одной из самых значимых в планировании пропускной способности.
Модель очереди M/M/1: для системы с пуассоновскими поступлениями (случайными) и экспоненциальными временами обслуживания (случайными) среднее время ожидания:
W_q = ρ / (μ × (1 - ρ))
где ρ — это загрузка (от 0 до 1), а μ — интенсивность обслуживания.
Форма кривой:
- При ρ = 0.5 (50% загрузки) время ожидания мало (равно одному времени обслуживания).
- При ρ = 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 реплик работают с загрузкой CPU 60%. Латентность p99 = 100 мс.
Сценарий B: тот же флот работает с загрузкой CPU 90% из-за роста трафика. p99 = 600 мс.
Тот же флот, тот же код, изменилась только загрузка.
Размер и триггер вместе
Синтез
Теперь вы можете применять закон Литтла как прямоугольник, читать кривую очередей и её «колено» и связывать оба аспекта с решениями о пропускной способности.
Применяйте оба.
Слой бэкенда обрабатывает 2 000 запросов/с с средней задержкой 50 мс; пропускная способность одного реплики составляет 80 запросов/с при загрузке CPU 70%. Коэффициент пиковой нагрузки — 2x; требуется обеспечить устойчивость к одновременному отказу 3 реплик.
Сопроводительные заметки
Сопроводительные заметки
Этот урок по геометрии переосмысливает основной урок Бесстатусное горизонтальное масштабирование в виде количественной геометрии.
Следующий спутник, geometry_of_ingress_egress_separation, переосмысливает разделение на границе сети как двудольный граф с вершиной-разделителем, который устраняется этим разделением.
Отличная работа.