LearnGlossary

What is CPU throttling in Kubernetes?

Updated 25 October 2026 · Published by Zoorik

CPU throttling in Kubernetes is when the Linux kernel holds back a container that hits its CPU limit. It keeps running, only slower.

On Linux nodes, the kubelet, the node’s agent, turns a CPU limit into a quota of CPU time per period. A period is 100 milliseconds by default. Once the container uses up its quota, it waits for the next period.

Two threads use up the 100 ms quota in 50 ms, then wait Illustration. One 100 ms period and the start of the next, on a wall-clock axis with ticks at 0, 50 and 100 ms, for a container with a CPU limit of 1 CPU, which is 100 ms of CPU time per 100 ms period. Two lanes, thread 1 and thread 2, each run from 0 to 50 ms and are throttled from 50 to 100 ms. A bracket over 0 to 50 ms reads quota used up, 2 times 50 ms equals 100 ms. A bracket over 50 to 100 ms reads throttled, waits 50 ms. A line at 100 ms reads quota refills, threads run again, and both lanes run again after it. Two threads use up the 100 ms quota in 50 ms, then wait A CPU limit of 1 CPU = 100 ms of CPU time per 100 ms periodQuota used up2 × 50 ms = 100 msThrottled: waits 50 msthread 1thread 2Quota refills,threads run again050100ms
Illustration: a container with a 1 CPU limit whose app keeps 2 CPUs busy, over one 100 ms period and the start of the next.

What causes CPU throttling in Kubernetes

  • A CPU limit below what the app needs at peak.
  • Busy threads on several CPUs, which share one quota and spend it early.
  • A default limit from a LimitRange, for containers that set none.

An example from the Kubernetes docs

The docs run a pod with a 0.5 CPU request and a 1 CPU limit. Its app tries to use 2 CPUs.

kubectl top pod shows 974m, or 0.974 CPU, just under the limit. The docs say the container’s CPU use is being throttled.

Why it matters for your bill

Kubernetes CPU throttling slows your app, and three quick fixes can add nodes:

  • Raise the request with the limit.
  • Raise a limit that has no request, since Kubernetes uses it as the request.
  • Remove the limit and set a larger request.

The scheduler places pods by their requests, so bigger requests mean fewer pods per node and more nodes to pay for.

Coral rebalances CPU and memory requests on AKS and EKS to match real use, so the same pods fit on fewer nodes. On regular pods, it never reduces a container’s CPU or memory limit.

The free assessment works out your own figure.

Find your own number

One line in your cloud console. One PDF report with your estimated saving at list price.

Estimate your saving

Talk to the builders

Thirty minutes with the people who build Coral.

Book a demo (opens in a new tab)

Or write to founders@zoorik.com