self-host →

RunsOn c8a.xlarge · EBS gp3 vs GitHub 4-⁠core x64

RunsOn does the Rust and TypeScript builds for 8.8–10.5× less and 1.8× faster. Both 4 vCPU x64.

Price per minute 7.6× cheaper on RunsOn: $0.0016 vs $0.0120the builds are not all compared on cost yet
Rust build 10.5× cheaper on RunsOn: $0.0044 vs $0.0466RunsOn 1.8× faster: 2m 05s vs 3m 47s
TypeScript build 8.8× cheaper on RunsOn: $0.0030 vs $0.0268RunsOn 1.8× faster: 1m 03s vs 1m 56s
Docker build 12m 44s GitHub only · RunsOn not run

Side by side

Every measurement both runners share, cost first. The dot marks the better value; gap is the larger over the smaller.

Measurement RunsOn GitHub Gap
Cost
Cost per Rust build $0.0044 $0.0466 10.5× RunsOn
Cost per TypeScript build $0.0030 $0.0268 8.8× RunsOn
Cost per Docker build n/a: Not run: the PostHog Docker build needs more than 8 GB of memory; it ran out of memory on 8 GB runners. $0.1764 —
Price per minute $0.0016 $0.0120 7.6× RunsOn
Real builds, wall time
Rust build (spotify-⁠player) 2m 05s 3m 47s 1.8× RunsOn
TypeScript build (opencode) 1m 03s 1m 56s 1.8× RunsOn
Docker build (PostHog) n/a: Not run: the PostHog Docker build needs more than 8 GB of memory; it ran out of memory on 8 GB runners. 12m 44s —
CPU & memory
PassMark single-⁠thread (points) 3,792 2,370 1.6× RunsOn
PassMark CPU Mark, all cores (points) 13,409 6,130 2.2× RunsOn
sysbench CPU, 1 thread (events/s) 5,286 3,670 1.4× RunsOn
7-⁠Zip compression (MIPS) 32,704 16,137 2.0× RunsOn
Memory read bandwidth 36.5 GiB/s 20.9 GiB/s 1.7× RunsOn
Measurement RunsOn GitHub Gap
Workspace disk (fio)
Random read, 4k QD32 (IOPS) 2,994 19,587 6.5× GitHub
Random write, 4k QD32 (IOPS) 2,993 11,712 3.9× GitHub
Random read, 4k QD1 (IOPS) 1,745 6,843 3.9× GitHub
QD1 read latency, p99 930 µs 251 µs 3.7× GitHub
Sequential read 401 MiB/s 394 MiB/s ≈ even
Sequential write 401 MiB/s 394 MiB/s ≈ even
Sync write, 4k + fdatasync (IOPS) 540 3,262 6.0× GitHub
Network, cache & Docker
Download from GitHub 268 MiB/s 91 MiB/s 2.9× RunsOn
Cache restore, 4 GB (actions/cache) 24s 41s 1.7× RunsOn
Cache save, 4 GB (actions/cache) 16s 30s 1.8× RunsOn
docker pull 5.1s 16.4s 3.2× RunsOn
Database
pgbench read/write (TPS) 3,085 2,797 1.1× RunsOn
pgbench read-⁠only (TPS) 147,478 20,013 7.4× RunsOn
Queue
Queue under burst load 18s 4s 4.5× GitHub
  • ≈ even: under 5% apart, or a build inside both runners' run-to-run spread
  • Queue: identical jobs queued at the same instant (burst suite)
  • 2 missing on one side or both
  • RunsOn at EC2 spot, its default (7-day average of the cheapest us-east-1 zone's spot price, fetched 5 Oct 2026); the jobs ran on spot
  • Cost: a managed SaaS runner against RunsOn self-hosted on your AWS account; the effort of running it was not measured

Other head-to-heads