AWS Compute Optimizer

Complete FinOps Guide
Chapter 2.4 Drilldown: AWS Compute Optimizer

AWS Compute Optimizer is an Amazon Web Services (AWS) offering that analyzes Elastic Compute 2 (EC2) Instances, EBS Volumes, Auto Scaling groups, and Lambda Functions using Machine Learning (ML) to generate recommendations for optimal instance and workload combinations.

In this article, we’ll look at how AWS Compute Optimizer can help your organization navigate the complexities of AWS service configuration and avoid unnecessary inefficiency or wasted spend.

Getting Started with AWS Compute Optimizer

Before using AWS Compute Optimizer, you must opt-in to the service and allow it to analyze the relevant data, as shown in the following image.

Using Compute Optimizer requires opting into read-only data access.
AWS Compute Optimizer Opt In

Since Compute Optimizer utilizes CloudWatch data to provide recommendations, AWS requires your consent to collect these metrics. Opting in to the AWS Compute Optimizer service also creates a service-linked role, granting AWS read-only access to your resources and CloudWatch data.

Metrics

AWS Compute Optimizer analyzes several metrics to provide reports and recommendations accessible in a simple dashboard. By default, it examines CPU, storage, network ingress, and network egress utilization. If you want to analyze operating system memory metrics, you must install and configure the AWS CloudWatch agent, which incurs additional API and storage charges. It’s also not a practical solution for most organizations that use a different tool to monitor their EC2s.

Compute Optimizer analyzes data in 5-minute increments out of the box; however, AWS recommends reducing your data collection increments down to one minute. Note that detailed monitoring incurs additional charges; consider whether the benefits are worth the extra cost for your needs.

Analysis Period

AWS Compute Optimizer leverages the preceding 14 days' worth of data to make recommendations. This setting cannot be changed, extended, or amended in any way. Nevertheless, the service does generate dashboards and reports for instances running for approximately 30 hours. In some cases, this period can be as long as 60 hours, depending on the workload and instance configuration. Recommendations for Lambda functions can take a while longer. AWS Compute Optimizer does not provide optimization information for this service until it has been invoked at least 50 times in the last 14 days.

Recommendation Types

AWS Compute Optimizer generates one of three recommendations, depending on its analysis outcome:

Optimized
AWS Compute Optimizer considers a service optimized if all the specifications meet a workload's performance requirements. However, this analysis does not account for a varying level of risk tolerance (for example, between a test and production environment).
Under-provisioned
AWS Compute Optimizer determines a service to be under-provisioned if at least one of its specifications does not meet a workload’s performance requirements, even if others do.
Over-provisioned
AWS Compute Optimizer determines a service to be over-provisioned if at least one of its specifications can be reduced without impacting your workload's performance.

Once AWS Compute Optimizer has had enough time to analyze the initial data, the first recommendations appear on its dashboard. Since workloads experience peaks and troughs over time, the longer you allow the service to run, the more accurate its recommendations become.

AWS Compute Optimizer only provides these recommendations for four AWS services: EC2 Instances, Auto Scaling Groups, EBS Volumes, and AWS Lambda Functions.

EC2 Instance Recommendations

AWS Compute Optimizer can analyze and provide recommendations for EC2 instances; however, it only supports the M, C, R, T, I, D, H, and X instance families.

EC2 Findings Table

AWS Compute Optimizer provides the following information under its recommendations for EC2 Instances, as shown in the image below.

AWS Compute Optimizer EC2 instance recommendations
AWS Compute Optimizer EC2 instance recommendations
EC2 Instance Recommendations Fields
Field NameDescription
Instance IDThe AWS instance ID
Instance nameThe friendly name you can assign to an EC2 instance
FindingAWS Compute Optimizer's finding. The result could be optimized, under-provisioned or over-provisioned
Current instance typeThe current instance type, e.g., t2.small
Current On-Demand priceThe current on-demand price for the configured instance
Recommended instance typeAWS Compute Optimizer's recommended instance type, e.g., t3.small
Recommended On-Demand priceThe on-demand price for AWS Compute Optimizer's recommended instance type
Price differenceThe difference in cost per hour between the current and recommended instance type
Account IDThe associated AWS account ID for the instance
RegionThe regional location for the instance
Auto Scaling Group nameThe Auto Scaling Group name. This field is blank if the instance does not belong to an Auto Scaling Group
Attached EBS VolumesThe number of EBS volumes attached to the instance

