Kubernetes

CPU Throttling Despite Low Node Utilization

warning
Resource ContentionUpdated Jan 1, 2025

Containers experience CPU throttling (slow performance) even when node-level CPU utilization appears moderate, caused by CPU limits being set too low relative to actual burst requirements. This manifests as increased latency during traffic spikes despite available CPU capacity on the node.

How to detect:

Detect when kubernetes_cpu_usage approaches kubernetes_cpu_limits while kubernetes_cpu_capacity shows significant headroom (e.g., pod using 90%+ of its 2-core limit, but node is only 50% utilized overall). Application latency increases correlate with these CPU constraint periods. Look for CPU throttling metrics from the container runtime if available.

Recommended action:

Increase CPU limits for throttled workloads to allow burst capacity. Consider setting limits 2-3x higher than requests for workloads with variable CPU patterns. For latency-sensitive services, remove CPU limits entirely if node capacity allows, or set them very high to prevent artificial throttling.