AWS Compute Optimizer 101
Introduced in 2019, the AWS Compute Optimizer service analyzes the resources used in the AWS environment and provides suggestions to rightsize user applications. The service can help organizations reduce costs by up to 25% through its optimization recommendations for existing EC2 servers.
This machine learning-driven service makes recommendations based on analysis of CloudWatch metrics of EC2 instances and AWS Auto Scaling groups, as well as identifying patterns and optimal resources for a given workload. These recommendations reflect optimal usage of resources—since over-provisioning leads to additional costs, and under-provisioning leads to performance degradation. AWS Compute Optimizer provides greater functionality than other AWS tools, such as AWS Trusted Advisor and AWS Cost Explorer.
Additionally, this customized resource optimization service is available free of cost on all AWS accounts, irrespective of their support levels. It should be noted here that Amazon recommends detailed monitoring on CloudWatch, which is not free.
Rightsizing is one of the most important factors for cost optimization. This article explains how AWS Compute Optimizer makes it easy for its users to optimize for cost while making sure it doesn’t create performance degradation.
EC2 Instance Types
The AWS Compute Optimizer service categorizes the EC2 instances into one of the following categories based on their CPU, memory, storage, and networking capacities:
- Optimized: As the name suggests, an EC2 optimized instance executes workloads with optimal performance and infrastructure cost.
- Over-provisioned: An over-provisioned EC2 instance incurs unnecessary infrastructure cost.
- Under-provisioned: An EC2 instance is considered to be under-provisioned when it fails to meet the minimum performance requirements of the workload even for one specification (CPU, memory, or network). This results in poor application performance.
Benefits of AWS Compute Optimizer
AWS Compute Optimizer offers many benefits:
- Free: Available free of cost.
- Recommendations: Provides recommendations that help an organization quickly rightsize their instances for all AWS user accounts under their master AWS Organizations account.
- Cost reduction: Can help lower an organization’s operating expenses by recommending alternatives for over- or under-utilized resources in the cloud.
- Optimized performance: AWS Compute Optimizer makes recommendations that help organizations optimize the computing power and performance of their workloads.
How Does It Work?
The AWS Compute Optimizer uses machine learning to analyze historical utilization data collected from CloudWatch—including IO, storage, and CPU and network utilization. Based on the analysis of the data collected, Compute Organizer creates recommendations to help reduce costs and optimize compute power and workload performance.
AWS Compute Optimizer presents the recent metric history data as graphs. These graphs also depict projected utilization for the service’s optimization recommendations so an organization can compare options and ascertain the most cost-effective way to provision their instances.
Supported Resources and Requirements
The AWS Compute Optimizer helps an organization choose optimal resources for their workloads, generating recommendations for their EC2 instances as well as EC2 Auto Scaling groups. Recommendations are based on instance specifications and metric history using CloudWatch logs.
While AWS Compute Optimizer is easy to use, certain conditions must be satisfied for the service to generate recommendations.
- Metric requirements: AWS Compute Optimizer requires a minimum of 30 consecutive hours (but may require up to 60 hours) of metric data from an organization’s resources running on the cloud in order to generate recommendations. Once it has accumulated sufficient metric data, it starts the analysis process, which takes roughly 12 hours to complete. Once the analysis is complete, AWS Compute Optimizer presents the findings to the dashboard.
- Amazon EC2 instance limitations: One of the limitations of Amazon EC2 instances is that AWS Compute Optimizer creates recommendations for EC2 Auto Scaling groups (a collection of Amazon EC2 instances) that can run M, C, R, T, and X instance types, but not for any -g instance types, i.e., no recommendations are available for any -g instance types. Note that if an organization is running both supported and unsupported instance types, recommendations will only be generated for the supported instance types. When you create an EC2 account you can have a maximum of 20 instances per EC2 region. However, you can request an increase to your limit through the AWS support page.
Getting started with AWS Compute Optimizer is easy with an AWS account. The Compute Optimizer service can be accessed by following the steps below:
- Launch the AWS Compute Optimizer Console.
- When using the AWS Compute Optimizer for the first time, the Compute Optimizer landing page will be displayed.
- Click “opt in.”
- AWS Compute Optimizer will gather the account’s AWS resources and automatically start the analysis process.
- Now, opt out in the AWS Compute Optimizer. If AWS CLI is already installed and properly configured, enter the following command at the Command Prompt Window to opt-out:
aws compute-optimizer update-enrollment-status --status Inactive
After opting out, it takes around 12 hours for the AWS Compute Optimizer to analyze the AWS resources in the account and generate recommendations.
Metrics Analyzed by AWS Compute Optimizer
The AWS Compute Optimizer analyzes CloudWatch metrics of EC2 instances and monitors the following metrics for free:
- CPU utilization: This metric determines the percentage of allocated EC2 compute units.
- Memory utilization: This metric determines the amount of memory that has been used over a period of time.
- Network in: This metric identifies the number of bytes that have been received on all network interfaces.
- Network out: This metric identifies the number of bytes that have been sent out on all network interfaces.
- Local disk I/O: This metric represents the number of I/O operations for the local disk.
Compute Optimizer Rightsizing Insights
Initially, Compute optimizer supported only recommendations for EC2 and ASG, but recently AWS has started supporting EBS volumes and Lambda function configurations.
The rightsizing recommendations come in two forms of recommendations:
- Downsizing- These recommendations are given for over-provisioned instances and are intended to reduce the cost of underutilized instances.
- Upsizing- These recommendations are given for under-provisioned instances and are intended to improve performance.
Compute optimizer provides the price difference for each recommendation, up to three different options for each rightsizing recommendation, and the performance risk score associated with each suggested infrastructure change.
- Elastic Compute Cloud (EC2) recommendations- Compute optimizer provides recommendations for changing EC2 instance types from 140+ EC2 instance types.
- Auto Scaling Groups (ASG) Recommendations- Similarly to individual instances, the service provides recommendations for changing the ASG instance type.
- EBS volumes- EBS recommendations consist of two components, a recommended volume type (SSD/ HDD) and a recommended storage size.
- Lambda function configuration- Compute optimizer provides recommendations for reconfiguring the configured memory for each Lambda function.
AWS Compute Optimizer vs. Other AWS Offerings
AWS Compute Optimizer provides greater functionality than other AWS tools—such as AWS Trusted Advisor, which sends alerts when the CPU usage has exceeded a predefined threshold, and AWS Cost Explorer, which reports CPU underutilization.
AWS Compute Optimizer is adept at analyzing CPU, storage IO, and network IO utilization, all collected from CloudWatch. Incidentally, AWS Cost Explorer resource rightsizing recommendations and AWS Compute Optimizer use the same engine to generate recommendations.
AWS Compute Optimizer Dashboard
AWS Compute Optimizer comes with a dashboard that displays an overview of the optimization findings for an account’s AWS resources, organized by findings classifications which are updated on a daily basis. Figure 1 below illustrates an AWS Compute Optimizer Dashboard.
Figure 1: The AWS Compute Optimizer dashboard (Source: AWS).
AWS Compute Optimizer Competitors
- Turbonomic: Turbonomic helps reduce cost by focusing on the application performance first. It can act upon application-level metrics that include heap utilization, database memory utilization, and application response times. Turbonomic supports on-premise workloads running on hybrid or multi-cloud systems. Unlike AWS Compute Optimizer, which generates and refreshes the recommendations once per day, Turbonomic responds in real time to fluctuating demands. The AI-powered application resource management is adept at optimizing performance, compliance, and cost in real time.That said, the major downside is that the user interface isn’t user-friendly or intuitive. Additionally, to be truly useful, more detail is needed on each of the recommendations for sound decision-making.
- Apptio Cloudability: Apptio acquired Cloudability in May 2019 and the now-merged Apptio Cloudability can help organizations analyze, plan, and optimize the cost and utilization of resources available in the cloud as well as on-premises infrastructure. The excellent user interface, multicloud capabilities, and the sophisticated cost model engine differentiate Apptio from other tools.Apptio provides cost transparency and reporting capabilities that help organizations make better decisions about their cloud migration. However, it does have room for improvement. Application performance is low, and they don’t currently offer a direct connector for Oracle Cloud.
- Flexera (RightScale): RightScale, acquired by Flexera in 2018, is an industry leader in multicloud management and cost optimization, and is adept at providing insights to help optimize your cloud usage. RightScale can ascertain instance details in a single view, including instance ID, start time, end time, state, duration, etc.Unfortunately RightScale is SaaS-only, and the platform can be complicated. Because of this, you might need professional services to implement certain features, such as a multicloud gateway appliance.
Granulate and The Compute Optimizer
Granulate’s Real-Time Continuous Optimization reduces compute costs and improves performance by adapting the operating system’s resource allocation to best match the application’s needs. Granulate optimizes application performance, while Compute optimizer optimizes workload decisions, and this is why the solutions are complementary and work so well together.
- Granulate optimizes performance– Granulate’s cost-saving originates from reducing CPU utilization, which in some cases requires rightsizing to realize the saving.
- Native plug and play integration- Granulate comes with an out of the box integration with compute optimizer delivering additional optimization capabilities through rightsizing recommendations.
- Self-feeding cycle- Improving performance results in over-provisioning, and a well rightsized environment is a perfect ground to implement Granulate. This is why these solutions work interchangeably with each other
- Delivering optimal utilization- Combining both solutions results in optimal utilization and performance and a well-optimized workload with optimal performance and reduced compute costs.
AWS Compute Optimizer has been newly added to the stack of native tools that help customers manage and control cloud bills efficiently. This machine learning-based tool analyzes CPU, Storage IO, and network IO utilization based on data collected from CloudWatch.
AWS Compute Optimizer is available free of cost and can provide recommendations that help organizations rightsize their instances for all AWS accounts quickly. With the help of these recommendations, organizations reduce operating expenses by optimizing their compute resources based on workload patterns.