EC2 View Details Table

You can view more detail for a recommendation by selecting “View Details” after selecting a row. Note that in the presented screenshot, Compute Optimizer offers three options. The tool expects users to choose the one best suited for them based on their judgment (which may not be evident to every user).

How to view AWS Compute Optimizer EC2 recommendations details AWS Compute Optimizer EC2 recommendations details
EC2 Instance Recommendation Details Fields
Field NameDescription
OptionsThe option identifier. Typically, AWS Compute Optimizer offers three options - Current, Option 1, and Option 2
Instance typeThe instance type of the selected option
On-Demand priceThe on-demand price of the option chosen
Price differenceThe difference in cost per hour between the selected option and the current instance
Performance riskThe potential performance risk should the subscriber opt to migrate their instance to the recommended AWS Compute Optimizer option. In the example above, migrating to the recommended option poses a very low-performance risk
vCPUsThe number of vCPUs assigned to the selected option
MemoryThe amount of memory allocated to the selected option
StorageThe type of storage available for the selected option
NetworkThe networking throughput of the selected option

Auto Scaling Group Recommendations

AWS Compute Optimizer supports recommendations for Auto Scaling Groups; however, as with EC2 Instances, it can only offer this service to instances belonging to the M, C, R, T, I, D, H, or X instance families. The service also limits its analysis and recommendations to Auto Scaling Groups with a fixed size. This limitation means that the Auto Scaling Group must be configured with the desired, minimum, and maximum settings set to the same value with no scaling policy attached.

Auto Scaling Group Findings Table

The information provided is nearly identical to the data provided for EC2 Instances due to the underlying elements that make up this service.

AWS Compute Optimizer Auto Scaling group recommendations
AWS Compute Optimizer Auto Scaling group recommendations
Auto Scaling Groups Recommendation Fields
Field NameDescription
Auto Scaling Group nameThe name given by the subscriber to the Auto Scaling Group
FindingAWS Compute Optimizer's finding. The result could be optimized, under-provisioned or over-provisioned
Current instance typeThe Auto Scaling Group's current instance type, e.g., t2.small
Current On-Demand priceThe current on-demand price for the configured instance
Recommended instance typeAWS Compute Optimizer's recommended instance type for the Auto Scaling Group, e.g., t3.small
Recommended On-Demand priceThe on-demand price for AWS Compute Optimizer's recommended instance type
Price differenceThe difference in cost per hour between the current and recommended instance type
Desired number of instancesThe number of desired instances configured
Account IDThe associated AWS account ID for the Auto Scaling Group
RegionThe regional location for the Auto Scaling Group

Auto Scaling Group Details Table

If you highlight the Auto Scaling Group and click on "View Details," it provides further detailed information as you find with the other services AWS Compute Optimizer analyzes.

How to view AWS Compute Optimizer Auto Scaling group recommendation details AWS Compute Optimizer Auto Scaling group recommendation details
Auto Scaling Groups Recommendation Details Fields
Field NameDescription
OptionsThe option identifier. Typically, AWS Compute Optimizer offers three options - Current, Option 1, and Option 2
Instance typeThe instance type of the selected option
On-Demand priceThe on-demand price of the selected option
Price differenceThe difference in cost per hour between the selected option and the recommended option
Performance riskThe potential performance risk should the subscriber opt to migrate their instance to the recommended AWS Compute Optimizer option. In the example above, migrating to the recommended option poses a very low-performance risk
Desired number of instancesThe number of desired instances based on the selected option
MemoryThe amount of the memory allocated to the selected option
StorageThe type of storage available for the selected option
NetworkThe networking throughput of the selected option

EBS Volume Recommendations

AWS Compute Optimize supports the following EBS Volume recommendations:

General Purpose (SSD GP3)
>IOPs and throughput
Provisioned IOPS (io1 io2)
>IOPS

EBS Volumes Findings Table

For EBS Volume recommendations, AWS Compute Optimizer provides information relevant to this service type, as shown in the image below.

