Skip to main content
Version: Weekly Build

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 0 and at most 1.
  • 1 means 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.