CI Bench

Head to head · CI Bench v1

Self-hosted runners on AWS vs GitHub-hosted (ubuntu-latest)

Self-hosted runners on AWS (one VM per job) ran jobs 1.2× faster than GitHub-hosted runners (ubuntu-latest, 2 vCPU) (95% interval 1.1× to 1.2×); Self-hosted runners on AWS (one VM per job) cost 62% less per job (at 100,000 jobs a month).

Self-hosted options spread fixed monthly costs over the monthly volume, so their cost per job changes with it; see the volume table.

Speed

× faster than GitHub-hosted (ubuntu-latest) · higher is better
Self-hosted runners on AWS (one VM per job)
1.2×
GitHub-hosted (ubuntu-latest)
1.0×

Cost per job

USD per $1.00 spent on GitHub-hosted (ubuntu-latest), at 100,000 jobs a month · lower is better
Self-hosted runners on AWS (one VM per job)
$0.38
GitHub-hosted (ubuntu-latest)
$1.00

Workload by workload

Self-hosted runners on AWS had the lowest median time of the two on 9 of 12 workloads, GitHub-hosted (ubuntu-latest) on 3.
WorkloadSelf-hosted runners on AWS (one VM per job)GitHub-hosted runners (ubuntu-latest, 2 vCPU)Lowest median
Burst: 20 jobs at once161 s259 sSelf-hosted runners on AWS (one VM per job)
cli357 s368 sSelf-hosted runners on AWS (one VM per job)
codex-lint512 s884 sSelf-hosted runners on AWS (one VM per job)
container247 s239 sGitHub-hosted runners (ubuntu-latest, 2 vCPU)
fd114 s92 sGitHub-hosted runners (ubuntu-latest, 2 vCPU)
flask70 s23 sGitHub-hosted runners (ubuntu-latest, 2 vCPU)
guava717 s1167 sSelf-hosted runners on AWS (one VM per job)
monorepo281 s384 sSelf-hosted runners on AWS (one VM per job)
pydantic154 s179 sSelf-hosted runners on AWS (one VM per job)
ts433 s784 sSelf-hosted runners on AWS (one VM per job)
vite403 s603 sSelf-hosted runners on AWS (one VM per job)
vue117 s121 sSelf-hosted runners on AWS (one VM per job)

Cost by volume

Mean cost per job in USD, from the benchmark’s sensitivity results
VolumeSelf-hosted runners on AWS (one VM per job)GitHub-hosted runners (ubuntu-latest, 2 vCPU)
100,000 jobs a month$0.383$1.000
10,000 jobs a month$0.395$1.000
1,000 jobs a month$0.508$1.000

Failed runs

Counted, never replaced
Self-hosted runners on AWS (one VM per job)
0 of 360 measured runs (0.0%)
GitHub-hosted runners (ubuntu-latest, 2 vCPU)
3 of 360 measured runs (0.8%)

Each configuration page lists where its failures happened. All losses.

All results for this pair

One line per configuration pairing, generated from the benchmark data