AWS Compute Optimizer EBS recommendations
AWS Compute Optimizer EBS recommendations
EBS Recommendations Fields
Field NameDescription
Volume IDThe volume ID of the EBS Volume
FindingAWS Compute Optimizer's finding. The result could be optimized, under-provisioned or over-provisioned
Current volume typeThe current volume type, e.g., General purpose SSD (gp2)
Current sizeThe size in GB of the EBS Volume
Current IOPSThe IOPS allocated to the EBS Volume
Current monthly price The current monthly price of the EBS Volume
Recommended volume typeThe recommended volume type, e.g., General purpose SSD (gp3)
Recommended sizeThe recommended size in GB of the EBS Volume
Recommended IOPSThe recommended IOPS of the EBS Volume
Recommended monthly priceThe monthly price of the recommended EBS Volume
Price difference (monthly)The monthly price difference between the current and recommended EBS Volume
Attachment information The AWS attachment information ID
Account IDThe associated AWS account ID for the EBS Volume
RegionThe regional location for the EBS Volume

EBS Volumes Details Table

As with the EC2 Instances, AWS Compute Optimizer provides further details when you highlight the relevant volume and click on "View Details," as shown below.

How to view AWS Compute Optimizer EBS recommendations details AWS Compute Optimizer EBS recommendation details
EBS Recommendation Details Fields
Field NameDescription
OptionsThe option identifier. Typically, AWS Compute Optimizer offers three options - Current, Option 1, and Option 2
FindingThe selected option's volume type, e.g., General purpose SSD (gp2)
Volume sizeThe selected option's size in GB of the EBS Volume
Baseline IOPSThe selected option's baseline IOPS
Burst IOPSThe selected option's burstable IOPS
Baseline throughput The selected option's burst throughput in MiB per second
Burst throughputThe recommended volume type, e.g., General purpose SSD (gp3)
Monthly priceThe monthly price of the selected option Volume
Price difference (monthly)The difference in the monthly price between the current EBS Volume and the selected option
Performance riskThe potential performance risk should the subscriber opt to migrate their EBS Volume to the recommended AWS Compute Optimizer option. In the example above, migrating to the recommended option poses a very low-performance risk

AWS Lambda Function Recommendations

AWS Compute Optimizer can aid you in optimizing two categories of Lambda functions:

  1. Over-provisioned memory functions
  2. Compute-intensive functions

Functions must run at least 50 times over a 14 day period of analysis before AWS Compute Optimizer sends any recommendations. Elements such as function execution duration, CPU time used, and memory utilization are all considered.

Lambda Functions Findings Table

AWS Compute Optimizer Lambda recommendations
AWS Compute Optimizer Lambda Functions recommendations
Lambda Functions Recommendation Fields
Field NameDescription
Function nameThe name of the Lambda Function
Function versionThe version of the Lambda Function
FindingAWS Compute Optimizer's finding. The result could be optimized or not optimized.
Finding reasonAWS Compute Optimizer's finding reason. In the example above, AWS Compute Optimizer rates the Lambda Function as not optimized due to memory over-provisioning
Current configured memoryThe current configured memory of the Lambda Function
Recommended configured memoryThe recommended configured memory of the Lambda Function.

Lambda Functions Details Table

As with the other services, highlighting the function and clicking on "View Details" provides further detailed information to help you make an informed decision.

AWS Compute Optimizer Lambda recommendation details
AWS Compute Optimizer Lambda recommendation details
Lambda Functions Recommendation Details Fields
Field NameDescription
OptionThe option identifier. Typically, AWS Compute Optimizer offers two options for Lambda Functions - Current and Option 1
Configured MemoryThe configured memory of the selected option
Cost Difference (%)The cost difference as a percentage between the current and selected option
Used memory (maximum)The used memory of the current Lambda function
Duration (average)The average duration of the current Lambda function
Projected duration (expected)The projected duration of the recommended Lambda function

Dashboard

The dashboard consists of four panes, one for each of the services AWS Compute Optimizer analyzes: EC2 Instances, EBS Volumes, Auto Scaling Groups, and Lambda Functions. Once your initial analyses are complete, the dashboard populates with data as shown in the following image. Note that the green bar means that the resources are optimized. The color would change to yellow or red depending on whether it finds resources that require optimization.

Review your findings in the dashboard
AWS Compute Optimizer Dashboard

Each pane provides an overview of the analyzed instances and whether they are optimized, under-provisioned, or over-provisioned.

