> For the complete documentation index, see [llms.txt](https://docs.north.cloud/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.north.cloud/docs/features/rightsize/auto-scaling.md).

# Auto Scaling

Learn how Rightsize sizes the instance type of your Auto Scaling groups.

On AWS accounts, Rightsize sizes the instance type of each Auto Scaling group. It recommends a smaller or cheaper instance type for the group, or a larger one when the group runs near capacity.

## What Rightsize Recommends

An Auto Scaling group runs a set of EC2 instances. AWS adds or removes instances to keep the group within the minimum and maximum that you set, so AWS already manages the number of instances. If you stop an instance in a group, AWS replaces it to keep the group at its desired count. For these reasons, Rightsize recommends a different instance type for all the instances in the group. It does not change the group's desired count, and it does not recommend a stop. Rightsize does not mark a group as idle. A group with very low usage is sized in the same way as any other group.

The savings are the price difference per instance, multiplied by the current number of instances in the group, up to the group's compute cost. For a group that runs more than one instance type, Rightsize uses the type of the instance that costs the most.

Rightsize does not suggest a burstable instance type (t2, t3, t3a, or t4g) as a target.

## How Rightsize Sizes a Group

Rightsize identifies the instances in a group from the `aws:autoscaling:groupName` tag in your billing data. AWS adds this tag to every instance in a group. Make sure that this tag is active as a cost allocation tag in the Billing and Cost Management console in AWS. An instance without the tag in your billing data is sized on its own, on the [EC2 tab](/docs/features/rightsize/ec2.md) in Rightsize.

Rightsize reads these CloudWatch metrics across the group over the lookback window: CPU utilization, network out, and memory used.

Memory data comes from the CloudWatch agent. Without the agent, Rightsize can lower the vCPU count but never lowers memory. The panel then shows "Sized on CPU only. Install the CloudWatch agent to include memory."

### The Sizing Target

Rightsize measures CPU and memory at the **CPU percentile** setting, which is P99 by default. A candidate instance type fits when that measured usage, scaled to the candidate's vCPU and memory, stays at or below the target:

```
base target = 100% − headroom
target      = base target × max(volatility floor, 1 − volatility sensitivity × CoV)
```

CoV is the coefficient of variation of the usage: its standard deviation divided by its mean. A spiky workload has a higher CoV. A higher CoV lowers the target, so the recommended size has more spare capacity.

For example, with the Balanced defaults (CPU headroom 20%, volatility sensitivity 0.5, volatility floor 0.5) and a CoV of 0.4:

```
base target = 100% − 20% = 80%
target      = 80% × max(0.5, 1 − 0.5 × 0.4) = 80% × 0.8 = 64%
```

You can change the CPU percentile, the headroom, and the volatility values in [Auto Scaling Settings](/docs/features/rightsize/auto-scaling.md#auto-scaling-settings), below.

Rightsize then recommends the cheapest instance type that fits. A candidate with fewer vCPUs must also pass the peak load check: the highest CPU utilization in the window, scaled to the candidate, stays below 95%. When this check excludes a smaller type that would otherwise have been recommended, Rightsize adds the reason **Limited by peak load**.

The network and storage checks that apply to EC2 instances do not apply to a group. For a group, CloudWatch adds up the network traffic of all its instances, so the total does not show what one instance needs. Rightsize does not read storage metrics for a group.

### Larger Instance Types

Rightsize recommends a larger instance type when daily average usage exceeds the base target on at least 25% of observed days. This must happen on at least two days. The finding state is **Under provisioned**.

### Commitments

When a commitment covers the instances in a group, the recommendation depends on the commitment:

* **Reserved Instances that do not allow a size change** - AWS allows a size change only on Linux/UNIX Reserved Instances with default tenancy. Reserved Instances for Windows, RHEL, SUSE, or SQL Server, and Reserved Instances with Dedicated tenancy, do not allow one. For these, Rightsize recommends no other instance type. It does the same when a commitment covers the group and Rightsize cannot identify it. When this blocks a type that would otherwise have been recommended, Rightsize adds the reason **Review Reserved Instance coverage before resizing**.
* **Linux/UNIX Reserved Instances with default tenancy** - Rightsize can recommend a smaller type in the same family. When it does, Rightsize adds the same reason. A regional Reserved Instance applies its discount across all sizes in the family automatically. A zonal Reserved Instance needs a modification to cover the new size.
* **EC2 Instance Savings Plans** - The discount applies only within one instance family, so Rightsize keeps the recommendation in the current family. When this blocks a type in another family that would otherwise have been recommended, Rightsize adds the reason **Commitment limits sizing to this family**.
* **Compute Savings Plans** - The discount applies across families. Rightsize can recommend a type in another family only when it has the committed rate for every candidate type in the other families. Otherwise, it keeps the recommendation in the current family.

## Using the Auto Scaling Tab

The summary metrics on the Auto Scaling tab are Available Savings, Idle, Optimized, Not Optimized, Tagged, and Untagged. The Idle tile always shows 0, because Rightsize does not mark a group as idle.

Click a row's **AI Suggestion** button to open the group's panel:

* **Current State** - the group name, and its instance type.
* **Noros Recommendation** - the recommended instance type.
* **Monthly Savings** - the estimated saving. For a group covered by a commitment, the card also shows "Estimated at your commitment's blended rate."
* **Findings** - the reasons behind the recommendation, as chips.

Below the panel sections, a chart shows the group's utilization history.

## Auto Scaling Settings

In **Settings**, open **Per-service overrides** and select **EC2 & Auto Scaling**. The same settings apply to EC2 instances. An empty field uses the account default.

| Setting                    | What it controls                                                                                                                                                                           | Balanced default |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------- |
| **CPU percentile**         | The usage percentile Rightsize sizes against. P99 excludes the highest 1 percent of readings.                                                                                              | P99              |
| **CPU headroom**           | Spare CPU kept above CPU usage at the CPU percentile. A higher value gives a larger, safer size.                                                                                           | 20%              |
| **Memory headroom**        | Spare memory kept above memory usage at the CPU percentile. A higher value gives a larger, safer size.                                                                                     | 20%              |
| **Volatility sensitivity** | How much variable usage lowers the sizing target. 0 does not lower it. 1 lowers it the most.                                                                                               | 0.5              |
| **Volatility floor**       | The lowest value the target can be lowered to. 0.5 keeps at least half of the base target.                                                                                                 | 0.5              |
| **Min savings percent**    | Rightsize does not recommend a smaller or cheaper type that saves less than this share of what the group costs today. The group shows as Optimized instead. Larger types are not affected. | 5%               |

## Auto Scaling Finding Reasons

Rightsize lists the reasons behind each finding. Check these before you act on a recommendation, to understand what it is based on.

| Reason                                                 | Meaning                                                                                                                                                                                                                      |
| ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Group Overprovisioned / Underprovisioned**           | The finding is based on usage across the group.                                                                                                                                                                              |
| **Volatile usage**                                     | CPU usage varies, so Rightsize lowered the sizing target.                                                                                                                                                                    |
| **Limited by peak load**                               | A smaller size passed the CPU percentile test, but the highest peak in the window exceeds its capacity.                                                                                                                      |
| **Limited by missing memory data / No memory metrics** | No memory agent is reporting data, so the recommendation is bounded by CPU alone. The group's panel links to the install guide for the CloudWatch agent.                                                                     |
| **Burst credits exhausted**                            | The current type is burstable (t2, t3, t3a, or t4g), and daily average usage exceeded the base target on at least 25% of observed days and on at least two days. This indicates that the group needs a larger instance type. |
| **Commitment limits sizing to this family**            | Because of the covering commitment, Rightsize keeps the recommendation in the current family. See [Commitments](/docs/features/rightsize/auto-scaling.md#commitments), above.                                                |
| **Review Reserved Instance coverage before resizing**  | Resizing this group would change what its Reserved Instance covers. See [Commitments](/docs/features/rightsize/auto-scaling.md#commitments), above.                                                                          |
| **GPU not sized**                                      | The instance type has GPU accelerators. Rightsize sizes on CPU, memory, and network, so it does not size GPU instances.                                                                                                      |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.north.cloud/docs/features/rightsize/auto-scaling.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
