Перейти к содержимому

Runtime-биллинг: формулы и переменные

Эта страница для точной проверки расчёта: что агрегируется, как применяются лимиты, как получается итоговая сумма.

Нормативная публичная версия методики: Pricing Appendix (Runtime).

За расчётный период агрегируются счётчики:

  • invocation_count
  • cpu_us
  • memory_mb_us (интеграл memory_mb × время)
  • ready_us
  • frozen_us
  • reserved_us
  • streaming_us (если включено)
  • websocket_us (если включено)

Все raw-счётчики хранятся без округления.

Q_invocations = SUM(invocation_count)
Q_cpu_seconds = SUM(cpu_us) / 1_000_000
Q_memory_gb_seconds = SUM(memory_mb_us) / (1024 * 1_000_000)
Q_residency_seconds = (SUM(ready_us) + SUM(frozen_us) + SUM(reserved_us)) / 1_000_000
Q_streaming_seconds = SUM(streaming_us) / 1_000_000
Q_websocket_seconds = SUM(websocket_us) / 1_000_000

Для любой метрики M:

Q_overage_M = max(0, Q_used_M - Limit_M)

Где Limit_M — включённый лимит плана по метрике.

Amount_M = Q_overage_M * Rate_M
Blocks_M = ceil(Q_overage_M / BlockSize_M)
Amount_M = Blocks_M * BlockRate_M

Итог по Runtime-части:

RuntimeSubtotal = Σ Amount_M
InvoiceTotal = RuntimeSubtotal + Adjustments - Credits + Taxes

Где:

  • Adjustments — ручные/системные корректировки
  • Credits — промокредиты и компенсации
  • Taxes — налоги по профилю биллинга
  1. Raw-счётчики: без округления.
  2. Q_*: точность не менее 6 знаков после запятой.
  3. Для per_block: сначала ceil блоков, потом умножение.
  4. Каждый Amount_M: round_half_up до денежной точности.
  5. Общая сумма: после суммирования line items и применений корректировок.

CRU может рассчитываться как аналитический индикатор нагрузки (для сравнения проектов/релизов), но обычно не является единственной billable-метрикой.

Пример совместимого индикатора:

CRU_compat = Σ(runtime_seconds_i * configured_vcpu_i * configured_memory_gb_i)

Пусть за период:

  • Q_cpu_seconds = 12,800, лимит 10,000, ставка 0.002 за секунду
  • Q_memory_gb_seconds = 41,000, лимит 30,000, ставка 0.001 за GB-s
  • Q_invocations = 2,450,000, лимит 2,000,000, per_block 1,000 по ставке 0.04

Тогда:

CPU: overage = 2,800; amount = 2,800 * 0.002 = 5.60
Memory: overage = 11,000; amount = 11,000 * 0.001 = 11.00
Invocations: overage = 450,000; blocks = ceil(450,000 / 1,000) = 450; amount = 450 * 0.04 = 18.00
RuntimeSubtotal = 34.60

Дальше к 34.60 применяются Adjustments, Credits, Taxes по правилам профиля биллинга.