Most platform teams are familiar with the Kubernetes cost problem. Engineers over-provision CPU and memory to stay safe; finance flags the bill a few months later; someone runs a rightsizing pass; and the gap quietly opens back up again. The cycle keeps repeating because the starting assumption is wrong. Giving a workload more resources than it needs doesn’t actually make it more stable. It just hides the real issue, which is usually a request or limit that was never set correctly in the first place. Get those values wrong, and a cluster can still throttle, evict pods, or breach its SLAs, no matter how much headroom you add.

This is the gap PerfectScale, now part of DoiT, was built to close. Instead of treating cost reduction and performance as a tradeoff, the platform treats them as the same problem. It continuously matches what a workload actually uses to what it’s allocated, and it does this without waiting for an engineer to schedule the next review.

Why manual rightsizing keeps failing

Most teams already run autoscalers like HPA, KEDA, Karpenter, or Cluster Autoscaler. None of that helps much if the requests and limits feeding those systems are wrong to begin with. A pod that asks for more CPU than it ever uses forces the autoscaler to spin up extra nodes it doesn’t need. A pod that asks for too little risks getting OOM killed or throttled the moment traffic picks up even slightly.

Manual rightsizing tries to fix this by reviewing usage data and adjusting values by hand, but it has a built-in limit. Vertical changes traditionally require restarting the pod, so teams either skip the change to avoid disruption or batch it into a maintenance window weeks away. By the time the fix ships, usage patterns have already shifted. Observability tools like Prometheus or Datadog can show you where the waste is, but they don’t act on it. The team still has to translate a dashboard into a decision and then into a deployment.

How PerfectScale actually optimizes

PerfectScale’s core move is continuous, in-place rightsizing. Once the agent is deployed to a cluster, usually through a single Helm install, it starts analyzing actual CPU and memory consumption against what’s been requested, alongside traffic patterns and how critical a given workload is to the business. Recommendations get prioritized accordingly, so a customer-facing checkout service and a low-priority batch job don’t get treated the same way.

The part that sets this apart from a basic recommendation engine is that adjustments can be applied without restarting the pod. That removes the main reason teams have historically avoided acting on rightsizing data: the fear of disrupting a running service. PerfectScale has also extended this into harder cases, including short-lived workloads like Spark or Airflow jobs that don’t run long enough for traditional tuning to catch up, and Java workloads where JVM heap and garbage collection behavior need their own logic separate from standard container metrics.

Fixing resource allocation and workload performance together

A lot of Kubernetes inefficiency doesn’t come from one big misconfiguration. It comes from small, recurring ones spread across hundreds of workloads: no CPU request set, no memory limit defined, replicas hitting their max count without anyone noticing. Each one on its own looks minor. At scale, they add up to unpredictable evictions, node over-commitment, and clusters that feel unstable for reasons nobody can quite pin down.

PerfectScale scans for these patterns continuously and surfaces them before they cause an incident rather than after. That extends past individual pods into node-level decisions too, including which instance types actually fit the workloads running on them and whether node affinities and taints are set up the way the team thinks they are. Better bin-packing and smarter node selection reduce idle capacity directly, which means fewer nodes provisioned for the same workload footprint.

Making FinOps actually usable for engineering

A common complaint about FinOps tooling is that it’s built for finance, not for the people who’d need to act on it. A dashboard showing that a namespace is “underutilized” doesn’t tell an engineer what to change or whether changing it is safe. PerfectScale pulls in billing data directly, from AWS Cost and Usage Reports, Azure Cost Management, and GCP Cloud Billing, and ties it to the same workload-level recommendations the platform already generates for performance and reliability.

That matters because it closes the loop between what something costs and what it would take to fix it. Engineering and finance end up looking at the same numbers instead of finance interpreting a report and engineering interpreting a separate set of metrics. It also gives platform teams a way to forecast spend based on actual efficiency trends instead of guessing from last quarter’s invoice.

Treating reliability as the starting point, not an afterthought

It’s worth being clear about the order of operations here. PerfectScale doesn’t pitch cost savings as the primary goal, with stability as a side effect. It’s closer to the reverse. The platform’s recommendations are built around keeping workloads within their SLA and SLO targets first, and the cost reduction comes from removing the waste that was never needed to hit those targets anyway. Customers have reported cutting EKS spend by around 40 percent and resiliency issues by 90 percent, which only makes sense if both numbers are coming from the same underlying fix rather than two separate efforts pulling in different directions.

Where this leaves platform teams

Kubernetes optimization used to mean picking your battle: Tighten resources and risk an outage, or pad them and accept the bill. Autonomous, in-place rightsizing is starting to make that choice unnecessary. The work isn’t disappearing, but it’s shifting from quarterly cleanup projects to a continuous background process that adjusts as workloads change. For platform teams already stretched across reliability, performance, and cost, that shift is less about a new tool and more about no longer having to choose which fire to put out first.

Share:

Get involved!

Get Connected!
Join our community. Expand your network and discover great content!

Comments

No comments yet