“We were essentially able to reduce the cost of that cluster by about 75%. On AWS, DevZero demonstrated they could achieve significantly higher savings than we initially thought possible.”

Mihir Nair
Head of Architecture, Databahn
Network tracing (eBPF)
Observability
The agent collects only per-container network receive and transmit byte counters from cAdvisor, with no flow or connection tracing.
Collects pod-to-pod network flows with netfilter by default. An eBPF collector mode is available as an opt-in setting.
Network cost
Cost attribution
Cost views cover CPU, memory, and GPU allocation, and no network or egress cost breakdown is documented.
Prices network traffic by type, including cross-AZ, cross-region, internet egress and NAT paths, estimated at cloud list rates.
Workload storage cost
Cost attribution
No persistent volume or workload storage cost attribution is documented.
Calculates persistent volume claim storage cost for each workload.
Flexible instance shapes in node groups
Cluster autoscaling
PerfectScale does not provision nodes; NodeFit recommends alternative node types that you apply in your own node groups or Karpenter NodePools.
Node policies select instances by category, family, size and capacity type, so one policy spans many shapes.
Spot-to-spot consolidation
Cluster autoscaling
PerfectScale does not replace nodes; it only compares spot node types with other spot types in recommendations.
Installs Karpenter with spot-to-spot consolidation turned on for AWS, Azure, GCP and OCI, with a per-cluster toggle in Karpenter settings.
Static capacity
Cluster autoscaling
PerfectScale does not manage node capacity; node groups stay under your cluster autoscaler or Karpenter.
Supports fixed-size NodePools through spec.replicas on AWS, Azure and GCP once you turn on the Static capacity setting. OCI is not supported.
Live migration of running pods
Reliability
PerfectScale resizes pods in place on Kubernetes 1.33+ and documents no checkpoint and restore.
Checkpoints a running container with CRIU and restores it on the replacement pod with its in-memory state. Opt-in per policy, on labelled nodes in the same cluster.
Automatic language detection
Observability
Detects Java containers automatically once the optional Coroot node agent is enabled, which is off by default and runs on Linux nodes only. No other runtimes are listed.
The node agent detects JVM, Node.js, .NET, Go, Rust, GraalVM native image, Python, Ruby, Deno and Bun in every container with no workload changes. Low-privilege installs turn it off.
Application health profiling
Observability
Flags resource-level risks such as OOM kills, CPU throttling, restarts, and missing requests or limits per workload. Application-level health such as errors or latency is not covered.
Tracks OOM kills, crash loops, CPU throttling and container startup lifecycle events for each workload.
API latency, throughput and error detection
Observability
Records inbound request rate, errors and latency per container from socket probes in the network monitor. Off by default; enable it with the containerRedMetrics Helm value.
Coexists with HPA, VPA and KEDA
Workload autoscaling
Reads HPA and KEDA scaling settings and is built to rightsize workloads that use HPA. Coexistence with an existing VPA is not documented.
Detects existing autoscalers automatically. An actuating VPA stands DevZero down. With an HPA it skips replica scaling, keeps vertical sizing, and offers an optional clamp against triggering scale-out.
OOM and CPU throttling handling
Workload autoscaling
Detects OOM kills and CPU throttling, and automation immediately raises resources when a workload uses more than it was allocated.
Raises memory right after an OOM kill, on by default, with configurable multipliers and cooldowns. A CPU throttling response exists in the operator but ships off.
Manage existing Karpenter
Cluster autoscaling
Detects Karpenter NodePools and recommends configuration changes as YAML you copy and apply yourself. Requires exporter v1.1.11 or later.
Mirrors existing Karpenter NodePools as read-only cluster-managed policies, and a migration wizard moves them under DevZero management.
Last updated
PerfectScale is free up to 300 vCPU; DevZero is free to monitor.
Freeup to 300 vCPU per month
Paid tier prices are not published on the pricing page.
$5per CPU per month
Billed on consumption, so compute savings lower your bill too.
Start freePublished results from customers who run DevZero in production.
Both tools can watch one cluster, so move one namespace at a time.
Start in non-production; it reads usage and cost without changing workloads.
Compare suggested requests for the same workloads against real usage.
Turn off PerfectScale automation per namespace, then create DevZero workload rules.
Uninstall the agent and autoscaler once automation is off everywhere.
Both automate rightsizing and resize in place. PerfectScale adds rollout-aware automation. DevZero adds live migration, egress cost by domain, and security scanning.
Yes. Its website brands the product "PerfectScale by DoiT".
With conditions. It needs Kubernetes 1.33 or later with in-place resize enabled. Memory limits only increase in place, and pending resizes get a rolling restart by default.
DevZero Free is $0 and Pro is $5 per CPU per month. PerfectScale is free up to 300 vCPU per month; paid tiers are quoted.
No. DevZero reports how much of your existing commitments you use but does not purchase them. PerfectScale reads prices from billing data.
“We were essentially able to reduce the cost of that cluster by about 75%. On AWS, DevZero demonstrated they could achieve significantly higher savings than we initially thought possible.”

Mihir Nair
Head of Architecture, Databahn
Use your own data
See your cluster costs and recommendations in the dashboard.
Compare side by side
Check DevZero's results against your current tool.
Plan the switch
Move one namespace at a time, and keep the rest where it is.