RunsOn m8id.xlarge · local NVMe vs Namespace 4x16 x64
RunsOn does each build for 1.3–2.9× less; Namespace is 1.7–1.9× faster. Both 4 vCPU x64.
All three builds 1.6× cheaper on RunsOn: $0.0593 vs $0.0966Namespace 1.8× faster: 7m 26s vs 13m 35s
Rust build 2.9× cheaper on RunsOn: $0.0071 vs $0.0208Namespace 1.8× faster: 1m 38s vs 2m 57s
TypeScript build 2.9× cheaper on RunsOn: $0.0037 vs $0.0108Namespace 1.7× faster: 47s vs 1m 20s
Docker build 1.3× cheaper on RunsOn: $0.0485 vs $0.0650Namespace 1.9× faster: 5m 01s vs 9m 18s
RunsOn m8id.xlarge · local NVMe
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.0071 | $0.0208 | 2.9× RunsOn |
| Cost per TypeScript build | $0.0037 | $0.0108 | 2.9× RunsOn |
| Cost per Docker build | $0.0485 | $0.0650 | 1.3× RunsOn |
| Price per minute | $0.0017 | $0.0120 overage rate | 7.1× RunsOn |
| Real builds, wall time | |||
| Rust build (spotify-player) | 2m 57s | 1m 38s | 1.8× Namespace |
| TypeScript build (opencode) | 1m 20s | 47s | 1.7× Namespace |
| Docker build (PostHog) | 9m 18s | 5m 01s | 1.9× Namespace |
| CPU & memory | |||
| PassMark single-thread (points) | 3,269 | 4,700 | 1.4× Namespace |
| PassMark CPU Mark, all cores (points) | 8,058 | 16,176 | 2.0× Namespace |
| sysbench CPU, 1 thread (events/s) | 3,298 | 7,051 | 2.1× Namespace |
| 7-Zip compression (MIPS) | 19,421 | 33,428 | 1.7× Namespace |
| Memory read bandwidth | 20.0 GiB/s | 44.8 GiB/s | 2.2× Namespace |
| Measurement | RunsOn | Namespace | Gap |
|---|---|---|---|
| Workspace disk (fio) | |||
| Random read, 4k QD32 (IOPS) | 67,089 | 1,011,926 | 15.1× Namespace |
| Random write, 4k QD32 (IOPS) | 33,526 | 436,056 | 13.0× Namespace |
| Random read, 4k QD1 (IOPS) | 11,056 | 78,615 | 7.1× Namespace |
| QD1 read latency, p99 | 210 µs | 12 µs | 17.2× Namespace |
| Sequential read | 451 MiB/s | 4.1 GiB/s | 9.4× Namespace |
| Sequential write | 216 MiB/s | 2.9 GiB/s | 14.0× Namespace |
| Sync write, 4k + fdatasync (IOPS) | 7,841 | 17,844 | 2.3× Namespace |
| Network, cache & Docker | |||
| Download from GitHub | 195 MiB/s | 202 MiB/s | ≈ even |
| Cache restore, 4 GB (actions/cache) | 32s | 28s | 1.1× Namespace |
| Cache save, 4 GB (actions/cache) | 25s | 14s | 1.8× Namespace |
| docker pull | 7.5s | 4.2s | 1.8× Namespace |
| Database | |||
| pgbench read/write (TPS) | 7,180 | 8,463 | 1.2× Namespace |
| pgbench read-only (TPS) | 62,052 | 67,294 | 1.1× Namespace |
| Queue | |||
| Queue under burst load | 21s | 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