When latency-sensitive (LS) workloads and BestEffort (BE) batch jobs share the same node, BE tasks can consume CPU cycles that LS pods need during traffic spikes. CPU Suppress dynamically adjusts the CPU cores available to BE pods based on LS pod utilization: as LS load rises, BE pods receive fewer CPU cores; as LS load falls, BE pods automatically reclaim idle capacity. This keeps node utilization high without starving your latency-critical services.
CPU Suppress requires the dynamic resource overcommitment feature. For more information, see Enable dynamic resource overcommitment.
How it works
CPU Suppress monitors total node CPU utilization against a configurable threshold (cpuSuppressThresholdPercent, default: 65%). The cpuset assigned to BE pods expands and contracts based on the headroom LS pods leave:
LS load increases — CPU Suppress reduces the cpuset assigned to BE pods, protecting LS response times
LS load decreases — CPU Suppress expands the cpuset for BE pods, reclaiming otherwise idle capacity
The figure below illustrates this dynamic relationship between the CPU threshold, LS pod usage, and the CPU restriction applied to BE pods.
The figure uses the following terms:
CPU Threshold: the CPU utilization threshold of the node
Pod (LS).Usage: CPU usage of LS pods
CPU Restriction for BE: CPU resources available to BE pods
Set cpuSuppressThresholdPercent to the same value as the reserved CPU watermark in your dynamic resource overcommitment configuration to keep both mechanisms aligned.
Prerequisites
Before you begin, ensure that you have:
An ACK Pro cluster. For more information, see Create an ACK Pro cluster
ack-koordinator 0.4.0 or later installed. For more information, see ack-koordinator (ack-slo-manager)
For background on pod QoS classes and memory resource assignments, see Pod QoS classes and Assign memory resources to containers and pods in the Kubernetes documentation.
Billing
Installing and using ack-koordinator is free. Charges may apply in these cases:
Worker node resources: ack-koordinator is a non-managed component. It consumes worker node resources after installation. You can control the resource requests for each module during installation.
Prometheus metrics: If you enable Prometheus metrics for ack-koordinator and use Managed Service for Prometheus, the metrics count as custom metrics and incur charges. Fees depend on cluster size and application count. Before enabling, review the Billing page for Managed Service for Prometheus to understand the free quota and billing rules. For usage monitoring, see Query the amount of observable data and bills.
Enable CPU Suppress
CPU Suppress is configured at the cluster level through the ack-slo-config ConfigMap in the kube-system namespace.
Create a file named
configmap.yamlwith the following content:apiVersion: v1 kind: ConfigMap metadata: name: ack-slo-config namespace: kube-system data: resource-threshold-config: | { "clusterStrategy": { "enable": true } }Apply the ConfigMap. The method depends on whether
ack-slo-configalready exists in your cluster:If the ConfigMap exists, use the PATCH method to update only the relevant field without affecting other settings:
kubectl patch cm -n kube-system ack-slo-config --patch "$(cat configmap.yaml)"If the ConfigMap does not exist, create it:
kubectl apply -f configmap.yaml
Verify that CPU Suppress is active by querying the CPU cores allocated to BE pods:
cat /sys/fs/cgroup/cpuset/kubepods.slice/kubepods-besteffort.slice/cpuset.cpusExpected output:
10-25,35-51,62-77,87-103This output confirms that BE pods are restricted to a subset of CPU cores and that CPU Suppress is working.
Optional: Configure the CPU utilization threshold by updating your
configmap.yamlwith the following content and reapplying it:apiVersion: v1 kind: ConfigMap metadata: name: ack-slo-config namespace: kube-system data: resource-threshold-config: | { "clusterStrategy": { "enable": true, "cpuSuppressThresholdPercent": 65 } }The default threshold is 65%. Adjust
cpuSuppressThresholdPercentto match your workload profile or the reserved CPU watermark in your dynamic resource overcommitment configuration.
Parameters
| Parameter | Type | Value range | Default | Description |
|---|---|---|---|---|
enable | Boolean | true / false | — | Enables (true) or disables (false) CPU Suppress |
cpuSuppressThresholdPercent | Integer | [0, 100] | 65 | CPU utilization threshold of the node, in %. When node CPU utilization exceeds this threshold, BE pod CPU resources are reduced. When utilization falls back below this threshold, BE pod CPU resources are restored |
What's next
ack-koordinator provides additional resource limits for overcommitted workloads on a node: