self-host →

EC2 instance types at 2 vCPU, scored & priced.

Each EC2 instance type benchmarked on its 2 vCPU size (.large, or .medium for the burstable t families): single-thread and multi-core CPU, on-demand and spot prices, and AWS's spot-interruption band, in four regions. Use it to pick a family for CI runners, or for any other workload. Sort and filter the table, and open a type for its runs and per-region detail. RunsOn launches all of these in your own AWS account.

fastest single-thread
m8azn.large
4,252 passmark · EPYC 9R05
cheapest spot · N. Virginia
t3a.medium
$0.0148/hr spot, 7-day average · burstable
best cpu per $ · near tie · N. Virginia
m8a.large · c8a.large
208k · 200k CPU Mark per $/hr at spot · within 5%

Looking for a specific shape? The EC2 instance finder filters and compares by CPU, price, memory and architecture in seconds.

ec2 instance finder ↗
arch
region
37 x64 types · N. Virginia (us-east-1)
# instance processor single-thread↓ multi-core on-demand spot / hr savings interrupt cpu mark / $ single / $
01 m8azn.large→ m8azn · 5 runs · hardware
AMD EPYC 9R05Turin
4,252
7,710 $0.2065 $0.0496/hr
76%
<5% 155k 85.7k
=02 c8a.large→ c8a · 5 runs · hardware
AMD EPYC 9R45Turin
3,812
6,912 $0.1078 $0.0346/hr
68%
15-20% 200k 110k
=02 r8a.large→ r8a · 5 runs · hardware
AMD EPYC 9R45Turin
3,808
6,892 $0.1598 $0.0412/hr
74%
5-10% 167k 92.5k
=02 m8a.large→ m8a · 4 runs · hardware
AMD EPYC 9R45Turin
3,794
6,880 $0.1217 $0.0330/hr
73%
>20% 208k 115k
=05 m8i-flex.large→ m8i-flex · 5 runs · hardware
Intel Xeon 6975P-CGranite Rapids
3,248
4,066 $0.1006 $0.0407/hr
60%
<5% 99.9k 79.8k
1 run r8i.large→ r8i · 1 run · sweep
Intel Xeon 6975P-CGranite Rapids
3,247
4,052 $0.1389 $0.0387/hr
72%
>20% 105k 83.8k
1 run r8i-flex.large→ r8i-flex · 1 run · sweep
Intel Xeon 6975P-CGranite Rapids
3,246
4,060 $0.1320 $0.0407/hr
69%
>20% 99.7k 79.7k
=05 t8i.medium→ t8i · 5 runs · hardware burstable
Intel Xeon 6975P-CGranite Rapids
3,246
4,061 $0.0499 $0.0224/hr
55%
n/a — —
=05 m8i.large→ m8i · 5 runs · hardware
Intel Xeon 6975P-CGranite Rapids
3,241
4,065 $0.1058 $0.0366/hr
65%
10-15% 111k 88.6k
=05 m8id.large→ m8id · 4 runs · hardware
Intel Xeon 6975P-CGranite Rapids
3,238
4,058 $0.1305 $0.0353/hr
73%
5-10% 115k 91.8k
=05 i7i.large→ i7i · 5 runs · hardware
Intel Xeon 8559CEmerald Rapids
3,198
4,112 $0.1888 $0.0456/hr
76%
<5% 90.1k 70.1k
1 run r7iz.large→ r7iz · 1 run · sweep
Intel Xeon 6455BSapphire Rapids
3,115
4,005 $0.1860 $0.0446/hr
76%
5-10% 89.8k 69.8k
1 run c7i.large→ c7i · 1 run · sweep
Intel Xeon 8488CSapphire Rapids
2,955
3,781 $0.0892 $0.0278/hr
69%
>20% 136k 106k
1 run r7a.large→ r7a · 1 run · sweep
AMD EPYC 9R14Genoa
2,875
5,390 $0.1522 $0.0550/hr
64%
15-20% 98.1k 52.3k
1 run c7a.large→ c7a · 1 run · sweep
AMD EPYC 9R14Genoa
2,875
5,371 $0.1026 $0.0303/hr
70%
5-10% 177k 94.9k
1 run m7a.large→ m7a · 1 run · sweep
AMD EPYC 9R14Genoa
2,875
5,327 $0.1159 $0.0443/hr
62%
>20% 120k 64.8k
1 run m7i.large→ m7i · 1 run · sweep
Intel Xeon 8488CSapphire Rapids
2,816
3,545 $0.1008 $0.0418/hr
59%
15-20% 84.8k 67.4k
1 run r7i.large→ r7i · 1 run · sweep
Intel Xeon 8488CSapphire Rapids
2,763
3,447 $0.1323 $0.0468/hr
65%
>20% 73.6k 59.0k
1 run c7i-flex.large→ c7i-flex · 1 run · sweep
Intel Xeon 8488CSapphire Rapids
2,700
3,361 $0.0848 $0.0262/hr
69%
5-10% 128k 103k
1 run c6a.large→ c6a · 1 run · sweep
AMD EPYC 7R13Milan
2,596
3,433 $0.0765 $0.0278/hr
64%
5-10% 123k 93.4k
1 run m6a.large→ m6a · 1 run · sweep
AMD EPYC 7R13Milan
2,595
3,442 $0.0864 $0.0336/hr
61%
10-15% 103k 77.3k
1 run m5zn.large→ m5zn · 1 run · sweep
Intel Xeon 8252CCascade Lake
2,549
2,898 $0.1652 $0.0409/hr
75%
5-10% 70.8k 62.3k
1 run m7i-flex.large→ m7i-flex · 1 run · sweep
Intel Xeon 8488CSapphire Rapids
2,549
3,190 $0.0958 $0.0368/hr
62%
10-15% 86.8k 69.3k
1 run i7ie.large→ i7ie · 1 run · sweep
Intel Xeon 8559CEmerald Rapids
2,549
3,275 $0.2599 $0.0519/hr
80%
<5% 63.1k 49.1k
1 run m6idn.large→ m6idn · 1 run · sweep
Intel Xeon 8375CIce Lake
2,303
2,949 $0.1591 $0.0439/hr
72%
<5% 67.2k 52.5k
1 run r6idn.large→ r6idn · 1 run · sweep
Intel Xeon 8375CIce Lake
2,297
2,938 $0.1954 $0.0517/hr
74%
10-15% 56.8k 44.4k
1 run r6i.large→ r6i · 1 run · sweep
Intel Xeon 8375CIce Lake
2,296
2,941 $0.1260 $0.0447/hr
65%
10-15% 65.8k 51.4k
1 run m6id.large→ m6id · 1 run · sweep
Intel Xeon 8375CIce Lake
2,296
2,956 $0.1187 $0.0383/hr
68%
10-15% 77.2k 59.9k
1 run c6id.large→ c6id · 1 run · sweep
Intel Xeon 8375CIce Lake
2,294
2,922 $0.1008 $0.0308/hr
69%
>20% 94.9k 74.5k
1 run m6i.large→ m6i · 1 run · sweep
Intel Xeon 8375CIce Lake
2,289
2,922 $0.0960 $0.0360/hr
62%
>20% 81.1k 63.5k
1 run c6i.large→ c6i · 1 run · sweep
Intel Xeon 8375CIce Lake
2,289
2,925 $0.0850 $0.0313/hr
63%
15-20% 93.3k 73.0k
1 run z1d.large→ z1d · 1 run · sweep
Intel Xeon 8151Skylake
2,286
2,609 $0.1860 $0.0414/hr
78%
>20% 63.0k 55.2k
1 run r6id.large→ r6id · 1 run · sweep
Intel Xeon 8375CIce Lake
2,286
2,846 $0.1512 $0.0472/hr
69%
15-20% 60.2k 48.4k
1 run t3.medium→ t3 · 1 run · sweep burstable
Intel Xeon 8259CLSkylake/Cascade Lake
1,746
1,989 $0.0416 $0.0155/hr
63%
>20% — —
1 run m4.large→ m4 · 1 run · sweep
Intel Xeon E5-2686 v4Broadwell/Haswell
1,582
1,844 $0.1000 $0.0397/hr
60%
>20% 46.5k 39.9k
1 run m5a.large→ m5a · 1 run · sweep
AMD EPYC 7571Naples
1,414
1,875 $0.0860 $0.0345/hr
60%
10-15% 54.3k 41.0k
1 run t3a.medium→ t3a · 1 run · sweep burstable
AMD EPYC 7571Naples
1,388
1,859 $0.0376 $0.0148/hr
61%
>20% — —
single-thread = PassMark CPU Single Threaded, multi-core = PassMark CPU Mark, on the 2 vCPU size · # places types with 3+ runs on the score and per-dollar sorts, “=” within 5% of the first of a group · spot = 7-day average of the cheapest zone's spot price in us-east-1 · savings = spot vs on-demand · interrupt = AWS Spot Advisor band · cpu mark / $ and single / $ = score per $/hr of the instance at spot, burstable types excluded.