To view recommendations for each Findings category, simply click “View recommendations for [...].”

Selecting this link opens a new pane in the dashboard
View Recommendations by Findings Category

The detailed recommendation view differs for each element AWS Compute Optimizer analyzes. The example below shows a recommendation to change an EC2 instance from t2.medium to t3.medium (modernizing the EC2 generation) even though it reports that it’s optimized. In this example, by migrating to a more recent instance generation, the subscriber can save $0.0048 per hour. The fact that the instance shows as optimized, even though it still offers a recommended option to optimize further, may be confusing.

AWS Compute Optimizer dashboard showing recommendation details

Limitations and Shortcomings

Although AWS Compute Optimizer offers AWS subscribers some insights into services running on the AWS platform, the service has its limitations.

Analysis Period

AWS Compute Optimizer only analyzes data for the preceding 14 days. As some functions and processes run less frequently, the service may miss critical peaks or troughs. For example, if specific processes only run once a month, this data may not be analyzed by AWS Compute Optimizer if the period falls outside its 14-day window limitation.

Blackbox Analytics

The analytics engine that serves the recommendations is not exposed or explained, so users must accept the recommendations based on face value. This lack of understanding translates into a lack of confidence in the results.

Lack of Control

This limitation is related to the previous one in that the users lack both understanding and control of the recommendations engine. State-of-the-art recommendation engines allow users to configure constraints to control the results of the recommendations. For example, such advanced tools enable users to adjust a level of risk tolerance adequate for a production environment versus a development environment; or avoid certain families or types of EC2s (such as the EC2s belonging to the T series that have a burstable CPU) disapproved by their application team. Among other benefits, this feature could have helped eliminate some of the three options that may lead to a mistake by team members not aware of the company’s best practices.

Consideration for Reservations

EC2 recommendations should account for prior commitments made in the form of purchase reservations. For example, the AWS Compute Optimizer engine may recommend an m5.large EC2 instance without considering that the AWS account has purchased one-year reservation contracts for c4.large instances that have remained unused. In such a scenario, the least expensive instance is not the best choice since it would waste a prior investment.

Auto Scaling

The Auto Scaling recommendations feature does not provide any insight into Auto Scaling Groups (ASG) when the subscriber sets the desired, minimum, and maximum to different values with a scaling policy attached. Instead, the functionality is limited to the EC2s making up the ASG. The true benefit of auto-scaling comes from automated elasticity, where the service automatically scales up or down. This restriction limits AWS Compute Optimizer's relevance for these particular services.

Containers and Nodes

AWS Compute Optimizer does not provide analysis or recommendations for containers and nodes. As containerization is a staple of many AWS-based solutions, not offering optimization support for this core service is another severe limitation.

Spot Pricing

One of the core benefits of using a service like AWS Compute Optimizer is increasing efficiency and reducing cost. However, the service does not provide an option for pricing spot instances.

RDS Support

AWS Compute Optimizer currently lacks support for the Relational Database Service (RDS).

Single Cloud Analysis

As most enterprises have adopted a multi-cloud strategy, they prefer a single solution spanning their entire cloud computing estate, including Microsoft Azure, Google Cloud, and private cloud. A single solution spanning hybrid cloud reduces the need for configuration, reconciliation, report consolidation, and user training.

Getting the Most From Your Cloud Services

Leveraging cloud services offers organizations and individuals several advantages. As they provide solutions on top of vast quantities of pooled computing resources, they deliver economies of scale. As a result, you can build and consume solutions at a fraction of the cost.

In addition to the low price point they offer, cloud services also provide improved flexibility and enhanced efficiency. The ability to scale up or down rapidly enables you to align your computing resources with your solution requirements without waste. Furthermore, as you only pay for what you use, cloud platforms offer the most cost-effective way to deliver apps and services.

However, leveraging these advantages can be challenging. The scale and complexity of modern public cloud platforms require you to plan, size, and architect your solution appropriately to ensure you gain the maximum benefit. AWS Compute Optimizer gives you some insight into a limited set of AWS services. It provides some analysis and offers recommendations, but its scope and feature set are limited. In an enterprise environment where organizations leverage multiple services from several cloud providers, using a third-party specialist optimization tool would be a better option.

Continue Reading this Series