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.
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.
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.
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.
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.
AWS Compute Optimizer generates one of three recommendations, depending on its analysis outcome:
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.
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.
AWS Compute Optimizer provides the following information under its recommendations for EC2 Instances, as shown in the image below.
Field Name | Description |
---|---|
Instance ID | The AWS instance ID |
Instance name | The friendly name you can assign to an EC2 instance |
Finding | AWS Compute Optimizer’s finding. The result could be optimized, under-provisioned or over-provisioned |
Current instance type | The current instance type, e.g., t2.small |
Current On-Demand price | The current on-demand price for the configured instance |
Recommended instance type | AWS Compute Optimizer’s recommended instance type, e.g., t3.small |
Recommended On-Demand price | The on-demand price for AWS Compute Optimizer’s recommended instance type |
Price difference | The difference in cost per hour between the current and recommended instance type |
Account ID | The associated AWS account ID for the instance |
Region | The regional location for the instance |
Auto Scaling Group name | The Auto Scaling Group name. This field is blank if the instance does not belong to an Auto Scaling Group |
Attached EBS Volumes | The number of EBS volumes attached to the instance |
Meet us at KubeCon + CloudNativeCon North America. Salt Lake City, Utah | November 13-15, 2024
Schedule a MeetingYou 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).
Field Name | Description |
---|---|
Options | The option identifier. Typically, AWS Compute Optimizer offers three options – Current, Option 1, and Option 2 |
Instance type | The instance type of the selected option |
On-Demand price | The on-demand price of the option chosen |
Price difference | The difference in cost per hour between the selected option and the current instance |
Performance risk | The 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 |
vCPUs | The number of vCPUs assigned to the selected option |
Memory | The amount of memory allocated to the selected option |
Storage | The type of storage available for the selected option |
Network | The networking throughput of the selected option |
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.
The information provided is nearly identical to the data provided for EC2 Instances due to the underlying elements that make up this service.
Field Name | Description |
---|---|
Auto Scaling Group name | The name given by the subscriber to the Auto Scaling Group |
Finding | AWS Compute Optimizer’s finding. The result could be optimized, under-provisioned or over-provisioned |
Current instance type | The Auto Scaling Group’s current instance type, e.g., t2.small |
Current On-Demand price | The current on-demand price for the configured instance |
Recommended instance type | AWS Compute Optimizer’s recommended instance type for the Auto Scaling Group, e.g., t3.small |
Recommended On-Demand price | The on-demand price for AWS Compute Optimizer’s recommended instance type |
Price difference | The difference in cost per hour between the current and recommended instance type |
Desired number of instances | The number of desired instances configured |
Account ID | The associated AWS account ID for the Auto Scaling Group |
Region | The regional location for the Auto Scaling Group |
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.
Field Name | Description |
---|---|
Options | The option identifier. Typically, AWS Compute Optimizer offers three options – Current, Option 1, and Option 2 |
Instance type | The instance type of the selected option |
On-Demand price | The on-demand price of the selected option |
Price difference | The difference in cost per hour between the selected option and the recommended option |
Performance risk | The 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 instances | The number of desired instances based on the selected option |
Memory | The amount of the memory allocated to the selected option |
Storage | The type of storage available for the selected option |
Network | The networking throughput of the selected option |
AWS Compute Optimize supports the following EBS Volume recommendations:
For EBS Volume recommendations, AWS Compute Optimizer provides information relevant to this service type, as shown in the image below.
Field Name | Description |
---|---|
Volume ID | The volume ID of the EBS Volume |
Finding | AWS Compute Optimizer’s finding. The result could be optimized, under-provisioned or over-provisioned |
Current volume type | The current volume type, e.g., General purpose SSD (gp2) |
Current size | The size in GB of the EBS Volume |
Current IOPS | The IOPS allocated to the EBS Volume |
Current monthly price | The current monthly price of the EBS Volume |
Recommended volume type | The recommended volume type, e.g., General purpose SSD (gp3) |
Recommended size | The recommended size in GB of the EBS Volume |
Recommended IOPS | The recommended IOPS of the EBS Volume |
Recommended monthly price | The 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 ID | The associated AWS account ID for the EBS Volume |
Region | The regional location for the EBS Volume |
Meet us at FinOps X Europe. Barcelona, Spain | November 12 -13, 2024.
Schedule a MeetingAs with the EC2 Instances, AWS Compute Optimizer provides further details when you highlight the relevant volume and click on “View Details,” as shown below.
Field Name | Description |
---|---|
Options | The option identifier. Typically, AWS Compute Optimizer offers three options – Current, Option 1, and Option 2 |
Finding | The selected option’s volume type, e.g., General purpose SSD (gp2) |
Volume size | The selected option’s size in GB of the EBS Volume |
Baseline IOPS | The selected option’s baseline IOPS |
Burst IOPS | The selected option’s burstable IOPS |
Baseline throughput | The selected option’s burst throughput in MiB per second |
Burst throughput | The recommended volume type, e.g., General purpose SSD (gp3) |
Monthly price | The 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 risk | The 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 Compute Optimizer can aid you in optimizing two categories of Lambda 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.
Field Name | Description |
---|---|
Function name | The name of the Lambda Function |
Function version | The version of the Lambda Function |
Finding | AWS Compute Optimizer’s finding. The result could be optimized or not optimized. |
Finding reason | AWS 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 memory | The current configured memory of the Lambda Function |
Recommended configured memory | The recommended configured memory of the Lambda Function. |
As with the other services, highlighting the function and clicking on “View Details” provides further detailed information to help you make an informed decision.
Field Name | Description |
---|---|
Option | The option identifier. Typically, AWS Compute Optimizer offers two options for Lambda Functions – Current and Option 1 |
Configured Memory | The 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 |
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.
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 […].”
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.
Although AWS Compute Optimizer offers AWS subscribers some insights into services running on the AWS platform, the service has its limitations.
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.
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.
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.
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.
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.
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.
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.
AWS Compute Optimizer currently lacks support for the Relational Database Service (RDS).
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.
A free 30-day trial for cloud & Kubernetes resource control. Experience in your environment or use sample data. See optimization potential in 48 hours. No card required.
Free TrialLeveraging 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.
Yes. AWS Compute Optimizer is free if you have an AWS account.
Navigate to the AWS Compute Optimizer website, and if you have AWS account, you can initiate the use of Compute Optimizer by opting in via the Compute Optimizer console or through its API.
The cost-benefit analysis of using AWS Compute Optimizer can significantly differ between small and large enterprises. For small enterprises, the primary advantage lies in reducing operational costs and improving efficiency without the need for significant investment in dedicated IT resources or advanced cloud management tools. Small businesses can leverage AWS Compute Optimizer to fine-tune their AWS resource usage, potentially leading to substantial savings on their cloud bills. For large enterprises, the benefits extend to optimizing large-scale deployments and complex architectures, where even minor efficiency improvements can lead to significant cost reductions across numerous resources. However, large organizations might also have more complex requirements, such as compliance, security, and integration needs, which could necessitate additional investments in third-party tools or services to complement AWS Compute Optimizer’s recommendations.
AWS Compute Optimizer is designed to work seamlessly within the AWS ecosystem, primarily using CloudWatch data for its analysis. AWS services, in general, offer APIs and SDKs that facilitate integration with a broad range of external tools. Therefore, it’s plausible that data from third-party tools could be ingested into CloudWatch or another intermediary service that feeds into AWS Compute Optimizer, enabling a broader data analysis scope beyond the default AWS metrics.
AWS Compute Optimizer adheres to AWS’s standard practices for data security and privacy. Since it operates under a read-only model to analyze your AWS resource configurations and usage data, it doesn’t modify your resources. All data analysis and processing are conducted within the secure AWS environment, with AWS’s robust security measures protecting customer data. AWS also complies with major privacy regulations and frameworks, ensuring that data handling meets strict privacy standards.
When comparing AWS Compute Optimizer to similar services offered by other cloud providers or third-party vendors, AWS Compute Optimizer’s main advantage lies in its deep integration with the AWS ecosystem and its use of machine learning to tailor recommendations specifically for AWS resources. Competing services may offer broader multi-cloud support or feature different optimization focuses, such as cost optimization across various cloud platforms or performance optimization for specific applications. However, AWS Compute Optimizer’s strength is its specific focus on optimizing AWS services, making it potentially more effective for AWS-centric environments. Cost-wise, AWS Compute Optimizer could be more cost-effective for AWS users due to its integration and the potential for cost savings it identifies, though third-party services might offer additional features or broader support that could justify their costs.