prosperops logo

AWS Compute Optimizer: How To Fine-Tune Your Resource Usage

Originally Published January, 2024
prosperops_logo

Rightsizing is pivotal to effectively managing Amazon Web Services (AWS) resources and cost management. Underprovisioning cloud computing resources can affect performance, and overprovisioning can result in unused capacity and unnecessary costs. 

AWS Compute Optimizer helps users efficiently utilize AWS resources. It can help to rightsize workloads through artificial intelligence (AI) and machine learning (ML) to reduce costs by up to 25%. 

Rightsizing is key to optimizing AWS performance and cost—though sometimes organizations get it wrong, especially when first moving to the AWS cloud. 

AWS Compute Optimizer is a key tool for managing AWS resource usage and comes with both benefits and limitations, which we’ll explore in detail below. 

What is AWS Compute Optimizer?

AWS Compute Optimizer is an AWS Service that helps optimize cloud resources for performance and cost. It uses ML to analyze usage patterns and recommends changes to improve performance and reduce costs. 

It works across four types of AWS services: 

  1. Amazon Elastic Compute Cloud (EC2) instance types
  2. Amazon Elastic Block Store (EBS) volumes
  3. Amazon Elastic Container Service (ECS) services on AWS Fargate
  4. AWS Lambda functions

Its purpose is to optimize cloud resources by analyzing data, providing recommendations, and reporting on rightsized workloads. It’s a tool that can be part of savings plan strategies.

Rightsizing is the process of adjusting resources (such as instances or storage) to effectively match workload requirements. The goal is to optimize performance and cost by ensuring that you are not overprovisioning or underprovisioning resources.

In cloud environments like AWS, rightsizing is one of the most important factors for cost optimization because it directly impacts your applications’ cost efficiency and performance.

How does AWS Compute Optimizer work?

Using ML, AWS Compute Optimizer makes recommendations to reduce AWS workload costs and increase performance by analyzing utilization data.  

1. Data collection

To start, users must confirm permissions and opt-in individual, management, or all member AWS accounts in the organization. Once accounts are opted in and linked, AWS Compute Optimizer uses ML to analyze CloudWatch metrics and external Application Performance Monitoring tools to generate recommendations. 

AWS Compute Optimizer collects historical resource utilization data from various sources such as Amazon CloudWatch, AWS Config, AWS CloudTrail, and Instance Metadata.

CloudWatch is the primary data source Compute Optimizer uses to analyze AWS resources and provide recommendations. As a separate tool, CloudWatch observes and monitors resources and applications on AWS as well as other resources.

With only read-only access, Compute Optimizer accesses CloudWatch metrics and uses them to generate recommendations. 

2. Machine learning analysis

AWS Compute Optimizer uses ML algorithms to analyze resources’ current configuration and utilization data. Once connected to data sources such as CloudWatch, Compute Optimizer collects data on various metrics and then presents this data as graphs on the dashboard. 

You need to run the metric data for at least 30 consecutive hours on the cloud—but sometimes up to 60 hours—for Compute Optimizer to generate recommendations effectively. The ML process only begins once the Compute Optimizer collects enough data, which takes around 12 hours on average.

3. Optimization recommendations

The AWS Compute Optimizer provides a set of APIs and console experience, providing a cross-account view of all data analyzed. With this also comes recommendations for optimal AWS resources for user AWS workloads. 

Compute Optimizer provides up to three recommended optimization options for Amazon EC2, Amazon EBS, and Amazon EC2 Auto Scaling groups. It delivers one memory size recommendation for AWS Lambda functions and one task-level CPU and memory size recommendation for ECS services on AWS Fargate. 

Compute Optimizer also provides one license recommendation for Microsoft SQL Server edition downgrading.

Compute Optimizer delivers actionable resource recommendations to help organizations identify optimal AWS resources for workloads. AWS designed Compute Optimizer to provide recommendations that don’t require significant expertise or huge investment.

To support recommendations, it shares what usage, memory, and workload runtime the recommendations would require. These recommendations provide valuable cost savings and performance improvements to create rightsized workloads. 

4. Instance-type suggestions

This analysis includes the status of each AWS resource and instance recommendations. For example, with EC2 instances, it highlights if it’s under-provisioned, optimized, or over-provisioned. It compares current specific instance types with up to three recommended options. 

Each option shows the instance type, on-demand price, price difference, performance risk, vCPUs, memory, storage, and more. The three options, as compared to current usage, are a very helpful comparison showcasing the difference in costs and performance per recommendation. 

The EC2 instance metrics that Compute Optimizer monitors for free are CPU utilization, memory utilization, network in, network out, and local disk I/O. 

AWS Compute Optimizer delivers recommendations for selected EC2 instances only. It supports EC2 instance type and size recommendations for standalone EC2 instances of M, C, R, T, X, I, D, H, Z, G, and P instance families. 

5. Recommendation implementation 

Users can identify top optimization opportunities through the dashboard-level metrics of savings opportunities and performance improvement opportunities.

Compute Optimizer applies savings opportunity metrics to EC2, EBS, ECS services on AWS Fargate, and AWS Lambda. The optimizer shows savings you can achieve at the account, resource type, or resource level. You can use these metrics to evaluate and prioritize cost efficiency opportunities and monitor cost efficiency over time. 

