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, щоб утримувати темп. Будь-яке менше значення призведе до зростання черги.
Чому затримки різко зростають при використанні понад 80%
Найважливіша крива в операційному управлінні
Побудуйте графік із рівнем використання на осі X (від 0% до 100%) та середнім часом очікування на осі Y. Форма цієї кривої є однією з найважливіших у плануванні потужностей.
Модель черги M/M/1: для системи з пуассонівськими приходами (випадковими) та експоненційним часом обслуговування (випадковим) середній час очікування:
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 реплік працюють із завантаженням CPU 60%. Затримка p99 = 100 мс.
Сценарій B: та сама мережа працює із завантаженням CPU 90% через зростання трафіку. p99 = 600 мс.
Та сама мережа, той самий код, змінилося лише навантаження.
Розмір та тригер разом
Синтез
Тепер ви можете застосовувати закон Літера як прямокутник, читати криву чергування та її коліно, а також пов'язувати обидва з рішеннями щодо потужності.
Застосуйте обидва.
Шар бекенду обробляє 2 000 зап/с із середньою затримкою 50 мс на репліку; потужність репліки — 80 зап/с при завантаженні CPU 70%. Коефіцієнт пікового навантаження — 2x; ви маєте забезпечити виживання системи при одночасному виході з ладу 3 реплік.
Додаткові нотатки
Додаткові нотатки
Цей урок з геометрії переосмислює головний урок Безстанове горизонтальне масштабування як кількісну геометрію.
Наступний супутній урок, geometry_of_ingress_egress_separation, переосмислює розділення на межі мережі як дводольний граф із вершиною розриву, яку цей розділ прибирає.
Молодець.