Metrics Glossary
Reference glossary of all metrics collected and computed by Kubeadapt.
Cost Metrics
Kubeadapt uses 730 hours/month (365.25 days / 12 months × 24 hours) for all cost calculations. This average-month constant keeps numbers consistent regardless of actual calendar length.
For a full breakdown of how costs flow from cloud provider pricing down to individual containers, see Cost Attribution.
Pod Compute Cost
Per-pod cost based on max(request, usage) for each resource, multiplied by the node's per-unit rates.
Pod CPU cost = max(CPU request, CPU usage) × node CPU rate ($/core/hr)
Pod memory cost = max(memory request, memory usage) × node memory rate ($/GiB/hr)
Pod GPU cost = GPU request × node GPU rate ($/GPU/hr)
Pod compute cost = CPU cost + memory cost + GPU costUsing max(request, usage) means over-provisioned pods pay for their full reservation, and bursting pods pay for what they actually consumed.
Example:
Pod requests: 2 cores, 4 GiB memory
Pod usage: 0.8 cores, 3.2 GiB memory
Node rates: $0.04/core/hr, $0.005/GiB/hr
CPU cost = max(2, 0.8) × $0.04 = $0.08/hour
Memory cost = max(4, 3.2) × $0.005 = $0.02/hour
Pod compute cost = $0.10/hour → $73.00/monthPersistent Volume Cost
Persistent Volume (PV) costs are tracked separately per volume, based on size and storage class (e.g. gp3, pd-standard). PV costs are not part of pod compute cost but are included in namespace-level totals alongside workload costs.
PV cost = volume size (GiB) × storage class rate ($/GiB/month)Allocated Cost
Cost based on resource requests only (what's reserved on the node, whether used or not). Useful for understanding how much capacity you're paying to hold.
Allocated Cost = (CPU Request × CPU $/core/hr) + (Memory Request × Memory $/GB/hr)Example:
Pod requests: 500m CPU (0.5 cores), 1Gi memory
Node rates: $0.024/core/hr, $0.006/GiB/hr
Allocated cost = (0.5 × $0.024) + (1.0 × $0.006) = $0.018/hour → $13.14/monthActual Cost
Cost based on resource usage only (what's actually consumed). Comparing this against allocated cost reveals waste.
Actual Cost = (CPU Usage × CPU $/core/hr) + (Memory Usage × Memory $/GB/hr)Example:
Pod using: 200m CPU (0.2 cores), 600Mi memory (0.6 GiB)
Actual cost = (0.2 × $0.024) + (0.6 × $0.006) = $0.0084/hour → $6.13/monthFor right-sizing, Kubeadapt uses percentile-based usage (P95 CPU, P99 memory in production; P50 in non-production by default). These are configurable per cluster. See Right-sizing for details.
Idle Cost
The gap between what you reserved and what you used. This is the optimization target.
Idle Cost = Allocated Cost - Actual CostExample:
Allocated: $0.018/hour
Actual: $0.0084/hour
Idle: $0.0096/hour wasted
Monthly waste: $7.01/month (53% of allocated cost)Resource Metrics
CPU Request
CPU cores reserved for a pod. Kubernetes guarantees this capacity on the node.
Unit: Millicores (m) or cores
500m = 0.5 cores
1000m = 1 core
2000m = 2 coresCPU Usage
Actual CPU consumed by a pod, averaged over 5-minute windows.
Unit: Millicores (m) or cores
For right-sizing, Kubeadapt uses a 7-day lookback with P95 percentile in production (default), P50 in non-production.
CPU Utilization
CPU Utilization = (CPU Usage / CPU Request) × 100%Example: 420m usage on 1000m request = 42% utilization.
Memory Request
Memory reserved for a pod. Kubernetes guarantees this capacity on the node.
Unit: Ki, Mi, Gi (binary bytes)
512Mi ≈ 537 MB
1Gi ≈ 1.07 GBMemory Usage
Actual memory consumed (working set = RSS + cache).
Unit: Ki, Mi, Gi
For right-sizing, Kubeadapt uses P99 memory in production (conservative, prevents OOM), P50 in non-production.
Memory Utilization
Memory Utilization = (Memory Usage / Memory Request) × 100%Example: 1.4Gi usage on 2Gi request = 70% utilization.
Storage Capacity
Total size of a Persistent Volume Claim (PVC).
Unit: Gi, Ti
Storage Usage
Actual disk space consumed on the volume filesystem.
Unit: Gi, Ti
Storage Utilization
Storage Utilization = (Storage Used / Storage Capacity) × 100%Healthy ranges: Under 70% is normal, 70-85% is good utilization, above 85% consider expanding the volume.
Efficiency Metrics
Resource Efficiency
How well a workload uses its allocated resources.
Resource Efficiency = (Observed Usage / Allocated Requests) × 100%
Overall Efficiency = (CPU Efficiency × 0.65) + (Memory Efficiency × 0.35)Overall efficiency uses a cost-weighted average: CPU carries 65% weight (typically the more expensive resource), memory carries 35%. Both are capped at 100%.
Usage is measured with percentile-based analysis over a 7-day lookback, weighted toward recent data:
| Environment | CPU Percentile | Memory Percentile |
|---|---|---|
| Production | P95 (default) | P99 (default) |
| Non-Production | P50 | P50 |
Percentile settings are configurable per cluster via Preferences. The defaults above apply when no custom values are set. These are the same percentile settings used for right-sizing analysis.
Example:
CPU: 420m usage / 1000m request = 42%
Memory: 1.4Gi usage / 2Gi request = 70%
Overall: (42% × 0.65) + (70% × 0.35) = 51.8%Target ranges: CPU 60-75%, Memory 70-85%. Below these ranges means over-provisioning. Above means risk of throttling (CPU) or OOM kills (memory).
Bin-Packing Efficiency
How densely pods are packed onto nodes. Higher means less wasted node capacity.
Bin-Packing = Σ(Pod Requests) / Σ(Node Allocatable) × 100%This metric is used contextually in capacity planning and node group analysis (e.g. Ghost Town charts, node consolidation recommendations). It is not displayed as a standalone KPI card.
Example:
Cluster: 100 cores, 400 GB allocatable
Pods: 68 cores, 288 GB requested
CPU bin-packing: 68% | Memory: 72% | Overall: 70%Under 60% indicates poor packing. Consider right-sizing workloads or consolidating to fewer, larger nodes. Above 75% is excellent.
Cost Efficiency
How much of your allocated spend goes toward actual work.
Cost Efficiency = (Actual Cost / Allocated Cost) × 100%This is the inverse of idle cost. 47% cost efficiency means 53% of your spend is waste.
Savings Metrics
Available Savings
Total potential monthly savings across all optimization opportunities: over-provisioned workloads, orphaned resources, unused resources, and storage inefficiencies.
Available Savings = Σ(all optimization opportunities)Example:
Over-provisioned: $1,100/month
Orphaned: $180/month
Unused: $40/month
Total: $1,320/monthSavings Percentage
Savings % = (Available Savings / Total Cost) × 100%Example: $1,320 available savings on $7,240 total spend = 18.2%.
Tracked Savings
Cost reduction from applied recommendations. Each recommendation records its baseline cost at creation. When a recommendation is applied and a new one is generated for the same workload, the original baseline carries forward to measure cumulative savings across the chain.
Tracked Savings = Original Baseline Cost - Current Cost (per recommendation)Tracked savings are computed per recommendation, not aggregated at the cluster level.
Example: A workload costing $48/month is right-sized to $32/month. Tracked savings for that recommendation = $16/month.
Allocation Metrics
Allocated %
Share of cluster cost attributed to a specific dimension (team, namespace, label, etc.).
Allocated % = (Dimension Cost / Total Cluster Cost) × 100%Example: Team "payments" costs $3,240 out of $7,240 total = 44.8%.
Unallocated Cost
Cost that can't be attributed to any dimension. Common causes: resources missing labels, system components (kube-system, monitoring), and shared infrastructure.
Unallocated Cost = Total Cost - Σ(Allocated Costs)Example: $7,240 total - $6,890 allocated = $350/month unallocated (4.8%).
High unallocated cost usually means missing labels. Enforce label requirements on namespaces to improve cost attribution coverage.
Node Metrics
Node Cost
Monthly cost of running a single node. The bundled hourly rate is split into per-CPU and per-GiB rates for pod-level cost attribution.
Node Cost = Instance Hourly Rate × 730Node Utilization
Percentage of node capacity consumed by pod requests. Uses the higher of CPU or memory utilization, since Kubernetes schedules based on whichever resource is most constrained.
Node Utilization = Max(CPU Utilization, Memory Utilization)Example:
Node: 8 cores, 32 GB
Pod requests: 5.4 cores, 22.1 GB
CPU: 67.5% | Memory: 69% → Node utilization: 69%Pod Density
Pod Density = Pods Running / Max Pods on NodeExample: 24 pods running on a node with 58-pod capacity = 41% density.
Workload Metrics
Workload Cost
Total cost of all pods in a workload (Deployment, StatefulSet, DaemonSet, etc.), computed as the sum of individual pod costs.
Workload Cost = Σ(Pod Costs)Each pod's cost is calculated independently based on the node it runs on. Pods of the same Deployment can be attributed to different cost rates if they are scheduled on nodes with different instance types or pricing (on-demand vs. spot). The Node Distribution view in the dashboard shows per-node cost for each workload.
Forecast Metrics
Projected Monthly Cost
Estimated end-of-month spend extrapolated from month-to-date actual spending.
Projected Monthly = (MTD Actual Spend / Days Elapsed) × Days in MonthExample: $3,630 spent by Nov 15 (15 days) → projected $7,260 for the 30-day month.
This metric is shown alongside Run Rate in the dashboard. Run Rate reflects current provisioning; Projected Monthly reflects actual spending trends.
Run Rate
Monthly cost projection based on current hourly spend.
Run Rate = Current Hourly Cost × 730Example: $9.95/hour → $7,264/month run rate.
For annual projections, multiply the monthly run rate by 12.
Overhead
Infrastructure costs not directly attributable to workloads: control plane fees (EKS/GKE/AKS), system processes (kubelet, kube-proxy, daemons), and idle node capacity that no pod has claimed.
Example: $7,240 total cluster cost - $6,890 workload cost = $350/month overhead (4.8%).
Calculation Notes
Rounding
Costs display with 2 decimal places ($276.48), percentages with 1 decimal place (45.7%). All intermediate calculations use full precision.
Related Documentation
- Cost Attribution - How costs are calculated and split across dimensions
- Resource Efficiency - Efficiency scoring methodology
- Right-sizing - How recommendations are generated from these metrics