Performance improvements include the percentage and number of underprovisioned resources. Again, you can use these metrics to evaluate and prioritize performance improvement opportunities. 

Implementing the recommended changes to AWS resources depends on the type of resource you want to modify. For example, users may need to modify the configuration of individual EC2 instances or adjust the settings of Auto Scaling groups. 

After making changes, it’s essential to monitor the performance to ensure that the adjustments have the desired impact and that performance remains within acceptable thresholds.

Users can leverage specific AWS tools and services to assist in the implementation process:

  • AWS Systems Manager (SSM) can automate configuration changes on EC2 instances at scale.
  • AWS Auto Scaling helps to automatically adjust capacity based on demand.
  • AWS Command Line Interface (CLI) or SDKs can help script and automate the implementation of recommendations.

Benefits of AWS Cloud Optimizer

AWS Compute Optimizer offers a range of benefits that empower organizations to enhance the efficiency, performance, and cost-effectiveness of their cloud infrastructure.

Resource rightsizing

As discussed, resource rightsizing is the practice of aligning the capacity of cloud resources with the actual needs of workloads. It involves adjusting the specifications of virtual machines, storage, and other cloud components to ensure they are neither underutilized nor overprovisioned. 

Proper rightsizing helps optimize both performance and cloud cost, ensuring organizations have the right resources to meet the application’s requirements without incurring unnecessary expenses.

AWS Cloud Optimizer helps achieve rightsizing by showing optimized, overprovisioned, and underprovisioned resources clearly. With this insight, users can pinpoint where resources are effective and where you can alter them. 

Improved performance

By aligning resources with actual needs, Compute Optimizer enhances overall resource utilization, reducing instances of underprovisioning or overprovisioning. 

This optimization ensures applications receive the necessary computing power, enhancing responsiveness and improved performance. 

Optimization recommendations from AWS Compute Optimizer can significantly enhance resource utilization and application responsiveness. 

The recommendations allow for improved utilization patterns, scaling for demand, balanced workloads, and enhancing application responsiveness. It also helps prevent performance bottlenecks when applications lack the resources needed to handle peak loads.

Automatic recommendations

AWS Cloud Optimizer provides automatic recommendations as the tool continuously monitors and updates recommendations based on changing resource usage patterns.

The automatic nature of the recommendations means that users don’t have to analyze extensive datasets or configure complex algorithms manually. Instead, AWS Compute Optimizer dynamically adapts to changes in resource usage patterns. 

Limitations of AWS Cloud Optimizer

Despite AWS Cloud Optimizers’ functionality, it also has some limitations that are important to be aware of. While it effectively analyzes data and provides recommendations, users must manually action the optimization recommendations. It also has other considerations that will not suit all organizations. 

Limited to certain AWS services

It does not analyze data and provide recommendations for all AWS services, only those we’ve already mentioned. This might impact users relying heavily on AWS services not covered by Cloud Optimizer. 

Limited to historical data

AWS Cloud Optimizer relies on historical data for analysis; however, it can only look back 14 days at a time. In rapidly changing environments, relying on historical data may pose challenges as it will not accurately reflect the business environment. 

Actioning recommendations based on just 14 days of CloudWatch data, for example, may result in inaccuracies. As if workloads fluctuate between seasons, or if anomalies occur, two weeks’ worth of data won’t reflect holistic and dynamic usage. 

No support for custom metrics

Another limitation of AWS Compute Optimizer is the absence of explicit support for custom metrics. Custom metrics are user-defined performance indicators that can be specific to an application or workload. Some organizations may require custom utilization metrics for optimization.

Not suitable for constantly changing workloads

Due to the data collection and metrics utilized, AWS Cloud Optimizer may not be ideal for workloads that frequently change. The more robust and stable the historical data, the more accurate the recommendations will be, especially over long time periods. 

How Prosper Ops bridges the gaps in AWS Compute Optimizer

ProsperOps provides the commitment flexibility to change instance families, generations, sizes, and operating systems at will. 

Customers achieve engineering freedom through ProsperOps’ autonomous exchange of Convertible RIs to match their engineering usage in real-time. 

Whether it be autoscaling or re-architecting, ProsperOps gives engineers the freedom to optimize the usage and ensure the discount instruments provide high coverage without overcommitments.

Gain mastery over AWS spending with ProsperOps

AWS Compute Optimizer is an excellent tool to measure and monitor performance and budgets for certain AWS services. While it’s a helpful tool, and AWS designed it to provide effective recommendations, it’s important to know its limitations and understand where it may not be relevant. 

AWS cost optimization is a journey, and while there’s no single “right” way to optimize, some tools stand above the rest. 

You can use ProsperOps with AWS Compute Optimizer as it automatically detects optimized, underprovisioned, and overprovisioned resources in AWS environments continuously. ProsperOps automatically monitors and applies the best AWS discounts, ensuring your business only pays for the AWS resources it uses. 

Book a demo with ProsperOps and see how it can automate your business’s cost optimization—with no manual intervention from your team.

Share

Facebook
Twitter
LinkedIn
Reddit

Get started for free

Request a Free Savings Analysis

3 out of 4 customers see at least a 50% increase in savings.

Get a deeper understanding of your current cloud spend and savings, and find out how much more you can save with ProsperOps!

Submit this form to request your free cloud savings analysis.

🌴  Join us at FinOps X:  RSVP For The 2nd Annual 8-Bit After Party!