REFERENCE

Metrics Glossary

Reference glossary of all metrics collected and computed by Kubeadapt.

Cost Metrics

Note

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.

text
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 cost

Using max(request, usage) means over-provisioned pods pay for their full reservation, and bursting pods pay for what they actually consumed.

Example:

text
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/month

Persistent 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.

text
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.

text
Allocated Cost = (CPU Request × CPU $/core/hr) + (Memory Request × Memory $/GB/hr)

Example:

text
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/month

Actual Cost

Cost based on resource usage only (what's actually consumed). Comparing this against allocated cost reveals waste.

text
Actual Cost = (CPU Usage × CPU $/core/hr) + (Memory Usage × Memory $/GB/hr)

Example:

text
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/month
Note

For 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.

text
Idle Cost = Allocated Cost - Actual Cost

Example:

text
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

text
500m = 0.5 cores 1000m = 1 core 2000m = 2 cores

CPU 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

text
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)

text
512Mi ≈ 537 MB 1Gi ≈ 1.07 GB

Memory 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

text
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

text
Storage Utilization = (Storage Used / Storage Capacity) × 100%
Tip

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.

text
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:

EnvironmentCPU PercentileMemory Percentile
ProductionP95 (default)P99 (default)
Non-ProductionP50P50
Note

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:

text
CPU: 420m usage / 1000m request = 42% Memory: 1.4Gi usage / 2Gi request = 70% Overall: (42% × 0.65) + (70% × 0.35) = 51.8%
Tip

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.

text
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:

text
Cluster: 100 cores, 400 GB allocatable Pods: 68 cores, 288 GB requested CPU bin-packing: 68% | Memory: 72% | Overall: 70%
Tip

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.

text
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.

text
Available Savings = Σ(all optimization opportunities)

Example:

text
Over-provisioned: $1,100/month Orphaned: $180/month Unused: $40/month Total: $1,320/month

Savings Percentage

text
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.

text
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.).

text
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.

text
Unallocated Cost = Total Cost - Σ(Allocated Costs)

Example: $7,240 total - $6,890 allocated = $350/month unallocated (4.8%).

Tip

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.

text
Node Cost = Instance Hourly Rate × 730

Node 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.

text
Node Utilization = Max(CPU Utilization, Memory Utilization)

Example:

text
Node: 8 cores, 32 GB Pod requests: 5.4 cores, 22.1 GB CPU: 67.5% | Memory: 69% → Node utilization: 69%

Pod Density

text
Pod Density = Pods Running / Max Pods on Node

Example: 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.

text
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.

text
Projected Monthly = (MTD Actual Spend / Days Elapsed) × Days in Month

Example: $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.

text
Run Rate = Current Hourly Cost × 730

Example: $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.