Rightsizing resources can optimize application performance and lower costs in the AWS. Contrary, over-provisioning AWS resources leads to unused capacity, which increases costs and cloud waste.
Consider this. Even if you don’t use Amazon Elastic Compute Cloud (EC2) instances, the service still charges you per second or per hour that they remain active.
However, under-provisioning resources can negatively affect your application performance, resulting in poor customer experiences. This could lead to a higher churn rate as customers seek better service from your competition.
So, how does AWS Compute Optimizer help in this regard?
Table Of Contents
What Is AWS Compute Optimizer?
AWS Compute Optimizer is an AWS service that helps AWS customers to optimize resource configuration and utilization in order to ensure optimal performance and cost-efficiency.
It uses machine learning (ML) to analyze historical utilization and configuration data. Then it generates recommendations for maximizing value without spending extra based on that data. AWS Compute Optimizer then reports to you whether your resources are over-provisioned, under-provisioned, or optimized.
AWS Compute Optimizer provides analyses and optimization recommendations for four AWS services:
- Amazon Elastic Compute Cloud (EC2) instance types
- Amazon Elastic Block Store (EBS) volumes
- AWS Lambda functions
- Auto Scaling Groups (ASC)
Here’s how it really works.
How AWS Compute Optimizer Works
You must opt into using AWS Compute Optimizer. You can enable this in the Compute Optimizer console, which you can access from the AWS Compute Optimizer page.
Once you opt-in, the tool will use AWS CloudWatch metrics to infer configuration and resource consumption metrics. However, Compute Optimizer will only have read-only access (service-linked role), so it cannot change your CloudWatch metrics.
Next, AWS Compute Optimizer begins to analyze your AWS resources. Note that you need to run your organization’s metric data on the cloud for 30-60 continuous hours in order to generate recommendations. You can think of this as the minimum threshold for accurate recommendations.
Depending on how many AWS resources you have, the tool may take up to 12 hours to complete the analysis. You need to have invoked AWS Lambda at least 50 times in the previous 14 days for Compute Optimizer to generate AWS Lambda optimization recommendations.
What metrics does AWS Compute Optimizer use to make recommendations?
From AWS CloudWatch, AWS Compute Optimizer collects metrics on virtual CPU, memory, storage, network in/out, disk read/write, volume read/write, and other metrics on currently running instances. As a further option, you can install the AWS CloudWatch Agent to collect additional Compute Optimizer metrics like operating system memory (at extra cost).
By default, the service collects historical metrics from the last 14 days of utilization. They also set it to collect data in five-minute increments. If you want, you can decrease that to every minute. You can also extend the analysis period from 14 days to three months using Enhanced infrastructure metrics. Each of these extras is charged separately.
What recommendations does AWS Compute Optimizer provide?
To help right-size your workloads, Compute Optimizer provides up to three EC2 instance options, multiple EBS volume selections, and various Lambda function configuration choices.
Compute Optimizer also estimates and reports what vCPU usage, memory utilization, and workload runtime would be if you use the recommended AWS resource options. This gives you an idea of how your workload would perform if you implemented the recommended options before you even decide to implement them.
Once you are on the Compute Optimizer dashboard and have your AWS location properly entered, you’ll notice three types of recommendations on display:
Credit: Well Architected Labs
- Over-provisioned – Compute Optimizer generates this status when it is possible to reduce one or more of its specifications without negatively affecting workload performance.
- Optimized – This status shows your system configuration meets all of your workload’s performance requirements.
- Under-provisioned – Here, the tool considers one or more aspects of your system configuration insufficient to support your workload’s demands.
To proceed, you need to click on one of these “statuses”. To review an optimization status, click the radio button on the left. Then go to the View Details tab on the extreme right of the dashboard to view the details — like this:
Credit: Details on over-provisioned EC2 instances on Compute Optimizer – Well-Architected Labs
AWS Compute Optimizer also displays resource utilization graphs, like this:
Credit: Well-Architected Labs
This image does not show usage metrics for the memory utilization graph.
This is because AWS Compute Optimizer does not give recommendations until that instance’s memory utilization is enabled. So, ensure all resources have this enabled in order to receive recommendations on all of them.
Now, here is an example of how AWS Compute Optimizer makes EC2 instance recommendations:
Each option includes a recommendation for a specific instance type, as well as a comparison of the difference in costs and performance that may occur if you implement the recommendations.
Important note: AWS Compute Optimizer provides analyses and recommendations for M, C, R, T, I, D, H, and X families of EC2 instances and Auto Scaling Groups. It does not support similar capabilities for G instance families.
For EBS volumes, Compute optimizer supports Provisioned IOPS (io1 io2) -> IOPS and General Purpose (SSD GP3) -> IOPS and Throughput. For AWS Lambda functions, it provides optimization recommendations on Compute-intensive functions and Over-provisioned memory functions.
Recommendations: AWS Compute Optimizer Vs. AWS Cost Explorer Vs. AWS Trusted Advisor
In comparison with AWS Cost Explorer and AWS Trusted Advisor, AWS Compute Optimizer provides more detailed configuration and resource utilization information.
Also, Cost Explorer and Trusted Advisor recommendations tend to focus on AWS cost management, while Compute Optimizer optimization recommendations tend to focus on improving system performance without paying too much attention to the cost implications.
What Are the Benefits of Using Compute Analyzer?
- AWS Compute Optimizer is available to all AWS customers, no matter what your support level is.
- The service is free with an AWS subscription, but you can choose to pay extra for even more capabilities, like increasing the analysis period from the default 14 days to three months to improve the recommendations’ accuracy.
- It provides optimization recommendations for most families of EC2 instances and Auto Scaling Groups.
- By implementing the recommendations, you can often save money as well.
- The service shows optimized, over-provisioned, and under-provisioned resources clearly. So, you can pinpoint where you are doing well and where you need to rightsize if you don’t want to lose money or degrade system performance.
- AWS Compute Analyzer covers some of the most used AWS services; Amazon EC2 instances, Amazon EBS, Auto Scaling Groups, and AWS Lambda.
What Are AWS Compute Optimizer’s Limitations?
- While it provides actionable optimization recommendations, there is no direct way to implement the rightsizing action. You must manually adjust the instance settings.
- AWS Compute Optimizer is not available in all regions. It also supports M, C, R, T, and X instance families. If you use a combination of supported and unsupported instance families, Compute Optimizer only makes recommendations for the supported types.
- Compiling recommendations based on just 14 days of CloudWatch data may cause inaccuracies, especially if any anomalies occurred during those two weeks or if your workload fluctuates with the seasons.
- The service does not provide recommendations for optimizing Graviton and network-optimized (-n) instances.
- It’s challenging to customize recommendations and filters vary by AWS region.
- If you have a multi-cloud or hybrid cloud setup, AWS Compute Optimizer may not be helpful.
Key takeaway: AWS Compute Optimizer helps you view how you can optimize EC2 instances, EBS volumes, Auto Scaling Groups, and AWS Lambda functions. But it does not automatically apply the recommendations.
Instead, you must apply them manually and indirectly. Also, it is ideal for recommending performance optimization rather than optimizing both performance and cost.
Is There A Better AWS Compute Optimizer Alternative?
You can consider using both of these options together with Compute Optimizer:
ProsperOps empowers you to:
- Automatically detect optimized, under-provisioned, and over-provisioned resources in your AWS environment continuously. Unlike Compute Optimizer, ProsperOps will rightsize them based on your pre-set triggers to save you time and money daily.
- Use your aggregate EC2 spend to automate choosing the right AWS Savings Plans and Reserved Instances for your workloads.
- Start saving on RIs and Savings Plans right away.
- Minimize the risk of commitment lock-in
- Optimize instances continuously without human intervention so you can focus on innovation elsewhere.
- Adjust your Amazon EC2 commitments in real-time to meet your environment’s capacity requirements.
ProsperOps is an official CloudZero partner. Furthermore, it is a founding member of the FinOps Foundation, a FinOps Certified Platform, a 2021 Gartner Cool Vendor in Cloud Computing, and an AWS Advanced Technology Partner.
Learn more about how ProsperOps autonomous savings works here.
With Xosphere Instance Orchestrator, you can run AWS EC2 Spot Instances at the same reliability level as On-Demand instances — but at a fraction of the cost. Xosphere automatically replaces On-Demand instances with the more affordable Spot instances whenever they are available. It does this continuously and seamlessly, moving applications to the right place at the right time to maximize savings, reliability, and availability.
Learn more about how Xosphere works here.
Important note: Using CloudZero’s autonomous discount optimization dashboard, you can quickly identify workloads that can benefit from optimization.
With ProsperOps or Xosphere, you can deploy fully managed instance optimization with just one change to an auto-scaling group tag. The result is full visibility into your discounts, along with the assurance that your discounts are managed as efficiently as possible.
to see your effective savings rate (ESR) and optimize your AWS discounts. Whether you use custom tools, Cloud provider tools, or third-party solutions, you’ll be able to see all your discounts in one place.
AWS Compute Optimizer FAQ
The following are some answers to some of the most frequently asked questions about AWS Compute Optimizer.
Is AWS Compute Optimizer free?
Yes. AWS Compute Optimizer is free, provided you have an AWS account.
What AWS resource types does Compute Optimizer rightsize?
AWS Compute Optimizer provides recommendations for optimizing Amazon EC2 instances, Amazon EBS volumes, AWS Lambda functions, and AWS Auto Scaling Groups.
Who can use Compute Optimizer in AWS?
Besides standalone AWS accounts, the service also supports the Management Account of an organization in AWS and member accounts of the organization.
How far back can AWS Compute Optimizer look back to make recommendations?
14 days. But once you activate Enhanced infrastructure metrics (paid feature), you can analyze up to three months of configuration and utilization metrics at the resource, account, or organization levels.
What recommendations does AWS Compute Optimizer make for AWS Lambda?
It offers recommendations on both compute-intensive and over-provisioned memory Lambda functions.
What AWS Services does Compute Optimizer analyze and provide recommendations for?
AWS Compute Optimizer analyzes configuration and utilization data on Amazon EC2 instances, AWS Lambda functions, Amazon Elastic Block Storage (EBS) volumes, and Auto Scaling Groups.
How do I enable Compute Optimizer on AWS?
Visit the AWS Compute Optimizer web page, and if you already have an AWS account, opt into using Compute Optimizer through the Compute Optimizer console or API.