CI Bench

Self-hosted · CI Bench v1

Self-hosted runners on Google Cloud

1.5x faster than GitHub's 2 vCPU runner and 59% lower cost per job, averaged over 12 workloads.

Speed
1.5×
faster than GitHub-hosted (ubuntu-latest)
5th of 9 by speed
Cost per job
−59%
vs GitHub-hosted (ubuntu-latest)
6th of 9; the same at 1,000 to 100,000 jobs a month
Lowest median time
1 / 12
workloads
flask
Failed runs
1 of 360
measured runs
vite 1 of 30. Counted, not replaced.

Speed on each workload

× faster than GitHub-hosted (ubuntu-latest) on the same workload
Burst: 20 jobs at once
1.7×
cli
1.2×
codex-lint
1.5×
container
1.3×
fd
1.4×
flask
2.1×
guava
1.4×
monorepo
1.4×
pydantic
1.5×
ts
1.5×
vite
1.5×
vue
1.6×

Configuration

Self-hosted · 2 vCPU / 8 GiB
Measured configuration
Self-hosted: GCE n4d-standard-2 always-on pool (on-demand, U = 50%, all-in)
Size
2 vCPU / 8 GiB
Label or setup
self-hosted label of the deployment
Price as measured
all-in: what the jobs use in your cloud account, plus fixed monthly costs spread over the volume; measured per job (cost rules)
Notes
All-in (METHOD.md, Cost): run time / U x (VM + boot disk + public IPv4), plus internet egress measured per job (cost_gce.py, Cloud Monitoring sent bytes). No controller host.
Definition
providers/gce-pool.json

Per workload

Green marks the lowest median time on the workload. The burst row covers all 20 jobs.
WorkloadMedian timevs GitHub-hosted (ubuntu-latest)p95 timeMean costvs GitHub-hosted (ubuntu-latest)Successful runsRank
Burst: 20 jobs at once153 s1.7x faster165 s$0.13573% lower30 of 303rd
cli310 s1.2x faster326 s$0.01756% lower30 of 305th
codex-lint581 s1.5x faster625 s$0.06427% lower30 of 306th
container178 s1.3x faster201 s$0.053100% higher30 of 303rd
fd64 s1.4x faster72 s$0.003571% lower30 of 303rd
flask11 s2.1x faster32 s$0.001182% lower30 of 301st
guava820 s1.4x faster854 s$0.04559% lower30 of 305th
monorepo278 s1.4x faster297 s$0.01660% lower30 of 306th
pydantic119 s1.5x faster129 s$0.006567% lower30 of 304th
ts533 s1.5x faster582 s$0.02963% lower30 of 306th
vite401 s1.5x faster457 s$0.02362% lower29 of 305th
vue76 s1.6x faster109 s$0.004469% lower30 of 304th
Burst queue, p95
3 s, against 31 s for GitHub-hosted (ubuntu-latest)
Indexes and 95% intervals
Time index
0.667 (95% interval 0.658 to 0.692)
Cost index
0.409 (0.386 to 0.440) at 100,000 jobs a month

Compare with…

Head-to-head pages: speed, cost, failures and each workload