self-host →

//benchmarks · github actions runners · cpu

the fastest github actions runners, by the numbers.

Single-thread CPU, queue time, and real $/min for every Linux runner worth considering — official GitHub, self-hosted, and third-party SaaS. The leaderboard re-ranks live as you drag the speed-vs-price dial, and RunsOn rows use real EC2 spot prices in your own AWS account.

TL;DR#

Best value

RunsOn, Namespace, and Blacksmith cluster in the cheap-and-fast corner. RunsOn leads self-hosted on both speed and price; AWS CodeBuild is slower and pricier.

Fastest CPU

x64: Namespace, Blacksmith, and RunsOn’s newest families (m8a / m8azn) lead single-thread. arm64: Namespace leads, followed by RunsOn and Warpbuild.

Cheapest

Self-hosted spot on AWS lands ~5.9× under GitHub — the bill goes to your own AWS account, not a middleman.

How to read: leaderboard and deep dive use the configured CPU/queue percentiles (p50/p50). Higher CPU is better, lower queue is better. Price is normalized $/min.

Providers included#

Official: GitHub (Azure)
Self-hosted: 👋RunsOn (AWS) ·AWS CodeBuild (AWS)
Third-party: Namespace (US/Europe) · Blacksmith (Hetzner) · Warpbuild (Hetzner / AWS) · Ubicloud (Hetzner)

CPU speed vs price per minute#

Each dot is a runner. Up is faster, left is cheaper — so the top-left corner is where you want to be. Dot size is queue time; hover any dot or row to link the two. Drag the speed-vs-price dial and the leaderboard re-ranks live.

Last updated:

Benchmarks use Linux runners only, the Passmark single-thread metric, and the last 30 days of data.

arch
runson price
cheaperfasterleaning faster
70% speed / 30% price
cpu × price × queuespot · us-east-1 · x64
★ cheap & fast1500200025003000350040004500$0.0000$0.0013$0.0026$0.0039$0.0052$0.0065price / min (normalized to 2 vCPU / 8GB) → cheaper is leftCPU score → faster is upRunsOnGitHub

who's who

RunsOn — self-hosted, your AWS account
GitHub — official, the reference price
AWS CodeBuild — managed, in your account
SaaS — Namespace, Blacksmith, Warpbuild, Ubicloud

dot size = queue time

~10s
~25s
~40s

Smaller is better — the wait between trigger and first step. GitHub queues fastest; self-hosted spot trades a few seconds for much lower cost.

rank by
#providertypespecscpuqueueprice / minvalue
1Namespacenscloud-ubuntu-24.04-amd64-2x8SaaSstandard4×8GBnorm $0.0024436713s$0.00401.5× cheaper89
2RunsOn family=m8aznSelf-hostedspot2×8GB427126s$0.00125.1× cheaper87
3Blacksmithblacksmith-2vcpu-ubuntu-2404SaaS2×8GB444116s$0.00401.5× cheaper79
4RunsOn family=m8aSelf-hostedspot2×8GB379026s$0.00096.9× cheaper76
5Ubicloudubicloud-premium-2-ubuntu-2404SaaSpremium2×8GB374028s$0.00163.8× cheaper70
6Warpbuildwarp-ubuntu-2404-x64-2xSaaS2×7GB372212s$0.00401.5× cheaper60
7RunsOn family=m8i+r8iSelf-hostedspot2×8GB319627s$0.00105.9× cheaper59
8Ubicloudubicloud-standard-2-ubuntu-2404SaaSstandard2×8GB293617s$0.00106.0× cheaper54
9Ubicloudubicloud-standard-2-ubuntu-2404SaaSstandard2×8GB293533s$0.00106.0× cheaper50
10RunsOn family=c7a+m7a+r7aSelf-hostedspot2×8GB287829s$0.00106.0× cheaper49
11RunsOn family=c7i+m7i+r7iSelf-hostedspot2×8GB269829s$0.00096.5× cheaper45
12RunsOn family=c6a+m6a+r6aSelf-hostedspot2×8GB258428s$0.00106.2× cheaper42
13GitHububuntu-24.04Official2×8GB23229s$0.0060≈ GitHub9
14GitHububuntu-24.04, github24-2cpu-x64Official2×8GB226910s$0.0060≈ GitHub7
15GitHubgithub24-2cpu-x64, ubuntu-24.04Official2×8GB21959s$0.0060≈ GitHub5
16AWS CodeBuildcodebuild-ubuntu-8.0-small, codebuild-ubuntu-8.0-large, codebuild-ubuntu-8.0-mediumSelf-hosted2×4GBnorm $0.0059213928s$0.00501.2× cheaper4
17AWS CodeBuildcodebuild-ubuntu-8.0-medium, codebuild-ubuntu-8.0-small, codebuild-ubuntu-8.0-largeSelf-hosted2×4GBnorm $0.0059201830s$0.00501.2× cheaper1
18AWS CodeBuildcodebuild-ubuntu-8.0-medium, codebuild-ubuntu-8.0-smallSelf-hosted2×4GBnorm $0.00592013326s$0.00501.2× cheaper0
Value score = weighted speed + price, adjusted for queue (the dial sets the weights). The price side is normalized for the shape the price buys (specs column): vCPU and RAM weighted by AWS Fargate’s per-resource prices (1 vCPU ≈ 9.1 GB), against a 2 vCPU / 8GB reference — so a provider selling 4 vCPU for the same $/min scores as cheaper, without pretending RAM is free. The table still shows the real $/min. RunsOn $/min = real EC2 .large spot in us-east-1 + EBS + license amortized (€300/yr). GitHub is the price baseline for the “× cheaper” column.

