Saving Report
Saving Report shows how your cluster’s current operating profile compares with a baseline: the initial snapshot captured after onboarding, a saved default range, or a range you select for the report.
Saving Report compares:
- The effective baseline, identified by the report’s baseline description
- A current time range that you select from the page header
This report is designed to answer three questions:
- How much would the current workload likely cost under the baseline provisioning pattern?
- Are workloads using a larger share of their requested CPU and Memory than before?
- How much have cluster size, workload requests, and per-core cost changed since the baseline?
Access Saving Report
- Open the target cluster in the CloudPilot AI console.
- In the left navigation, go to Cost Monitoring > Saving Report.
- Use the date picker in the top-right corner to choose the current comparison period.
- Where available, use Choose baseline to compare against another period. Applying it changes the current report; Set as default for this cluster also changes the setting used for subsequent reports.
- Optionally click Export PDF to download the report.
Data Availability and Baseline Behavior
Availability depends on the cluster’s provider, deployed version, and report data. Check whether Console exposes Saving Report and whether get_cluster_overview reports the capability; do not infer availability from the existence of a report API alone.
The report needs usable metrics for the effective baseline, not necessarily an initial snapshot. If baseline resource metrics are not available yet, the UI shows Baseline data pending. A range without recorded metrics is not a zero-cost baseline.
Current values are not point-in-time readings. They are averages across the selected time range. With an initial baseline, baseline values come from the stored snapshot. With a range baseline, they are averages across the baseline range. Confirm the returned baseline mode and dates before comparing reports.
Current monthly cost normally comes from the selected range’s average hourly cost. If that query fails or produces a nonpositive average, the server can fall back to the cluster cost summary’s monthly cost. Do not assume every displayed cost is backed by a complete historical series.
The initial baseline snapshot is taken after CloudPilot AI is installed on the cluster. An explicitly selected baseline range takes precedence over a saved default range; without either, the report uses the initial snapshot. For MCP arguments, precedence, and missing-data behavior, see the Saving Report reference.
Feature Breakdown
Comparison Table
The current Console shows a monthly outcome and compares six metrics between Without optimization (the effective baseline) and With optimization (the current period):
| Metric | Interpretation |
|---|---|
| Monthly cost | Monthly savings or increase using the selected display basis described below. |
| CPU utilization | Used CPU divided by requested CPU. |
| Memory utilization | Used Memory divided by requested Memory. |
| Cost per CPU | Cost per provisioned core-hour. |
| Provisioned CPU | Baseline and current CPU capacity, in cores. |
| Provisioned memory | Baseline and current Memory capacity, in GiB. |
The API and MCP also expose Provisioned, Requested, and Used values for both resources.
- Provisioned is total node capacity.
- Requested is the sum of pod resource requests.
- Used is actual measured resource consumption.
- Utilization is always
Used / Requested.
A smaller gap between provisioned, requested, and used values usually indicates better sizing and less waste.
Raw cluster-cost growth and provisioned-capacity growth remain useful when interpreting the report, but are not additional cards in the current comparison-table layout. Compare requested CPU and Memory separately to understand workload-demand changes. Older Console versions can present these metrics differently.
Understanding the Calculations
Input Values
Saving Report combines two kinds of inputs:
- A stored initial baseline snapshot or averages across the effective baseline range
- Current averages calculated over the selected time range
The report uses the following values:
| Value group | Meaning |
|---|---|
| Baseline provisioned CPU / Memory | Node capacity from the initial snapshot or average across the baseline range |
| Baseline requested CPU / Memory | Workload requests from the initial snapshot or average across the baseline range |
| Baseline used CPU / Memory | Measured usage from the initial snapshot or average across the baseline range |
| Baseline monthly cost | Stored monthly baseline cost, or average baseline hourly cost converted to monthly cost |
| Current provisioned CPU / Memory | Average provisioned capacity across the selected range |
| Current requested CPU / Memory | Average workload requests across the selected range |
| Current used CPU / Memory | Average measured usage across the selected range |
| Current monthly cost | Average hourly cluster cost converted to monthly cost, with the summary fallback described above |
Resource Utilization
CPU and Memory utilization are calculated independently on the server:
baselineCPUUtilization = baselineUsedCPU / baselineRequestedCPU
currentCPUUtilization = currentUsedCPU / currentRequestedCPU
baselineMemUtilization = baselineUsedMemory / baselineRequestedMemory
currentMemUtilization = currentUsedMemory / currentRequestedMemoryThe CPU and Memory comparison rows use these direct ratios.
The server also calculates the per-resource improvement values:
cpuUtilImprovement = currentCPUUtilization - baselineCPUUtilization
memUtilImprovement = currentMemUtilization - baselineMemUtilizationTotal Cost Savings
The modeled savings calculation answers a specific question:
What would the current workload likely cost if the cluster were running with the baseline provisioning behavior?
The server first estimates how much CPU would have been provisioned under the baseline request-to-provisioning ratio:
initialRatioCPU = baselineProvisionedCPU / baselineRequestedCPU
estimatedOriginalProvisionedCPU = currentRequestedCPU * initialRatioCPUIt then calculates the baseline cost per provisioned CPU core-hour:
costPerCPUBaseline = baselineCostPerMonth / baselineProvisionedCPU / MonthInHours
costPerCPUCurrent = currentCostPerMonth / currentProvisionedCPU / MonthInHoursUsing that baseline per-core cost, the server considers both the estimated capacity and the current provisioned capacity, then uses the larger modeled cost:
costFromEstimate =
estimatedOriginalProvisionedCPU * costPerCPUBaseline * MonthInHours
costFromCurrentProvision =
currentProvisionedCPU * costPerCPUBaseline * MonthInHours
estimatedOriginalCost = max(costFromEstimate, costFromCurrentProvision)
costSavingsAmount = estimatedOriginalCost - currentCostPerMonth
costSavingsPercent = costSavingsAmount / estimatedOriginalCostThese calculations require valid positive inputs. A missing baseline or unavailable cost must not be interpreted as proven zero spend or zero savings.
The Console can use a different display basis: if the raw baseline monthly cost is positive and its direct cost reduction is positive with a higher savings ratio than the modeled ratio, the Console uses that raw cost difference instead. Otherwise it uses the modeled result above. MCP exposes the selected display basis in data.consoleSavings.source (cluster_cost or estimated_original_cost). The legacy data.savings fields remain modeled values; do not mix the two bases in one explanation.
Savings per CPU
The Cost per CPU row compares baseline and current cost per provisioned CPU core-hour:
costPerCPUBaseline = baselineCostPerMonth / baselineProvisionedCPU / MonthInHours
costPerCPUCurrent = currentCostPerMonth / currentProvisionedCPU / MonthInHours
costPerCPUSavingsPercent =
(costPerCPUBaseline - costPerCPUCurrent) / costPerCPUBaselineA lower current value means each unit of provisioned compute is cheaper than it was at the baseline.
Cluster Cost
The raw cluster-cost growth metric uses the baseline monthly cost and the current monthly cost, independently of the Console savings display basis:
costGrowthRate = (currentCostPerMonth - baselineCostPerMonth) / baselineCostPerMonthA negative value means the cluster is currently spending less than it was at the baseline.
Cluster Growth Rate
The returned provisioned-capacity growth rate is CPU-based:
provisionedCPUGrowthRate =
(currentProvisionedCPU - baselineProvisionedCPU) / baselineProvisionedCPUMemory provisioned values provide separate supporting context; this rate is derived from CPU.
Reading the Numbers
- A positive savings amount is shown as savings; a negative amount is shown as additional monthly cost. The outcome badge says savings, increase, or No change, rather than relying on an unexplained sign.
- CPU and Memory utilization impacts are differences in ratios, displayed as percentage-point changes; cost-reduction percentages are relative changes. They are not interchangeable.
- More provisioned capacity can reflect workload growth rather than a loss of efficiency. Compare Requests, Used resources, and cost per CPU before attributing a change to optimization.