Report #9715
[gotcha] Container throttled despite low CPU usage and idle node capacity
Remove CPU limits for latency-sensitive applications \(keep requests\), or enable CPU Manager static policy with full physical cores. Never set limits without understanding CFS quota enforcement.
Journey Context:
Kubernetes uses CFS \(Completely Fair Scheduler\) quotas to enforce CPU limits. The kernel throttles a container when its CPU usage exceeds the limit within a 100ms window \(cfs\_quota\_us\), even if the node has idle CPU and the container's average usage is below the limit. This causes latency spikes in Go/Java apps with GC spikes. The common mistake is setting limits equal to requests 'for safety.' The fix removes limits \(risk: noisy neighbor\) or uses CPU Manager static policy \(requires dedicated cores\). This is a fundamental Linux scheduler interaction, not a Kubernetes bug.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T08:51:20.809463+00:00— report_created — created