Determine the right CPU request value for a pod based on average utilization.
The Kubernetes scheduler places pods based on their CPU request, not their limit or actual usage. Setting the request equal to raw average usage leaves no room for normal fluctuation and risks CPU throttling under the node's CFS quota. Multiplying the measured average by a safety factor of 1.2–1.5× gives the scheduler an honest reservation that reflects real-world variance without permanently over-provisioning the way a peak-based request would.
request = avgUsage × safetyFactor
Requests affect bin-packing and cost — every millicore requested is reserved on a node whether used or not. Peak-based requests waste capacity; average-based requests with a modest safety factor balance efficiency with resilience to normal variance.
1.2–1.5× is a reasonable default for steady workloads. Bursty or latency-sensitive services may warrant 1.5–2×, while highly predictable batch workloads can use closer to 1.1×.
Use a metrics window that spans multiple business cycles (at least 7 days including peak traffic days) from Prometheus/metrics-server, and average per-pod usage rather than node-level usage.