self-host →

RunsOn i7i.xlarge · local NVMe vs Namespace 4x16 x64

RunsOn does each build for 1.1–2.7× less; Namespace is 1.6–1.9× faster. Both 4 vCPU x64.

All three builds 1.3× cheaper on RunsOn: $0.0735 vs $0.0966Namespace 1.7× faster: 7m 26s vs 12m 57s
Rust build 2.7× cheaper on RunsOn: $0.0077 vs $0.0208Namespace 1.9× faster: 1m 38s vs 3m 06s
TypeScript build 2.6× cheaper on RunsOn: $0.0041 vs $0.0108Namespace 1.6× faster: 47s vs 1m 17s
Docker build 1.1× cheaper on RunsOn: $0.0618 vs $0.0650Namespace 1.7× faster: 5m 01s vs 8m 34s

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.0077 $0.0208 2.7× RunsOn
Cost per TypeScript build $0.0041 $0.0108 2.6× RunsOn
Cost per Docker build $0.0618 $0.0650 1.1× RunsOn
Price per minute $0.0019 $0.0120 overage rate 6.3× RunsOn
Real builds, wall time
Rust build (spotify-⁠player) 3m 06s 1m 38s 1.9× Namespace
TypeScript build (opencode) 1m 17s 47s 1.6× Namespace
Docker build (PostHog) 8m 34s 5m 01s 1.7× Namespace
CPU & memory
PassMark single-⁠thread (points) 2,848 4,700 1.6× Namespace
PassMark CPU Mark, all cores (points) 7,158 16,176 2.3× Namespace
sysbench CPU, 1 thread (events/s) 2,866 7,051 2.5× Namespace
7-⁠Zip compression (MIPS) 19,709 33,428 1.7× Namespace
Memory read bandwidth 19.8 GiB/s 44.8 GiB/s 2.3× Namespace
Measurement RunsOn Namespace Gap
Workspace disk (fio)
Random read, 4k QD32 (IOPS) 150,053 1,011,926 6.7× Namespace
Random write, 4k QD32 (IOPS) 82,488 436,056 5.3× Namespace
Random read, 4k QD1 (IOPS) 12,069 78,615 6.5× Namespace
QD1 read latency, p99 307 µs 12 µs 25.2× Namespace
Sequential read 1,010 MiB/s 4.1 GiB/s 4.2× Namespace
Sequential write 788 MiB/s 2.9 GiB/s 3.8× Namespace
Sync write, 4k + fdatasync (IOPS) 12,095 17,844 1.5× Namespace
Network, cache & Docker
Download from GitHub 287 MiB/s 202 MiB/s 1.4× RunsOn
Cache restore, 4 GB (actions/cache) 13s 28s 2.2× RunsOn
Cache save, 4 GB (actions/cache) 9s 14s 1.6× RunsOn
docker pull 7.1s 4.2s 1.7× Namespace
Database
pgbench read/write (TPS) 6,645 8,463 1.3× Namespace
pgbench read-⁠only (TPS) 54,071 67,294 1.2× Namespace
Queue
Queue under burst load 19s 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

Other head-to-heads