Workload underprovisioning
Underprovisioning lets a workload-provisioning service reserve fewer effective resources for workloads than the workloads are allowed to consume. This can improve utilization because many workloads do not continuously use all CPU or memory they are allowed to consume.
In Private Cloud, you configure this in your installation config.yaml, which
is then applied by OMS during install or upgrade.
Underprovisioning is expressed as a factor:
- Values must be greater than
0and at most1. 1means no underprovisioning for that resource.- CPU and memory are configured separately.
- Limits stay at the value the user explicitly requested.
- Requests are calculated from the limit using the underprovisioning factor:
requests = ceil(limits * underprovisionFactor).
For Kubernetes-based backends, underprovisioning is typically realized by changing the Kubernetes request, not the limit. A lower factor can reduce costs and improve bin-packing, but under heavy node load it also reduces the workload's CPU share and increases the risk of memory eviction or OOM errors.
Not every workload created by a backend must use underprovisioning. Small helper workloads such as init jobs or dashboards may keep their default requests or equivalent backend-specific defaults.
Where to configure it
The exact location depends on which backend provisions the workloads.
Codesphere Reactives and container runtime
Set the factors in codesphere.underprovisionFactors in config.yaml:
codesphere:
underprovisionFactors:
cpu: 0.5
memory: 0.75
This affects the reactives and containers of landscapes.
vCluster service inside
Codesphere provisions virtual clusters with a factor that applies to the vCluster's global resource quota.
codesphere:
override:
global:
vcluster:
underprovisioningFactor: 0.5
The key is named underprovisioningFactor (singular, a single number) and applies
to both CPU and memory. It defaults to 1.
PostgreSQL managed service backend
For the built-in PostgreSQL backend, set the factors in
managedServiceBackends.postgres.override in config.yaml:
managedServiceBackends:
postgres:
override:
underprovisionFactor:
cpu: 0.5
memory: 1
This affects the PostgreSQL workloads that the backend provisions.
OpenSearch managed service backend
For the OpenSearch backend, set the factors through the pcApps override in
config.yaml:
pcApps:
applications:
ms-backend-opensearch:
valuesObject:
underprovisionFactor:
cpu: 0.5
memory: 1
This affects the OpenSearch node-pool resources that the backend provisions, but not the Dashboards or init-helper containers.