How to choose#

$/minWant the lowest bill? Sort by cheapest. Self-hosted spot on AWS lands ~5.9× under GitHub — the cost goes to your AWS account, not a middleman.
cpuWant raw speed? Sort by fastest CPU. Namespace, Blacksmith and RunsOn’s newest families (m8a / m8azn) lead x64 single-thread.
queueLatency-sensitive? Sort by lowest queue. GitHub starts fastest; for self-hosted, warm pools cut RunsOn queues to under ~10s.
ctrlWant control & isolation? Pick self-hosted. RunsOn keeps runners, logs, caches and secrets inside your own VPC — no third party touches your code. See networking options.

Deep dive (full data)#

Open full benchmark table with distributions

Includes per-runner distributions, CPU/queue percentiles, and provider metadata for the last 30 days.

# Provider CPU speed (p50) Queue time (p50) + 30d P90 trend Processor
1
Blacksmith SaaS
blacksmith-2vcpu-ubuntu-2404
$0.004/min 1.5x cheaper
p50: 4441p90: 4626
p50: 16.0sp90: 24.0s
AMD EPYC (x86_64)
Hetzner
27 samples
2
Namespace SaaS
nscloud-ubuntu-24.04-amd64-2x8
$0.004/min 1.5x cheaper standard
p50: 4367p90: 4609
p50: 13.0sp90: 14.0s
AMD EPYC (x86_64)
US/Europe (might vary)
27 samples
3
RunsOn Self-Hosted
runs-on,family=m8azn
$0.0012/min 5.1x cheaper spot
p50: 4270p90: 4282
p50: 26.0sp90: 33.0s
AMD EPYC 9R05 (x86_64)
AWS
28 samples

CPU 4000+
4
RunsOn Self-Hosted
runs-on,family=m8a
$0.0009/min 6.9x cheaper spot
p50: 3790p90: 3822
p50: 26.0sp90: 42.0s
AMD EPYC 9R45 (x86_64)
AWS
28 samples
5
Ubicloud SaaS
ubicloud-premium-2-ubuntu-2404
$0.0016/min 3.8x cheaper premium
p50: 3740p90: 3827
p50: 28.0sp90: 59.0s
AMD Ryzen 9 7950X3D 16-Core Processor(x86_64)
Hetzner (Germany)
27 samples
6
Warpbuild SaaS
warp-ubuntu-2404-x64-2x
$0.004/min 1.5x cheaper
p50: 3722p90: 3877
p50: 12.0sp90: 37.0s
AMD Ryzen 9 7950X3D 16-Core Processor(x86_64)
Hetzner / AWS / BYOC
27 samples

