Watching AWS Instance Types Evolution in 2025

2025-10-11

Git history for AWS Metadata

I have been experimenting with using CUE for defining my cloud infrastructure. Due to these experiments I happened to commit some of the AWS metadata (like the types of VMs you can provision there or what availability zones are available in different regions) into a git repository, sometimes updating it. Recently I realized that this metadata (in CUE format) grew from ~1.5 MB to ~2.6 MB over ~1 year. I got curious about what changed and caused such growth in the number of bytes: git diff should be helpful in reviewing this.

Retrieving the metadata

We are looking into the metadata related to the AWS EC2 instance types. Let's first clarify how this metadata is retrieved. AWS provides API to get the EC2 instance types they support in a particular data center. The easiest way to use it is via their CLI:

aws --region "us-east-1" ec2 describe-instance-types \
    | cue import -f -o itypes_gen.cue -p useast1 json: -
cat itypes_gen.cue

package useast1

InstanceTypes: [{
    InstanceType:      "m6gd.4xlarge"
    CurrentGeneration: true
    FreeTierEligible:  false
    MemoryInfo: SizeInMiB: 65536
    // ...
}]

The result is a list (JSON array in the API response) of instance types. I committed the result of this import into a git repo several times between October 2024 and October 2025.

To facilitate analyzing the differences in the versions of this array, we should also sort it to maintain a stable order:

InstaceTypesSort: {
    _sortFields: {InstanceType: string, ...}

    input: [..._sortFields]
    output: list.Sort(input, {x: _sortFields, y: _sortFields, less: x.InstanceType < y.InstanceType})
}

At first, this sorting was not done before making commits, so to analyze, we need to check out the versions in the history, sort the array, and then review the changes. With CUE, we can try to unify a previous version with a new one, and when this fails, show what fields are different.

The full script to do this is in the cuetf repo, and the result of the analysis can be found in the GitHub Actions logs.

Let's now dive into what this report means.

Increase in the number of the supported instance types

The analysis summary begins with the number of instance types we see in the API responses on different days. We have these numbers for us-east-1 (US, North Virginia) and eu-central-1 (Germany, Frankfurt). The first one is the biggest AWS data center with the highest diversity of instance types. In both data centers the number of supported machines grows over time.

count: {
    "2024-10-13": 842
    "2025-08-03": 927
    "2025-08-04": 927
    "2025-09-17": 993
    "2025-09-21": 993
    "2025-09-28": 1003
}
count: {
    "2024-10-13": 765
    "2025-08-03": 834
    "2025-08-04": 834
    "2025-09-17": 878
    "2025-09-21": 878
    "2025-09-28": 889
}

Many new instance types were added. Examples include

newTypes: "2025-08-04": "c7i-flex.12xlarge": {
    cpuClock: 3.2
    mem:      98304 // 96 GB
    cpuCnt:   48
}
diffs: "2024-10-13..2025-08-04": "FreeTierEligible:false->true": "c7i-flex.large": true
newTypes: "2025-08-04": "f2.6xlarge": {
    cpuClock: 3.4
    mem:      262144 // 256 GB
    cpuCnt:   24
}
newTypes: "2025-08-04": {
    "c8gd.xlarge": {
        cpuClock: 2.8
        mem:      8192
        cpuCnt:   4
    }
    "c8gn.12xlarge": {
        cpuClock: 2.8
        mem:      98304
        cpuCnt:   48
    }
}
diffs: "2024-10-13..2025-08-04": "CurrentGeneration:true->false": {
    "c6gn.large":    false
    "c6gn.medium":   false
    // ...
}

While the total number of the instance types has a monotonic growth, support for some types is removed over time. Particularly, between Oct 13, 2024 and Aug 4, 2025, in both data centers, they stopped supporting

removed: {
    "g3.16xlarge":       true
    "g3.4xlarge":        true
    "g3.8xlarge":        true
    "g3s.xlarge":        true
    "i3.metal":          true
    "p2.16xlarge":       true
    "p2.8xlarge":        true
    "p2.xlarge":         true
    "u-12tb1.112xlarge": true
    "u-18tb1.112xlarge": true
    "u-24tb1.112xlarge": true
    "u-9tb1.112xlarge":  true
}

Hibernation support

Hibernation is a feature supported by AWS EC2 for particular machine types and operating systems that allows you to persist the state of your machine's RAM and not pay for the CPU time, keeping (and paying for) this state on a disk. It's very similar to closing the lead of your laptop and putting it into the sleep mode.

So between October 2024 and October 2025, hibernation support was extended to a few different instance types.

diffs: "2024-10-13..2025-08-04": {
    "HibernationSupported:false->true": {
        "c6a.large":      true
        "c7a.medium":     true
        "c6in.large":     true
        "i4g.large":      true
        "m6in.large":     true
        "x2gd.large":     true
        // ...
    }
}

Extended metadata

Another non-negligible source of metadata size increase is an extension of the API response structure with new metadata fields. Particularly, in 2025, AWS started exposing new data about the instance types. Examples include

"2025-09-28": {
    cpu: {
        AWS:   true
        Intel: true
        AMD:   true
        Apple: true
    }
    gpu: {
        Habana: true
        AMD:    true
        NVIDIA: true
    }
}
{
    InstanceType:      "dl1.24xlarge"
    NetworkInfo: {
        NetworkCards: [
            {
                // ...
                BaselineBandwidthInGbps:          100.0
                PeakBandwidthInGbps:              100.0
                DefaultEnaQueueCountPerInterface: 32
    		}, // ...
        ]
    }
}
    EnaSrdSupported:              false
    FlexibleEnaQueuesSupport:     "unsupported"

Side effects

In general, it's interesting to observe how an exercise of doing recursive transformations with CUE resulted in getting the data for the analysis of AWS Compute abilities.