Burstable EC2 VPN: кредити CPU Standard чи Unlimited?
Один режим обмежує на базовому рівні, інший продовжує роботу і може виставити вам рахунок. Порахуйте арифметику кредитів, перш ніж маленька інстанція стане вашим шлюзом.
Невеликий VPN-шлюз проходить тест швидкості, здається нормальним, а після обіду починає деградувати. Інстанція не брехала під час тесту; вона витрачала кредити, зароблені в простої. Burstable-інстанції створені саме для цього, тому короткий benchmark погано передбачає цілий день передачі. Два режими кредитів ще й відмовляють по-різному, і вибір між ними — це справжнє рішення.
Звідки тест швидкості взяв результат
Один кредит CPU — це один vCPU, що працює на повному завантаженні одну хвилину. Burstable-інстанція заробляє кредити зі швидкістю свого базового рівня й витрачає їх, коли перевищує цей рівень. Простійна ніч накопичує баланс; зайнятий ранок його витрачає.
Тому перший тест виглядає добре. Інстанція мала накопичений бюджет, витратила його на шифрування й повідомила здорову швидкість. Ніщо в результаті не говорить, що станеться, коли баланс досягне нуля. Benchmark виміряв сплеск, а сплеск — це те, що інстанція має забезпечувати. Він жодного разу не виміряв усталений стан, на який ви збираєтеся покластися.
Арифметика, яку потрібно виконати
Вхідні дані — відсоток базового рівня на vCPU, кількість vCPU, накопичений баланс і очікуване навантаження. Лише для ілюстрації візьмімо гіпотетичну інстанцію з двома vCPU, базовим рівнем десять відсотків на vCPU, 24 накопиченими кредитами й одним повністю зайнятим vCPU, поки другий простоює. Ці числа — оголошені вхідні дані, а не специфікація конкретного розміру інстанції.
Earn rate: 2 x 10% x 60 = 12 credits/hour
Workload usage: 1 x 100% x 60 = 60 credits/hour
Net draw: 60 - 12 = 48 credits/hour
Accrued budget: 24 / 48 = 0.5 hoursЗа цих припущень бюджет зникає приблизно за пів години. Фонова робота, змінне навантаження й власна бухгалтерія інстанції зсувають результат, і ніщо з цього не передбачає пропускну здатність VPN. Воно передбачає, коли почне позначатися усталене обмеження.
Зверніть увагу й на друге прочитання: у цьому прикладі один зайнятий vCPU — це приблизно половина сукупної ємності CPU. Помірний загальний відсоток може приховувати насичене ядро, тому дивіться на поведінку за ядрами поруч із цифрами кредитів.
Standard і Unlimited: той самий нуль, інше значення
У режимі Standard вичерпаний баланс обмежує усталену роботу CPU у бік базового рівня. Інстанція продовжує працювати, лише повільніше, і стеля передбачувана. У режимі Unlimited інстанція може й далі брати надлишкові кредити після того, як баланс досяг нуля, а усталене використання вище базового рівня може спричиняти списання за правилами обліку сервісу.
Отже, CPUCreditBalance, що дорівнює нулю, означає обмеження в одному режимі й можливий рахунок в іншому. Це все порівняння, і саме тому читати метрику без режиму оманливо.
Надлишок теж не простий рахунок за кожен кредит. Пізніша робота нижче базового рівня може погашати надлишкове споживання, і діють інші умови списань. Перевірте налаштований режим і чинні правила сервісу, а не покладайтеся на твердження про безкоштовний рівень зі старої публікації в блозі.
За чим стежити під час реальної роботи
Записуйте CPUCreditUsage і CPUCreditBalance поряд із тривалістю та швидкістю передачі. У Unlimited додайте CPUSurplusCreditBalance і CPUSurplusCreditsCharged. Посібник AWS з моніторингу кредитів CPU пояснює, що повідомляє кожен із них і як часто.
Повторіть тест із репрезентативною паралельністю й достатньою тривалістю, щоб побачити тренд, і запишіть початковий баланс. Простійний ранок і зайнятий день — не той самий експеримент, навіть з однаковими командами.
Обмеження, які не є CPU
Пропускна здатність мережі має власний базовий рівень і поведінку сплесків, а обмеження на пакети за секунду чи з'єднання можуть спрацювати раніше за CPU. Пам'ять важлива, коли реалізація VPN зберігає стан на кожне з'єднання, і маленька інстанція може вичерпати її значно раніше, ніж кредити.
Тож здоровий баланс кредитів доводить одне: бюджет CPU не є поточним обмеженням. Він нічого не каже про мережевий шлях і нічого не каже про те, що буде за подвоєної паралельності. Стежте за мережевими метриками в тому самому вікні, що й метрики кредитів, щоб падіння пропускної здатності мало ймовірну причину, а не теорію.
Свідомий вибір базового рівня
Використовуйте виміряне усталене навантаження, щоб вибрати базовий рівень, або явно прийміть сплески й закладіть їх у бюджет. Обидві відповіді захищені, коли записані; жодна не захищена, коли виведена з чужого успішного відеопотоку.
Якщо шлюз несе навантаження, ставтеся до режиму кредитів як до частини плану ємності, а не як до налаштування за замовчуванням, яке ви жодного разу не відкривали. Обраний режим — це відмова, яку ви можете передбачити.