RunsOn m8i.xlarge · EBS gp3 vs Namespace 4x16 x64
RunsOn does each build for 2.4–3.1× less; Namespace is 1.8–2.4× faster. Both 4 vCPU x64.
All three builds 2.6× cheaper on RunsOn: $0.0375 vs $0.0966Namespace 2.2× faster: 7m 26s vs 16m 38s
Rust build 3.1× cheaper on RunsOn: $0.0068 vs $0.0208Namespace 1.8× faster: 1m 38s vs 2m 59s
TypeScript build 2.7× cheaper on RunsOn: $0.0040 vs $0.0108Namespace 1.9× faster: 47s vs 1m 29s
Docker build 2.4× cheaper on RunsOn: $0.0267 vs $0.0650Namespace 2.4× faster: 5m 01s vs 12m 10s
RunsOn m8i.xlarge · EBS gp3
jobs ran from Amazon.com (US)
Namespace 4x16
jobs ran from Namespace Labs (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 | Namespace | Gap |
|---|---|---|---|
| Cost | |||
| Cost per Rust build | $0.0068 | $0.0208 | 3.1× RunsOn |
| Cost per TypeScript build | $0.0040 | $0.0108 | 2.7× RunsOn |
| Cost per Docker build | $0.0267 | $0.0650 | 2.4× RunsOn |
| Price per minute | $0.0017 | $0.0120 overage rate | 7.0× RunsOn |
| Real builds, wall time | |||
| Rust build (spotify-player) | 2m 59s | 1m 38s | 1.8× Namespace |
| TypeScript build (opencode) | 1m 29s | 47s | 1.9× Namespace |
| Docker build (PostHog) | 12m 10s | 5m 01s | 2.4× Namespace |
| CPU & memory | |||
| PassMark single-thread (points) | 3,256 | 4,700 | 1.4× Namespace |
| PassMark CPU Mark, all cores (points) | 7,989 | 16,176 | 2.0× Namespace |
| sysbench CPU, 1 thread (events/s) | 3,311 | 7,051 | 2.1× Namespace |
| 7-Zip compression (MIPS) | 18,867 | 33,428 | 1.8× Namespace |
| Memory read bandwidth | 20.1 GiB/s | 44.8 GiB/s | 2.2× Namespace |
| Measurement | RunsOn | Namespace | Gap |
|---|---|---|---|
| Workspace disk (fio) | |||
| Random read, 4k QD32 (IOPS) | 2,992 | 1,011,926 | 338.2× Namespace |
| Random write, 4k QD32 (IOPS) | 2,994 | 436,056 | 145.6× Namespace |
| Random read, 4k QD1 (IOPS) | 1,634 | 78,615 | 48.1× Namespace |
| QD1 read latency, p99 | 930 µs | 12 µs | 76.2× Namespace |
| Sequential read | 401 MiB/s | 4.1 GiB/s | 10.6× Namespace |
| Sequential write | 401 MiB/s | 2.9 GiB/s | 7.5× Namespace |
| Sync write, 4k + fdatasync (IOPS) | 508 | 17,844 | 35.1× Namespace |
| Network, cache & Docker | |||
| Download from GitHub | 285 MiB/s | 202 MiB/s | 1.4× RunsOn |
| Cache restore, 4 GB (actions/cache) | 19s | 28s | 1.5× RunsOn |
| Cache save, 4 GB (actions/cache) | 13s | 14s | 1.1× RunsOn |
| docker pull | 8.0s | 4.2s | 1.9× Namespace |
| Database | |||
| pgbench read/write (TPS) | 3,149 | 8,463 | 2.7× Namespace |
| pgbench read-only (TPS) | 58,329 | 67,294 | 1.2× Namespace |
| Queue | |||
| Queue under burst load | 17s | 2m 23s plan limit | — |
- ≈ even: under 5% apart, or a build inside both runners' run-to-run spread
- Queue: identical jobs queued at the same instant (burst suite)
- Queue: not compared. Namespace's burst ran 4 jobs at a time, the concurrency limit of the plan this benchmark account is on
- 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