L = λ × W
Самый Удобный Уравнение в Планировании Капацитета
Для любого стабильного очереди, независимо от ее внутренней структуры: L = λ × W, где:
- L = среднее количество элементов в системе (в процессе или в ожидании)
- λ (lambda) = средняя скорость прибытия (элементов в единицу времени)
- W = среднее время пребывания каждого элемента в системе
Геометрическое прочтение: нарисуйте λ по одной оси и W по другой. Продукт L - это площадь прямоугольника, который они образуют. Планирование мощности живет внутри этого прямоугольника.
Почему это важно: любые два из трех количеств определяют третье. Измерьте черезпуск и задержку, и вы знаете загрузку. Измерьте загрузку и черезпуск, и вы знаете задержку. Закон устойчив: он применяется к веб-запросам, столовым в ресторане, очередям в супермаркете и CPU-пайплайнам без изменений.
Три конкретных примера:
- Веб-услуга обрабатывает 200 req/s с средней задержкой 50 ms (0.05 с). L = 200 × 0.05 = 10 в процессе.
- Кофейня обслуживает 60 клиентов/час с средней продолжительностью пребывания 15 минут (0,25 ч). L = 60 × 0,25 = 15 клиентов внутри.
- Пул задач обрабатывает 1500 req/s с средней задержкой 200 ms (0,2 с). L = 1500 × 0,2 = 300 в процессе.
Следствие размерности: количество рабочих, количество потоков, количество подключений слоя должно быть не менее L, чтобы поддерживать скорость. Любое меньшее значение означает рост очереди.
Почему Задержка Растет За 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, преобразует разделение сетевой границы в двудольное графическое представление с вершиной разрыва, которую удаляет разделение.
Хорошая работа.