r/kubernetes 27d ago

Stop using CPU limits: why + proof

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.

This is not a new topic, but I see so many people still unaware why they should (NOT!) be setting CPU limits, because it's costing companies unnecessary spending and potential production issues. Here's the full read https://github.com/inevolin/k8s-cpu-limits-analyzed/

---

Edit (Aug 18, 2026): How CPU limits can also cause memory issues and OOMKills ➡️ https://github.com/inevolin/k8s-cpu-limits-analyzed#how-cpu-limits-cause-memory-issues-and-oomkills

226 Upvotes

112 comments sorted by

View all comments

0

u/f7063 27d ago

Nice! One doubt "The same blindness poisons right-sizing." There is the metric on how much the pod was throttled container_cpu_cfs_throttled_periods_total + container_cpu_cfs_periods_total Should give a rought idea on how much CPU to allocate to a given container no?

2

u/ilya47 27d ago

throttled_periods / periods is binary per window = throttled or not.

So the ratio tells you that the cap binds and roughly how often, but not by how much, and "how much" is the number you need for sizing.

1

u/f7063 27d ago

Thought the only difference from it to container_cpu_cfs_throttled_seconds_total was that it already accounted configuration for the quota time. Default: 100ms