self-host →

RunsOn m8azn.xlarge · EBS gp3 vs Namespace 4x8 x64

RunsOn does the Rust build for 1.3× less; Namespace is 1.2× faster on the Rust build. Both 4 vCPU x64.

Price per minute 2.3× cheaper on RunsOn: $0.0026 vs $0.0060the builds are not all compared on cost yet
Rust build 1.3× cheaper on RunsOn: $0.0079 vs $0.0104Namespace 1.2× faster: 1m 38s vs 1m 53s
TypeScript build not yet RunsOn 56s (5 runs) · Namespace 52s (1 run)
Docker build 8m 13s RunsOn only · Namespace 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 Namespace Gap
Cost
Cost per Rust build $0.0079 $0.0104 1.3× RunsOn
Cost per TypeScript build $0.0052 $0.0060 not yet
Cost per Docker build $0.0332 n/a: Not run: the PostHog Docker build needs more than 8 GB of memory; it ran out of memory on 8 GB runners. —
Price per minute $0.0026 $0.0060 overage rate 2.3× RunsOn
Real builds, wall time
Rust build (spotify-⁠player) 1m 53s 1m 38s 1.2× Namespace
TypeScript build (opencode) 56s 52s not yet
Docker build (PostHog) 8m 13s n/a: Not run: the PostHog Docker build needs more than 8 GB of memory; it ran out of memory on 8 GB runners. —
CPU & memory
PassMark single-⁠thread (points) 4,273 4,688 1.1× Namespace
PassMark CPU Mark, all cores (points) 15,142 16,140 1.1× Namespace
sysbench CPU, 1 thread (events/s) 6,208 7,051 1.1× Namespace
7-⁠Zip compression (MIPS) 30,907 33,225 1.1× Namespace
Memory read bandwidth 40.9 GiB/s 45.0 GiB/s 1.1× Namespace
Measurement RunsOn Namespace Gap
Workspace disk (fio)
Random read, 4k QD32 (IOPS) 2,994 1,009,155 337.1× Namespace
Random write, 4k QD32 (IOPS) 2,992 403,484 134.9× Namespace
Random read, 4k QD1 (IOPS) 1,775 78,033 44.0× Namespace
QD1 read latency, p99 963 µs 12 µs 77.6× Namespace
Sequential read 401 MiB/s 4.1 GiB/s 10.6× Namespace
Sequential write 401 MiB/s 3.0 GiB/s 7.6× Namespace
Sync write, 4k + fdatasync (IOPS) 541 17,941 33.2× Namespace
Network, cache & Docker
Download from GitHub 308 MiB/s 199 MiB/s 1.6× RunsOn
Cache restore, 4 GB (actions/cache) 17s 24s 1.4× RunsOn
Cache save, 4 GB (actions/cache) 16s 12s 1.3× Namespace
docker pull 5.0s 4.3s 1.2× Namespace
Database
pgbench read/write (TPS) 3,281 8,401 2.6× Namespace
pgbench read-⁠only (TPS) 166,962 66,660 2.5× RunsOn
Queue
Queue under burst load 18s 1m 20s plan limit —
  • ≈ even: under 5% apart, or a build inside both runners' run-to-run spread
  • not yet: one side has fewer than 3 runs, so the two values are shown but not compared
  • Queue: identical jobs queued at the same instant (burst suite)
  • 2 shown, not compared yet (under 3 runs on a side)
  • 2 missing on one side or both
  • Queue: not compared. Namespace's burst ran 8 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