Smart Sizing Overview
Smart Sizing analyzes the CPU and memory usage of every workload in your cluster and recommends request and limit values for each container. Analysis runs every 10 minutes, and recommendations address both directions of mis-sizing:
- Over-provisioning: requests far above real usage waste money and block scheduling capacity.
- Under-provisioning: requests below real usage risk CPU throttling and OOMKills.
Two recommendation models
Smart Sizing picks the model automatically based on whether the workload is horizontally scaled.
| Smart Sizing (usage-based model) | Smart Sizing with HPA / Autopilot (workload performance model) | |
|---|---|---|
| Applies to | Workloads without HPA or Autopilot | Deployments with an HPA, or with Wave Autopilot enabled |
| How it works | Observes 7+ days of CPU/memory usage plus other workload metrics used as SLIs (network in/out, request behavior) and recommends reliable, cost-effective values. It checks workload reliability, not just the lowest observed usage | Models how the workload group behaves at different replica counts (5, 10, 15 replicas behave differently), and recommends one CPU/memory value that stays valid while the workload scales horizontally |
| Data needed | First recommendations within 24-48 hours; stable after 7 days | At least 5 data points at distinct replica counts; workloads without enough traffic variation may not produce recommendations yet |
| How to apply | Resize Now (manual) or Realtime Resizing (automatic) | Resize Now (manual) only, see why below |
The workload detail page shows which model is active: the tab is labeled Smart Sizing, Smart Sizing with HPA, or Smart Sizing with Autopilot.
Two ways to apply recommendations
| Apply path | What it does | Where |
|---|---|---|
| Manual: Resize Now | You review the recommendation and apply it on demand, per container, choosing in-place resize or a manifest edit | Resize Now |
| Realtime Resizing | Wave applies recommendations automatically every 10-minute cycle, opt-in per workload and per container, with In-place and Manifest modes | Realtime Resizing |
Workloads using HPA or Autopilot cannot use Realtime Resizing while they are actively scaling. When a workload autoscales, pods are created and terminated dynamically, so applying new values to running pods would leave newly scaled-up pods with different sizes, and a manifest patch would restart every pod mid-scale. Review the recommendation and apply it manually instead. The restriction applies only once Autopilot or HPA is actively scaling the workload: a workload with Autopilot in Monitoring Mode is not being scaled, so Realtime Resizing stays available there. The reasoning is covered in detail in Realtime Resizing.
Tuning recommendations
- Aggressive Recommendations: switch a workload from the 7+ day window to the last 1 hour (request = average usage, limit = peak usage) for maximum cost reduction.
- Container Settings: per-container min/max bounds and safety buffer (default 10%) that shape every recommendation, plus auto-apply opt-in.
Built-in safety guardrails
Smart Sizing never applies a value blindly:
- Recommendations always satisfy limit ≥ request. CPU never goes below 0.1 core (0.01 core when Aggressive Recommendations is on), and memory never goes below the 12 MiB container-runtime minimum.
- Zero or missing recommendation values are never written to the cluster.
- The first time Wave resizes a container, the original request/limit values are captured, and a Restore Original button reverts them at any time.
- Every automatic apply is recorded in the per-workload Apply History table.
- Tiny changes are skipped: an apply only happens when the change is meaningful (≥ 10% ratio, ≥ 50 mCPU, or ≥ 64 MiB). Aggressive workloads use lighter gates (≥ 10 mCPU or ≥ 10 MiB, no ratio check) so they can track the 1-hour window closely.
Supported workload kinds
Deployment, StatefulSet, DaemonSet, Argo Rollout, and OpenShift DeploymentConfig (OpenShift / OKD).
Smart Sizing vs Kubernetes VPA
| Dimension | Kubernetes VPA | Smart Sizing |
|---|---|---|
| Recommendation input | Usage histogram, percentile aggregation | Usage-based model with reliability checks, or workload performance model for horizontally scaled workloads |
| HPA compatibility | Not compatible (conflicts on the same workload) | Dedicated Smart Sizing with HPA model: recommendations that stay valid across replica counts |
| Apply behavior on insufficient node resources | Falls back to evict-and-recreate automatically | Explicit modes only: In-place skips the pod and retries next cycle; no silent restarts |
| Per-container controls | minAllowed / maxAllowed | Min/max bounds and safety buffer via Container Settings |
| Supported kinds | Deployment, StatefulSet, DaemonSet | Plus Argo Rollout and OpenShift DeploymentConfig |
| Operator visibility | VPA events, kubectl describe vpa | Dashboard with savings/risk ranking, per-workload Apply History |
Where to go next
- Getting Started: from install to first resize.
- Dashboard: the Wave Sizing Overview and Workloads pages.
- Smart Sizing Tab in Workload: reading per-workload recommendations.
- Realtime Resizing: automatic per-cycle apply and its operational caveats.
- Resize Now: manual, on-demand apply.
- Aggressive Recommendations: cost-first sizing from the last 1 hour.
- Container Settings: per-container bounds, buffer, and auto-apply opt-in.