Skip to main content

Tiers and quotas

Beta

Being rolled out. The interface described here is the one of the next release: it may still change, and may not be enabled on your tenant yet.

The grid and the quota are in place on all tenants; the sng tenant tier command is being rolled out.

Each tenant has a tier that sets what it can consume: guaranteed CPU and memory, maximum usable, storage, number of containers, and, for monitoring, number of monitors and minimum frequency. A tenant is created in 3XS. Moving up is always possible; moving down requires that current consumption fits in the target tier.

The grid​

TierGuaranteed CPUGuaranteed memoryMax CPUMax memoryStorageInstances
3XS0.51 Gi12 Gi2 Gi10
2XS0.51 Gi24 Gi10 Gi20
XS12 Gi48 Gi50 Gi40
S48 Gi48 Gi100 Gi40
M612 Gi612 Gi250 Gi60
L1248 Gi1248 Gi500 Gi120
XL32128 Gi32128 Gi1 Ti200
2XL64512 Gi64512 Gi2 Ti800
3XL192768 Gi192768 Gi4 Ti2000
  • Guaranteed: the sum of the reservations of your containers (their size) cannot exceed this value. It is what you are sure to have.
  • Max: the sum of the limits of your containers. A container can draw on it occasionally when capacity is available.
  • Storage: total volume your persistent volumes can request.
  • Instances: number of service instances (replicas included, job runs included) that can run at the same time.

The quota is per tenant.

Former names

The names XXS, XXL and XXXL are still accepted and mean 3XS, 2XL and 3XL (sng tenant tier set XXL is the same as sng tenant tier set 2XL). A tenant created before this grid keeps the same resources: its tier is shown under the matching name of the current grid (a former XS shows as 2XS, a former S shows as XS).

What monitoring adds​

The same tier bounds monitoring:

TierMonitorsMinimum intervalStatus pagesChannels
3XS105 min12
2XS252 min15
XS501 min210
S751 min210
M10030 s310
L25030 s520
XL50030 s1020
2XL100030 s2050
3XL250030 s5050

A monitor that requests an interval shorter than the tier minimum is refused (IntervalBelowTier), as is one monitor, page or channel too many (QuotaExceeded). See Monitors.

Read the tier and consumption​

sng tenant tier show
tenant acme: tier XS
RESOURCE USED HARD
requests.cpu 750m 1
requests.memory 1536Mi 2Gi
limits.cpu 1500m 4
limits.memory 3Gi 8Gi
requests.storage 5Gi 50Gi
…

requests.* compares with the Guaranteed column, limits.* with the Max column, requests.storage with Storage; the last line counts the running instances, to compare with the Instances column.

Right after the tenant is created, the line usage not available yet (…) may appear for a minute.

With --json, the same data: {"tenant":"acme","tier":"XS","keys":[…],"hard":{…},"used":{…}}.

Change tier​

sng tenant tier list # the grid, from the API
sng tenant tier set S
tenant acme: tier XS -> S (…)

The change takes effect within a minute. It requires the tier:write action, included in the admin policy.

Moving down is only accepted if current consumption fits in the target tier. Otherwise:

tier too small: cannot downgrade to 3XS: requests.memory 1536Mi > 1Gi

Reduce first (sng app scale, deleting services, smaller size), then try again. If consumption is not known yet (newly created tenant), moving down is refused as a precaution (503): try again a minute later.

When the quota is reached​

A deployment that would exceed the quota does not fail when the manifest is applied: it stays pending, and the status of the App carries the reason QuotaExceeded on the service concerned. Three ways out: reduce the service's size, reduce the number of instances, or move up a tier.

sng app describe shop
App : shop
Statut : en cours
SERVICE KIND IMAGE PHASE URL DETAIL
worker deployment acme/worker:2.1.0 Progressing - QuotaExceeded exceeded quota … requested: requests.memory=4Gi, used: requests.memory=1Gi, limited: requests.memory=2Gi

If it doesn't work​

MessageCauseFix
tier too small: cannot downgrade to …Current consumption exceeds the target tierReduce consumption, then try again
503 on sng tenant tier setConsumption not known yetTry again a minute later
forbidden (…)tier:write is missingAsk an administrator for the admin policy
A service stays in QuotaExceededThe tier is fullReduce size or replicas, or move up a tier

Going further​

  • The size of a service (Sizes and resources) sizes a container; the tier sizes the tenant. The two combine.
  • You only change the tier with sng tenant tier set or the API (PUT /v1/tier). A manifest cannot change it.
  • API routes: GET /v1/tiers (grid), GET /v1/tier (current tier and consumption), PUT /v1/tier with {"tier":"S"}.

See also​