You're reading one of the top pains on Grafana — a free sample of the catalog. Create a free account to browse all Shopify & Atlassian pains and the basic Chrome catalog.
Kubernetes operators struggle with CPU throttling hidden by normal utilization graphs
.21
Demand — how loud & how many (score)
Willing to payImplicit
Momentum (7d)▼ 1.2%
Cluster17 posts · 16 people
MarketplaceGrafana
Updated10d ago
The story
The pain
We set CPU limits thinking they protect neighbors, but they silently throttle our pods even when the node has spare capacity. Utilization dashboards look fine while p99 latency spikes 4x and we chase "random" performance issues for weeks. Nobody tells you a pod can be "running" and still starved.
Evidence
What people said · 17 complaints, 16 people
Set requests before limits, and learn to read CPU throttling before you tune anything. Requests decide where your pod lands and what it's guaranteed; limits just decide when it gets strangled. We spent two weeks chasing "random" latency spikes on a service that looked healthy everywhere. Turned out the CPU limit was throttling it 40% of the time. Pods never restarted, no alerts fired, utilization graphs looked fine. Bumped the request, dropped the limit to something sane, p99 went back to normal overnight. Nobody tells you a pod can be "running" and still starved.
CPU request is how much CPU is reserved for your pod if it needs it. The limit is a hard cap. Hit it and the kernel throttles the pod, even when the node still has spare CPU. That is the usual cause of CPU throttling on Kubernetes. It does not protect the neighboring pods. In my simple Web API test, adding a CPU limit took typical latency from 23 ms to 87 ms, (4x slower), with the limited pod throttled in half of all CFS windows, and the average CPU graph looked fine the whole time.
Export the pain — problem, evidence and market signals — as Markdown, PDF or JSON. The Markdown export ships with a built-in briefing you can hand straight to a developer or an AI agent.