Cost Advisor (Preview)

Cost Advisor provides predictable cost analysis and savings estimates for Kubernetes environments.

Cost Advisor is available to only our SaaS users. The feature is not currently available for on-prem environments.

Use Cases

Cost Advisor helps you get insights into the following use cases:

  • What is the cost of running compute (eg. EC2 instances) within a Kubernetes cluster?
  • What is the cost of running of compute required for an application / workload / namespace?
  • How can I reduce the cost of running workloads by rightsizing?

Supported Environments

Currently only AWS is supported. We are actively working on adding support for GCP and Azure.

  • The Sysdig Agent is required for Cost Advisor. The agent collects resource usage information that is augmented with billing data. There is no explicit configuration required for Cost Advisor.
  • Kubernetes clusters must be running in AWS, GCP, or Azure. Both managed clusters (eg. EKS) and vanilla Kubernetes (eg. KOPS) are supported.

Concepts

Cost Allocation

Cost Allocation is applicable to workloads and their associated namespaces, and displays the current allocated costs depending on resource requirements. Note that it is different from infrastructure costs, as workload cost allocation is calculated independently and can be considered a “logical cost”.

As workloads can exceed their configured requests (ie. it’s overcommitted using more than the number of requests, but less than resource limits) Cost Allocation is currently calculated daily by evaluating requests and usage, and taking whichever is greater for the given time period.

Cost Allocation considers compute (memory and CPU). In future we will factor in other costs including storage, network / load balancer costs, and other associated infrastructure costs.

Example cost allocation for a workload that has requests set to 5 CPU cores and 16GB memory running on an t3.medium with a CPU cost of $0.02/hour and memory cost of $0.003/hour (on-demand pricing).

Day      CalculationCost                    
Day 1Requested CPU: 5 CPUs ($0.10/hr)
Actual CPU Usage: 2 CPUs ($0.04/hr)
Requested Memory: 16GB ($0.048/hr)
Actual Memory Usage: 6GB ($0.018/hr)

Requests are greater than usage; therefore, actual usage is ignored. We consider requests for calculating the cost.
CPU cost: $2.40
Memory cost: $1.15
Daily Cost: $3.55
Day 2Requested CPU: 5 CPUs ($0.10/hr)
Actual CPU Usage: 12 CPUs ($0.24/hr)
Requested Memory: 16GB ($0.048/hr)
Actual Memory Usage: 6GB ($0.018/hr)

Memory requests are greater than usage; however actual CPU usage is higher than requests.
In this case, we consider actual CPU usage and memory requests.
CPU cost: $5.76
Memory cost: $1.15
Daily Cost: $6.91
Day 3Requested CPU: 5 CPUs ($0.10/hr)
Actual CPU Usage: 12 CPUs ($0.024/hr)
Requested Memory: 16GB ($0.048/hr)
Actual Memory Usage: 25GB ($0.075/hr)

Both the actual memory and CPU usage are higher than requests (ie. overcommitted).
Here, we consider actual CPU and memory usage.
CPU cost: $5.76
Memory cost: $1.80
Daily Cost: $7.56

Efficiency Metrics

Resource Efficiency

Resource Efficiency is a calculation of both CPU and memory requests against usage, producing a single score. This indicates how well a workload is using its requested resources. The resource efficiency posture is put into the following brackets:

Value                    Explanation
0 (no data)No CPU or memory requests configured will show zero.
0-20A low value indicates a workload is oversized and may be a good candidate for rightsizing.
20-70Workload resource efficiency could be improved.
70-120Good resource efficiency - improvements could be made, but this is a good score.
120 or higherHigh values (over 120) indicates that the workload can suffer resource starvation or pod eviction as it is consuming a lot more resources than requested.
CPU Requests

Average usage of CPU against requests over the last 10 minutes. No requests configured will show zero. Example:

CPU Requests = sum workload CPU usage over the last 10 minutes / sum workload CPU requests

Memory Requests

Average usage of memory against requests over the last 10 minutes. No requests configured will show zero. Example:

Memory Requests = sum workload memory usage over the last 10 minutes / sum workload memory requests

Note that for CPU requests, memory requests, and resource efficiency, the calculation is made a the individual workload level. This means when looking at a namespace, these values are an aggregate of all workloads within the same space.

Cost Savings

Cost Advisor helps teams optimize costs by recommending changes to their infrastructure.

Workload Rightsizing

Cost Advisor will surface savings to help you prioritize rightsizing workloads with the highest saving potential.

For all workloads running on your clusters, Cost Advisor evaluates the usage against requests. For oversized workloads (usage is less than requests) you can use Cost Advisor to 1) quantify cost saving if you were to rightsize requests, and 2) see a recommendation on what values to rightsize workloads to.

Cost Advisor helps to baseline workload costs by recommending CPU and memory requests. The recommendation is calculated by looking at the P95 usage of all unique containers running within a workload over the past 1 day. The recommendation is provided per container (in the case of pods running multiple containers).

Currently the recommendation to achieve savings is based on P95 usage over the past 1 day. Support for customizing the methodology that produces this recommendation is coming soon.