What the data says

m8azn.large has the fastest single-thread CPU of the x64 types with 3 or more runs: 4,252 PassMark, 12% ahead of c8a.large. m9gd.large and m9g.large are within 5% of each other on single-thread CPU, the fastest of the arm64 types with 3 or more runs (2,468, 2,463 PassMark).

Cores of work at 2 vCPUsysbench, every thread ÷ one thread

At 2 vCPU, the 24 types with one thread per core (AMD and Graviton) did 1.9–2.0 cores' worth of sysbench work; the 30 types with two threads per core (Intel and AMD) did 1.0–1.6: their two vCPUs are two threads of one core.

1 thread per core 1.9–2.0 24 types
2 threads per core 1.0–1.6 30 types

About these benchmarks

Every type is launched on its 2 vCPU size and measured by the open benchmark harness: PassMark's CPU Single Threaded and CPU Mark, sysbench on one thread and on every thread, and 7-Zip's built-in benchmark. AWS often runs custom CPU SKUs you won't find in PassMark's public lists, so every number here comes from a live instance.

Each type's numbers come from one suite, the one that measured it in the most runs: the monthly EC2 CPU sweep, or the hardware suite for the 12 types RunsOn's runner benchmarks also run every few days, so this tab and the CPU page show the same figure. Values are medians over the runs of the current workload definition: the sweep's last 75 days, 30 for the other suites.

