RunsOn m8i.xlarge · EBS gp3 vs Blacksmith 4 vCPU x64
RunsOn does each build for 1.7–2.6× less; on time, Blacksmith is faster on the Docker build and tied on the Rust and TypeScript builds. Both 4 vCPU x64.
All three builds 1.9× cheaper on RunsOn: $0.0375 vs $0.0728Blacksmith 2.0× faster: 8m 12s vs 16m 38s
Rust build 2.6× cheaper on RunsOn: $0.0068 vs $0.0175about the same time: 2m 59s · 1m 59s
TypeScript build 2.2× cheaper on RunsOn: $0.0040 vs $0.0089about the same time: 1m 29s · 54s
Docker build 1.7× cheaper on RunsOn: $0.0267 vs $0.0464Blacksmith 2.3× faster: 5m 19s vs 12m 10s
RunsOn m8i.xlarge · EBS gp3
jobs ran from Amazon.com (US)
Blacksmith 4 vCPU
jobs ran from Secured Servers (US)
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 | Blacksmith | Gap |
|---|---|---|---|
| Cost | |||
| Cost per Rust build | $0.0068 | $0.0175 | 2.6× RunsOn |
| Cost per TypeScript build | $0.0040 | $0.0089 | 2.2× RunsOn |
| Cost per Docker build | $0.0267 | $0.0464 | 1.7× RunsOn |
| Price per minute | $0.0017 | $0.0080 | 4.7× RunsOn |
| Real builds, wall time | |||
| Rust build (spotify-player) | 2m 59s | 1m 59s | ≈ even |
| TypeScript build (opencode) | 1m 29s | 54s | ≈ even |
| Docker build (PostHog) | 12m 10s | 5m 19s | 2.3× Blacksmith |
| CPU & memory | |||
| PassMark single-thread (points) | 3,256 | 4,236 | 1.3× Blacksmith |
| PassMark CPU Mark, all cores (points) | 7,989 | 15,036 | 1.9× Blacksmith |
| sysbench CPU, 1 thread (events/s) | 3,311 | 6,419 | 1.9× Blacksmith |
| 7-Zip compression (MIPS) | 18,867 | 27,863 | 1.5× Blacksmith |
| Memory read bandwidth | 20.1 GiB/s | 31.5 GiB/s | 1.6× Blacksmith |
| Measurement | RunsOn | Blacksmith | Gap |
|---|---|---|---|
| Workspace disk (fio) | |||
| Random read, 4k QD32 (IOPS) | 2,992 | 873,112 | 291.8× Blacksmith |
| Random write, 4k QD32 (IOPS) | 2,994 | 251,762 | 84.1× Blacksmith |
| Random read, 4k QD1 (IOPS) | 1,634 | 84,854 | 51.9× Blacksmith |
| QD1 read latency, p99 | 930 µs | 14 µs | 65.0× Blacksmith |
| Sequential read | 401 MiB/s | 6.9 GiB/s | 17.7× Blacksmith |
| Sequential write | 401 MiB/s | 1.6 GiB/s | 4.2× Blacksmith |
| Sync write, 4k + fdatasync (IOPS) | 508 | 18,024 | 35.5× Blacksmith |
| Network, cache & Docker | |||
| Download from GitHub | 285 MiB/s | 107 MiB/s | 2.7× RunsOn |
| Cache restore, 4 GB (actions/cache) | 19s | 14s | 1.4× Blacksmith |
| Cache save, 4 GB (actions/cache) | 13s | 8s | 1.6× Blacksmith |
| docker pull | 8.0s | 6.5s | 1.2× Blacksmith |
| Database | |||
| pgbench read/write (TPS) | 3,149 | 11,775 | 3.7× Blacksmith |
| pgbench read-only (TPS) | 58,329 | 89,914 | 1.5× Blacksmith |
| Queue | |||
| Queue under burst load | 17s | 11s | 1.5× Blacksmith |
- ≈ even: under 5% apart, or a build inside both runners' run-to-run spread
- Queue: identical jobs queued at the same instant (burst suite)
- 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