CPU 3500+
7
RunsOn Self-Hosted
runs-on,family=m8i+r8i
$0.001/min 5.9x cheaper spot
p50: 3196p90: 3201
p50: 26.0sp90: 51.0s
Intel(R) Xeon(R) 6975P-C (x86_64)
AWS
26 samples

CPU 3000+
8
Ubicloud SaaS
ubicloud-standard-2-ubuntu-2404
$0.001/min 6.0x cheaper standard
p50: 2936p90: 2960
p50: 17.0sp90: 119.0s
AMD EPYC 9454P 48-Core Processor(x86_64)
Hetzner (Germany)
23 samples
9
Ubicloud SaaS
ubicloud-standard-2-ubuntu-2404
$0.001/min 6.0x cheaper standard
p50: 2922p90: 2950
p50: 14.0sp90: 39.0s
AMD EPYC 9454 48-Core Processor(x86_64)
Hetzner (Germany)
4 samples
10
RunsOn Self-Hosted
runs-on,family=c7a+m7a+r7a
$0.001/min 6.0x cheaper spot
p50: 2877p90: 2880
p50: 29.0sp90: 37.0s
AMD EPYC 9R14 (x86_64)
AWS
28 samples
11
RunsOn Self-Hosted
runs-on,family=c7i+m7i+r7i
$0.0009/min 6.5x cheaper spot
p50: 2677p90: 2928
p50: 29.0sp90: 41.0s
Intel(R) Xeon(R) Platinum 8488C (x86_64)
AWS
26 samples
12
RunsOn Self-Hosted
runs-on,family=m6a
$0.001/min 6.2x cheaper spot
p50: 2584p90: 2590
p50: 28.0sp90: 58.0s
AMD EPYC 7R13 Processor (x86_64)
AWS
27 samples

CPU 2500+
13
GitHub Official
ubuntu-24.04
$0.006/min ≈ GitHub
p50: 2322p90: 2324
p50: 9.0sp90: 10.0s
Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (x86_64)
Azure
3 samples
14
GitHub Official
ubuntu-24.04, github24-2cpu-x64
$0.006/min ≈ GitHub
p50: 2269p90: 2275
p50: 10.0sp90: 11.0s
AMD EPYC 7763 64-Core Processor(x86_64)
Azure
31 samples
15
GitHub Official
github24-2cpu-x64, ubuntu-24.04
$0.006/min ≈ GitHub
p50: 2195p90: 2199
p50: 9.0sp90: 10.0s
AMD EPYC 9V74 80-Core Processor(x86_64)
Azure
20 samples
16
AWS CodeBuild Self-Hosted
codebuild-ubuntu-8.0-small, codebuild-ubuntu-8.0-large, codebuild-ubuntu-8.0-medium
$0.005/min 1.2x cheaper
p50: 2138p90: 2152
p50: 28.0sp90: 34.0s
Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz (x86_64)
AWS
48 samples
17
AWS CodeBuild Self-Hosted
codebuild-ubuntu-8.0-medium, codebuild-ubuntu-8.0-small, codebuild-ubuntu-8.0-large
$0.005/min 1.2x cheaper
p50: 2018p90: 2031
p50: 30.0sp90: 34.0s
Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz (x86_64)
AWS
31 samples
18
AWS CodeBuild Self-Hosted
codebuild-ubuntu-8.0-medium, codebuild-ubuntu-8.0-small
$0.005/min 1.2x cheaper
p50: 1921p90: 2013
p50: 29.0sp90: 326.0s
Intel(R) Xeon(R) Platinum 8223CL CPU @ 3.00GHz (x86_64)
AWS
2 samples
# Provider CPU speed (p50) Queue time (p50) + 30d P90 trend Processor
1
Namespace SaaS
nscloud-ubuntu-24.04-arm64-2x8,namespace-features:linux-on-apple-silicon=true
$0.012/min 2.4x pricier premium
p50: 3848p90: 4130
p50: 14.0sp90: 26.0s
Apple M4 + Virtualization
US/Europe (might vary)
26 samples

CPU 3500+
2
RunsOn Self-Hosted
runs-on,family=m9g
$0.0009/min 5.5x cheaper spot
p50: 2469p90: 2471
p50: 24.0sp90: 30.0s
Neoverse-V3 (aarch64)
AWS
2 samples