A type takes a place (the # column, a leader, a ranked card) once it has 3 runs; below that it is listed with its run count and sorts like any other row. Places exist on the scores and the per-dollar figures, not on a price, a band or a name. A type within 5% of the type heading its group shares that place (“=02”), so near-identical scores are never ranked apart; a leader's near ties are named with it, and a lead under 5%, or with a faster type still under 3 runs, reads “fastest measured”.

Spot is the 7-day average of the cheapest zone's spot price in each region: the RunsOn finder records every zone every 90 minutes, and the average of the cheapest at each fetch is what an hour costs, without one day's swing or one historical low. On-demand is the list price, and savings compare spot with it. Interrupt is AWS Spot Advisor's band. CPU Mark per $ and single-thread per $ divide the score by the spot price of an hour of the instance alone (the CPU page adds the EBS volume); burstable t types are left out of both, as their score is a burst on CPU credits. RunsOn launches any of these types ephemerally, in your own AWS account. More in the methodology.

metricspassmark · sysbench · 7-zip
variant2 vCPU
regions4 · us and eu
types37 x64 · 17 arm64
runs per type1–5
ranked12 types with 3+ runs
last sweep30 Sep 2026
prices5 Oct 2026

Every instance we track

The leaderboard shows one architecture at a time. Every type has its own page with its runs and job logs, per-region on-demand and spot pricing, savings, and the AWS Spot Advisor interruption band.

x64

37 types

High frequency z

arm64

17 types

Run your GitHub Actions jobs on any of these.

RunsOn turns them into self-hosted GitHub Actions runners in your own AWS account. Name the family or the CPU count in a job's runs-on label, and each job gets a fresh instance of it, on spot by default. One CloudFormation stack, about 10 minutes to install.

runs-on: runs-on=${{ github.run_id }}/family=m8a/cpu=4