CPU 2000+
3
Warpbuild SaaS
warp-ubuntu-latest-arm64-2x
$0.003/min 1.7x cheaper
p50: 1944p90: 1945
p50: 21.0sp90: 46.0s
Neoverse-V2 (aarch64)
Hetzner / AWS / BYOC
26 samples
4
RunsOn Self-Hosted
runs-on,family=c8g+m8g+r8g
$0.0009/min 5.7x cheaper spot
p50: 1946p90: 1947
p50: 29.0sp90: 47.0s
Neoverse-V2 (aarch64)
AWS
52 samples
5
GitHub Official
github24-2cpu-arm64
$0.005/min ≈ GitHub
p50: 1874p90: 1877
p50: 9.0sp90: 10.0s
Neoverse-N2 (aarch64)
Azure
23 samples
6
RunsOn Self-Hosted
runs-on,family=c7g+m7g+r7g
$0.001/min 5.1x cheaper spot
p50: 1559p90: 1564
p50: 29.0sp90: 32.0s
Neoverse-V1 (aarch64)
AWS
26 samples

CPU 1500+
7
Blacksmith SaaS
blacksmith-2vcpu-ubuntu-2404-arm
$0.0025/min 2.0x cheaper
p50: 1362p90: 1377
p50: 21.0sp90: 29.0s
Ampere-1a (aarch64)
Hetzner
20 samples
8
GitHub Official
github24-2cpu-arm64
$0.005/min ≈ GitHub
p50: 1333p90: 1333
p50: 10.0sp90: 63.0s
Neoverse-N1 (aarch64)
Azure
3 samples
9
Blacksmith SaaS
blacksmith-2vcpu-ubuntu-2404-arm
$0.0025/min 2.0x cheaper
p50: 1326p90: 1332
p50: 20.0sp90: 23.0s
Neoverse-N1 (aarch64)
Hetzner
6 samples
10
Ubicloud SaaS
ubicloud-standard-2-arm-ubuntu-2404
$0.001/min 5.0x cheaper standard
p50: 1312p90: 1319
p50: 17.0sp90: 18.0s
Neoverse-N1 (aarch64)
Hetzner (Germany)
26 samples
11
Namespace SaaS
nscloud-ubuntu-24.04-arm64-2x8
$0.004/min 1.3x cheaper standard
p50: 1256p90: 1267
p50: 17.0sp90: 20.0s
Ampere-1a (aarch64)
US/Europe (might vary)
16 samples

What the data says#

performance
  • Namespace, Blacksmith and RunsOn lead x64 single-thread.
  • Namespace leads arm64; RunsOn and Warpbuild follow. GitHub’s newer Cobalt CPUs are closer but not consistently available.
  • GitHub runs older CPUs overall, most visibly on x64.
reliability & scaling
  • GitHub’s queue times are excellent for standard runners — and much improved for larger ones.
  • AWS scales better than Hetzner-backed fleets under load.
  • Some SaaS providers gate higher vCPU concurrency (and static egress IPs) behind requests or fees; self-hosted RunsOn and CodeBuild aren’t affected.
  • Variable CPU models on some providers (e.g. Ubicloud tiers) can affect reproducibility.
security & infra
  • RunsOn is fully self-hosted in your AWS account — your IAM, your network, a dedicated GitHub App.
  • AWS CodeBuild is managed by AWS but runs in your account (shared GitHub App for registration).
  • GitHub runners are managed by GitHub on Azure; private access needs secrets or OIDC.
  • Namespace, Blacksmith, Warpbuild, Ubicloud and Depot are SaaS; control plane and registration aren’t fully yours.

Gap: detailed concurrency/scaling tests are still missing; they matter for high-volume CI/CD (thousands of jobs/day). RunsOn routinely handles more than 1M jobs every day.

fastest self-hosted, at ~5.9× lower cost.

The benchmark runs on the same RunsOn anyone can deploy. One CloudFormation stack, your account, ~10 minutes.

Note: this analysis is updated regularly. Things change quickly in this space, so make sure you do your own research as well.