self-host →

RunsOn runner benchmark.

self-hosted · your AWS account jobs ran from Amazon.com (US) in Virginia, US (us-east-1a/1b) 39 variants 2–12 vCPU x64, arm64 RunsOn pricing

2791 of 2857 jobs finished across every suite, 66 failed (Rust 1, TypeScript 48, Docker 2, Hardware 8, EC2 storage 6, Cache 1).

  • TypeScript is borderline at 8 GB or less: RunsOn's 12 machines with 4–8 GB ran out of memory, 9 of them on some runs only; Blacksmith and Warpbuild never ran out; GitHub, Namespace and Ubicloud ran out on some runs; AWS CodeBuild ran out too; 16 GB passes everywhere.
  • Measured swap at 8 GB or less: Blacksmith 2 vCPU has 11 GiB, GitHub 2 vCPU 3 GiB, RunsOn 2 vCPU 7.6 GiB, Ubicloud 2 vCPU 4 GiB and Warpbuild 2 vCPU 4 GiB; AWS CodeBuild 4 vCPU and Namespace 2 vCPU have none.
Arch
RunsOn price

Suggested default at 4 vCPU the rule

m8azn.xlarge · EBS gp3 x64

11m 02s and $0.0462 at spot for the three builds: the fastest of 4 on the default EBS volume, and none within 10% of its time costs less.

Suggested default at 4 vCPU the rule

m8a.xlarge · EBS gp3 x64

12m 05s and $0.0660 at on-demand for the three builds: 10% slower than m8azn.xlarge, the fastest, and 34% cheaper.

Suggested default at 4 vCPU the rule

m9g.xlarge · EBS gp3 arm64

12m 12s and $0.0510 at spot for the three builds: the only variant on the default EBS volume that finished all three.

Suggested default at 4 vCPU the rule

m9g.xlarge · EBS gp3 arm64

12m 12s and $0.0539 at on-demand for the three builds: the only variant on the default EBS volume that finished all three.

Variants

Fastest firstCheapest first; × against RunsOn's fastest variant with 3 runs; cost per build at EC2 spoton-demand, on the whole job's time.

Build
Size
Sort
  1. m8azn.3xlarge · EBS gp312 vCPU · 48 GB5 runs1m 10s, cost per build $0.0178$0.0369; phases: setup 27s, cargo test 26s, clippy 18s, ×1.00
  2. c8a.2xlarge · EBS gp38 vCPU · 16 GB5 runs1m 26s, cost per build $0.0072$0.0153; phases: setup 26s, cargo test 37s, clippy 23s, ×1.23
  3. m8a.2xlarge · gp3 1000 MiB/s8 vCPU · 32 GB5 runs1m 26s, cost per build $0.0122$0.0216; phases: setup 24s, cargo test 38s, clippy 22s, ×1.23
  4. m8a.2xlarge · EBS gp38 vCPU · 32 GB5 runs1m 27s, cost per build $0.0069$0.0168; phases: setup 27s, cargo test 38s, clippy 22s, ×1.24
  5. r8a.2xlarge · tmpfs8 vCPU · 64 GB5 runs1m 28s, cost per build $0.0107$0.0228; phases: setup 26s, cargo test 38s, clippy 23s, ×1.26
  6. m8a.2xlarge · tmpfs8 vCPU · 32 GB5 runs1m 29s, cost per build $0.0075$0.0174; phases: setup 26s, cargo test 38s, clippy 24s, ×1.27
  7. m8azn.xlarge · EBS gp34 vCPU · 16 GB5 runs1m 53s, cost per build $0.0079$0.0181; phases: setup 27s, cargo test 56s, clippy 31s, ×1.61
  8. m8azn.xlarge · gp3 1000 MiB/s4 vCPU · 16 GB5 runs1m 54s, cost per build $0.0136$0.0229; phases: setup 27s, cargo test 56s, clippy 31s, ×1.63
  9. m8id.2xlarge · local NVMe8 vCPU · 32 GB5 runs1m 56s, cost per build $0.0116$0.0234; phases: setup 31s, cargo test 54s, clippy 31s, ×1.66
  10. i7i.2xlarge · local NVMe8 vCPU · 64 GB5 runs1m 57s, cost per build $0.0142$0.0327; phases: setup 33s, cargo test 53s, clippy 31s, ×1.67
+18 more variants
  1. m8i.2xlarge · EBS gp38 vCPU · 32 GB5 runs1m 57s, cost per build $0.0092$0.0186; phases: setup 29s, cargo test 55s, clippy 32s, ×1.67
  2. m8a.xlarge · EBS gp34 vCPU · 16 GB5 runs1m 59s, cost per build $0.0050$0.0118; phases: setup 24s, cargo test 1m 01s, clippy 34s, ×1.70
  3. m8i-flex.2xlarge · EBS gp38 vCPU · 32 GB5 runs1m 59s, cost per build $0.0101$0.0190; phases: setup 29s, cargo test 56s, clippy 33s, ×1.70
  4. c8a.xlarge · EBS gp34 vCPU · 8 GB5 runs2m 05s, cost per build $0.0044$0.0105; phases: setup 27s, cargo test 1m 03s, clippy 34s, ×1.79
  5. r8a.xlarge · tmpfs4 vCPU · 32 GB5 runs2m 06s, cost per build $0.0065$0.0147; phases: setup 25s, cargo test 1m 04s, clippy 35s, ×1.80
  6. m8azn.large · EBS gp32 vCPU · 8 GB5 runs2m 51s, cost per build $0.0047$0.0131; phases: setup 27s, cargo test 1m 34s, clippy 51s, ×2.44
  7. m8i-flex.xlarge · EBS gp34 vCPU · 16 GB5 runs2m 56s, cost per build $0.0065$0.0131; phases: setup 27s, cargo test 1m 34s, clippy 53s, ×2.51
  8. m8id.xlarge · local NVMe4 vCPU · 16 GB5 runs2m 57s, cost per build $0.0071$0.0169; phases: setup 31s, cargo test 1m 34s, clippy 51s, ×2.53
  9. m8i.xlarge · EBS gp34 vCPU · 16 GB5 runs2m 59s, cost per build $0.0068$0.0139; phases: setup 30s, cargo test 1m 37s, clippy 53s, ×2.56
  10. i7i.xlarge · local NVMe4 vCPU · 32 GB4 runs3m 06s, cost per build $0.0077$0.0262; phases: setup 34s, cargo test 1m 38s, clippy 54s, ×2.65
  11. r8a.large · EBS gp32 vCPU · 16 GB5 runs3m 06s, cost per build $0.0040$0.0113; phases: setup 26s, cargo test 1m 43s, clippy 55s, ×2.66
  12. m8a.large · EBS gp32 vCPU · 8 GB5 runs3m 12s, cost per build $0.0088$0.0088; phases: setup 28s, cargo test 1m 44s, clippy 56s, ×2.74
  13. c8a.large · EBS gp32 vCPU · 4 GB5 runs3m 39s, cost per build $0.0039$0.0086; phases: setup 28s, cargo test 2m 05s, clippy 1m 08s, ×3.13
  14. m8id.large · local NVMe2 vCPU · 8 GB5 runs5m 02s, cost per build $0.0139$0.0141; phases: setup 31s, cargo test 2m 57s, clippy 1m 34s, ×4.31
  15. m8i.large · EBS gp32 vCPU · 8 GB5 runs5m 12s, cost per build $0.0066$0.0123; phases: setup 32s, cargo test 3m 02s, clippy 1m 39s, ×4.46
  16. i7i.large · local NVMe2 vCPU · 16 GB5 runs5m 18s, cost per build $0.0065$0.0208; phases: setup 32s, cargo test 3m 07s, clippy 1m 39s, ×4.54
  17. m8i-flex.large · EBS gp32 vCPU · 8 GB5 runs5m 18s, cost per build $0.0060$0.0118; phases: setup 27s, cargo test 3m 08s, clippy 1m 42s, ×4.54
  18. t8i.medium · EBS gp32 vCPU · 4 GB5 runs5m 34s, cost per build $0.0046$0.0070; phases: setup 33s, cargo test 3m 13s, clippy 1m 47s, ×4.77
  1. m8a.2xlarge · tmpfs8 vCPU · 32 GB5 runs30s, cost per build $0.0041$0.0095; phases: toolchain 1s, clone 1s, bun install 8s, typecheck 21s, ×1.00
  2. r8a.2xlarge · tmpfs8 vCPU · 64 GB5 runs31s, cost per build $0.0059$0.0124; phases: toolchain 1s, clone 1s, bun install 8s, typecheck 20s, ×1.03
  3. m8a.2xlarge · gp3 1000 MiB/s8 vCPU · 32 GB5 runs33s, cost per build $0.0064$0.0123; phases: toolchain 1s, clone 1s, bun install 11s, typecheck 21s, ×1.10
  4. m8azn.3xlarge · EBS gp312 vCPU · 48 GB5 runs37s, cost per build $0.0126$0.0298; phases: toolchain 1s, clone 1s, bun install 21s, typecheck 16s, ×1.23
  5. m8a.2xlarge · EBS gp38 vCPU · 32 GB5 runs42s, cost per build $0.0056$0.0124; phases: toolchain 1s, clone 1s, bun install 22s, typecheck 19s, ×1.40
  6. m8id.2xlarge · local NVMe8 vCPU · 32 GB5 runs44s, cost per build $0.0052$0.0124; phases: toolchain 1s, clone 1s, bun install 10s, typecheck 31s, ×1.47
  7. m8azn.xlarge · gp3 1000 MiB/s4 vCPU · 16 GB5 runs45s, cost per build $0.0072$0.0123; phases: toolchain 1s, clone 1s, bun install 10s, typecheck 34s, ×1.50
  8. c8a.2xlarge · EBS gp38 vCPU · 16 GB5 runs47s, cost per build $0.0052$0.0116; phases: toolchain 1s, clone 1s, bun install 25s, typecheck 20s, ×1.57
  9. i7i.2xlarge · local NVMe8 vCPU · 64 GB5 runs47s, cost per build $0.0199$0.0199; phases: toolchain 1s, clone 1s, bun install 10s, typecheck 34s, ×1.57
  10. r8a.xlarge · tmpfs4 vCPU · 32 GB5 runs48s, cost per build $0.0036$0.0080; phases: toolchain 1s, clone 1s, bun install 8s, typecheck 37s, ×1.60
+18 more variants
  1. m8i.2xlarge · EBS gp38 vCPU · 32 GB5 runs55s, cost per build $0.0060$0.0125; phases: toolchain 1s, clone 1s, bun install 20s, typecheck 32s, ×1.83
  2. m8azn.xlarge · EBS gp34 vCPU · 16 GB5 runs56s, cost per build $0.0052$0.0122; phases: toolchain 1s, clone 1s, bun install 21s, typecheck 34s, ×1.87
  3. m8i-flex.2xlarge · EBS gp38 vCPU · 32 GB5 runs58s, cost per build $0.0066$0.0124; phases: toolchain 1s, clone 2s, bun install 22s, typecheck 33s, ×1.93
  4. m8a.xlarge · EBS gp34 vCPU · 16 GB5 runs1m 01s, cost per build $0.0031$0.0073; phases: toolchain 1s, clone 1s, bun install 21s, typecheck 39s, ×2.03
  5. c8a.xlarge · EBS gp34 vCPU · 8 GB3 runs1m 03s, cost per build $0.0030$0.0076; phases: toolchain 1s, clone 1s, bun install 21s, typecheck 39s, ×2.10
  6. i7i.xlarge · local NVMe4 vCPU · 32 GB4 runs1m 17s, cost per build $0.0041$0.0125; phases: toolchain 1s, clone 2s, bun install 11s, typecheck 1m 04s, ×2.57
  7. m8id.xlarge · local NVMe4 vCPU · 16 GB5 runs1m 20s, cost per build $0.0037$0.0092; phases: toolchain 1s, clone 2s, bun install 16s, typecheck 1m 00s, ×2.67
  8. m8i-flex.xlarge · EBS gp34 vCPU · 16 GB5 runs1m 28s, cost per build $0.0042$0.0084; phases: toolchain 1s, clone 1s, bun install 22s, typecheck 1m 03s, ×2.93
  9. m8i.xlarge · EBS gp34 vCPU · 16 GB5 runs1m 29s, cost per build $0.0040$0.0084; phases: toolchain 1s, clone 2s, bun install 23s, typecheck 1m 03s, ×2.97
  10. r8a.large · EBS gp32 vCPU · 16 GB5 runs1m 41s, cost per build $0.0026$0.0070; phases: toolchain 1s, clone 1s, bun install 22s, typecheck 1m 16s, ×3.37
  11. i7i.large · local NVMe2 vCPU · 16 GB5 runs2m 23s, cost per build $0.0033$0.0106; phases: toolchain 1s, clone 2s, bun install 16s, typecheck 2m 04s, ×4.77
  12. m8a.large · EBS gp32 vCPU · 8 GB1m 37s, cost per build $0.0026$0.0056; phases: toolchain 1s, clone 1s, bun install 20s, typecheck 1m 15s, 1 run
  13. m8azn.large · EBS gp32 vCPU · 8 GB1m 45s, cost per build $0.0034$0.0098; phases: toolchain 1s, clone 1s, bun install 20s, typecheck 1m 23s, 1 run
  14. m8i-flex.large · EBS gp32 vCPU · 8 GB2m 36s, cost per build $0.0053$0.0068; phases: toolchain 1s, clone 2s, bun install 20s, typecheck 2m 13s, 2 runs
  15. m8i.large · EBS gp32 vCPU · 8 GB2m 43s, cost per build $0.0035$0.0073; phases: toolchain 2s, clone 2s, bun install 21s, typecheck 2m 19s, 2 runs
  16. m8id.large · local NVMe2 vCPU · 8 GB3m 07s, cost per build $0.0039$0.0094; phases: toolchain 1s, clone 2s, bun install 36s, typecheck 2m 28s, 1 run
  17. c8a.large · EBS gp32 vCPU · 4 GBfailed · out of memory
  18. t8i.medium · EBS gp32 vCPU · 4 GBfailed · out of memory
  1. r8a.2xlarge · tmpfs8 vCPU · 64 GB5 runs3m 46s, cost per build $0.0239$0.0484; phases: fetch source 15s, buildx setup 3s, docker build 3m 27s, ×1.00
  2. m8a.2xlarge · gp3 1000 MiB/s8 vCPU · 32 GB5 runs4m 26s, cost per build $0.0320$0.0557; phases: fetch source 22s, buildx setup 4s, docker build 3m 59s, ×1.18
  3. m8azn.3xlarge · EBS gp312 vCPU · 48 GB5 runs4m 52s, cost per build $0.0601$0.1227; phases: fetch source 19s, buildx setup 5s, docker build 4m 29s, ×1.29
  4. m8a.2xlarge · EBS gp38 vCPU · 32 GB5 runs5m 39s, cost per build $0.0261$0.0555; phases: fetch source 11s, buildx setup 5s, docker build 5m 20s, ×1.50
  5. i7i.2xlarge · local NVMe8 vCPU · 64 GB5 runs5m 47s, cost per build $0.0500$0.0862; phases: fetch source 7s, buildx setup 4s, docker build 5m 25s, ×1.54
  6. m8id.2xlarge · local NVMe8 vCPU · 32 GB5 runs5m 49s, cost per build $0.0289$0.0601; phases: fetch source 8s, buildx setup 5s, docker build 5m 30s, ×1.54
  7. m8azn.xlarge · gp3 1000 MiB/s4 vCPU · 16 GB5 runs6m 42s, cost per build $0.0437$0.0762; phases: fetch source 20s, buildx setup 4s, docker build 6m 14s, ×1.78
  8. m8i.2xlarge · EBS gp38 vCPU · 32 GB4 runs7m 18s, cost per build $0.0302$0.0631; phases: fetch source 18s, buildx setup 6s, docker build 6m 57s, ×1.94
  9. c8a.2xlarge · EBS gp38 vCPU · 16 GB5 runs7m 19s, cost per build $0.0622$0.0674; phases: fetch source 10s, buildx setup 5s, docker build 7m 07s, ×1.94
  10. m8i-flex.2xlarge · EBS gp38 vCPU · 32 GB5 runs7m 29s, cost per build $0.0339$0.0600; phases: fetch source 22s, buildx setup 5s, docker build 7m 04s, ×1.99
+18 more variants
  1. m8azn.xlarge · EBS gp34 vCPU · 16 GB5 runs8m 13s, cost per build $0.0332$0.0702; phases: fetch source 13s, buildx setup 5s, docker build 7m 47s, ×2.18
  2. i7i.xlarge · local NVMe4 vCPU · 32 GB5 runs8m 34s, cost per build $0.0618$0.0618; phases: fetch source 20s, buildx setup 4s, docker build 8m 08s, ×2.27
  3. m8a.xlarge · EBS gp34 vCPU · 16 GB5 runs9m 05s, cost per build $0.0457$0.0469; phases: fetch source 21s, buildx setup 5s, docker build 8m 46s, ×2.41
  4. m8id.xlarge · local NVMe4 vCPU · 16 GB5 runs9m 18s, cost per build $0.0485$0.0485; phases: fetch source 21s, buildx setup 7s, docker build 8m 56s, ×2.47
  5. r8a.large · EBS gp32 vCPU · 16 GB5 runs11m 18s, cost per build $0.0397$0.0397; phases: fetch source 18s, buildx setup 5s, docker build 11m 00s, ×3.00
  6. m8i.xlarge · EBS gp34 vCPU · 16 GB5 runs12m 10s, cost per build $0.0267$0.0538; phases: fetch source 7s, buildx setup 6s, docker build 11m 58s, ×3.23
  7. m8i-flex.xlarge · EBS gp34 vCPU · 16 GB5 runs12m 15s, cost per build $0.0257$0.0512; phases: fetch source 12s, buildx setup 5s, docker build 11m 59s, ×3.25
  8. i7i.large · local NVMe2 vCPU · 16 GB5 runs14m 51s, cost per build $0.0169$0.0541; phases: fetch source 20s, buildx setup 5s, docker build 14m 24s, ×3.94
  9. m8a.2xlarge · tmpfs8 vCPU · 32 GBn/a · not run: needs more than 32 GB of RAM with tmpfs, where Docker's data root lives in RAM
  10. c8a.xlarge · EBS gp34 vCPU · 8 GBn/a · not run: needs more than 8 GB of memory
  11. r8a.xlarge · tmpfs4 vCPU · 32 GBn/a · not run: needs more than 32 GB of RAM with tmpfs, where Docker's data root lives in RAM
  12. m8azn.large · EBS gp32 vCPU · 8 GBn/a · not run: needs more than 8 GB of memory
  13. m8a.large · EBS gp32 vCPU · 8 GBn/a · not run: needs more than 8 GB of memory
  14. c8a.large · EBS gp32 vCPU · 4 GBn/a · not run: needs more than 8 GB of memory
  15. m8id.large · local NVMe2 vCPU · 8 GBn/a · not run: needs more than 8 GB of memory
  16. m8i.large · EBS gp32 vCPU · 8 GBn/a · not run: needs more than 8 GB of memory
  17. m8i-flex.large · EBS gp32 vCPU · 8 GBn/a · not run: needs more than 8 GB of memory
  18. t8i.medium · EBS gp32 vCPU · 4 GBn/a · not run: needs more than 8 GB of memory
  1. m9g.2xlarge · EBS gp38 vCPU · 32 GB5 runs1m 28s, cost per build $0.0079$0.0143; phases: setup 27s, cargo test 40s, clippy 21s, ×1.00
  2. m9gd.2xlarge · local NVMe8 vCPU · 32 GB5 runs1m 30s, cost per build $0.0188$0.0188; phases: setup 23s, cargo test 41s, clippy 21s, ×1.02
  3. m9g.2xlarge · tmpfs8 vCPU · 32 GB5 runs1m 31s, cost per build $0.0084$0.0142; phases: setup 29s, cargo test 40s, clippy 23s, ×1.03
  4. c8g.2xlarge · EBS gp38 vCPU · 16 GB5 runs1m 54s, cost per build $0.0083$0.0145; phases: setup 28s, cargo test 57s, clippy 32s, ×1.30
  5. m9g.xlarge · EBS gp34 vCPU · 16 GB5 runs2m 02s, cost per build $0.0091$0.0091; phases: setup 24s, cargo test 1m 05s, clippy 33s, ×1.39
  6. m9g.xlarge · tmpfs4 vCPU · 16 GB5 runs2m 04s, cost per build $0.0091$0.0093; phases: setup 25s, cargo test 1m 04s, clippy 33s, ×1.41
  7. m9gd.xlarge · local NVMe4 vCPU · 16 GB5 runs2m 04s, cost per build $0.0118$0.0118; phases: setup 29s, cargo test 1m 04s, clippy 33s, ×1.41
  8. c8g.xlarge · EBS gp34 vCPU · 8 GB5 runs2m 43s, cost per build $0.0057$0.0099; phases: setup 26s, cargo test 1m 27s, clippy 48s, ×1.85
  9. m9gd.large · local NVMe2 vCPU · 8 GB5 runs3m 09s, cost per build $0.0092$0.0092; phases: setup 26s, cargo test 1m 47s, clippy 54s, ×2.15
  10. m9g.large · EBS gp32 vCPU · 8 GB5 runs3m 13s, cost per build $0.0075$0.0075; phases: setup 25s, cargo test 1m 51s, clippy 57s, ×2.19
+1 more variant
  1. c8g.large · EBS gp32 vCPU · 4 GB5 runs5m 17s, cost per build $0.0048$0.0097; phases: setup 27s, cargo test 3m 10s, clippy 1m 32s, ×3.60
  1. m9g.2xlarge · tmpfs8 vCPU · 32 GB5 runs29s, cost per build $0.0043$0.0079; phases: toolchain 1s, clone 1s, bun install 8s, typecheck 20s, ×1.00
  2. m9gd.2xlarge · local NVMe8 vCPU · 32 GB5 runs30s, cost per build $0.0094$0.0095; phases: toolchain 1s, clone 1s, bun install 8s, typecheck 19s, ×1.03
  3. m9g.2xlarge · EBS gp38 vCPU · 32 GB5 runs42s, cost per build $0.0058$0.0104; phases: toolchain 1s, clone 1s, bun install 20s, typecheck 19s, ×1.45
  4. m9g.xlarge · tmpfs4 vCPU · 16 GB5 runs46s, cost per build $0.0049$0.0049; phases: toolchain 1s, clone 1s, bun install 9s, typecheck 35s, ×1.59
  5. m9gd.xlarge · local NVMe4 vCPU · 16 GB5 runs50s, cost per build $0.0070$0.0070; phases: toolchain 1s, clone 1s, bun install 13s, typecheck 34s, ×1.72
  6. c8g.2xlarge · EBS gp38 vCPU · 16 GB5 runs53s, cost per build $0.0053$0.0092; phases: toolchain 1s, clone 1s, bun install 26s, typecheck 26s, ×1.83
  7. m9g.xlarge · EBS gp34 vCPU · 16 GB5 runs1m 00s, cost per build $0.0061$0.0061; phases: toolchain 1s, clone 1s, bun install 22s, typecheck 36s, ×2.07
  8. c8g.xlarge · EBS gp34 vCPU · 8 GB1m 20s, cost per build $0.0038$0.0065; phases: toolchain 1s, clone 1s, bun install 22s, typecheck 56s, 1 run
  9. m9g.large · EBS gp32 vCPU · 8 GB1m 40s, cost per build $0.0045$0.0045; phases: clone 2s, bun install 19s, typecheck 1m 19s, 1 run
  10. m9gd.large · local NVMe2 vCPU · 8 GB1m 40s, cost per build $0.0052$0.0052; phases: toolchain 1s, clone 2s, bun install 29s, typecheck 1m 08s, 1 run
+1 more variant
  1. c8g.large · EBS gp32 vCPU · 4 GBfailed · out of memory
  1. m9gd.2xlarge · local NVMe8 vCPU · 32 GB5 runs4m 33s, cost per build $0.0477$0.0477; phases: fetch source 20s, buildx setup 3s, docker build 4m 09s, ×1.00
  2. m9g.2xlarge · EBS gp38 vCPU · 32 GB5 runs5m 54s, cost per build $0.0272$0.0482; phases: fetch source 21s, buildx setup 4s, docker build 5m 35s, ×1.30
  3. m9gd.xlarge · local NVMe4 vCPU · 16 GB4 runs6m 23s, cost per build $0.0327$0.0327; phases: fetch source 15s, buildx setup 5s, docker build 6m 01s, ×1.40
  4. c8g.2xlarge · EBS gp38 vCPU · 16 GB5 runs8m 20s, cost per build $0.0320$0.0570; phases: fetch source 15s, buildx setup 5s, docker build 8m 06s, ×1.83
  5. m9g.xlarge · EBS gp34 vCPU · 16 GB5 runs9m 10s, cost per build $0.0358$0.0387; phases: fetch source 22s, buildx setup 5s, docker build 8m 37s, ×2.01
  6. m9g.2xlarge · tmpfs8 vCPU · 32 GBn/a · not run: needs more than 32 GB of RAM with tmpfs, where Docker's data root lives in RAM
  7. m9g.xlarge · tmpfs4 vCPU · 16 GBn/a · not run: needs more than 32 GB of RAM with tmpfs, where Docker's data root lives in RAM
  8. c8g.xlarge · EBS gp34 vCPU · 8 GBn/a · not run: needs more than 8 GB of memory
  9. m9gd.large · local NVMe2 vCPU · 8 GBn/a · not run: needs more than 8 GB of memory
  10. m9g.large · EBS gp32 vCPU · 8 GBn/a · not run: needs more than 8 GB of memory
+1 more variant
  1. c8g.large · EBS gp32 vCPU · 4 GBn/a · not run: needs more than 8 GB of memory

Bar shades, light to dark, in execution order: setup = checkout + packages + toolchaincargo fmtcargo testclippy

Bar shades, light to dark, in execution order: toolchainclonebun installtypecheck

Bar shades, light to dark, in execution order: fetch sourcebuildx setupdocker build

Same CPU, different disk
  • m8a.2xlarge · EBS gp3 and m8a.2xlarge · gp3 1000 MiB/s m8a.2xlarge on EBS gp3 and on gp3 1000 MiB/s: Rust even within run-to-run spread (1m 25s–1m 29s on EBS gp3, 1m 23s–1m 31s on gp3 1000 MiB/s); TypeScript even within run-to-run spread (39s–48s on EBS gp3, 32s–39s on gp3 1000 MiB/s); Docker 4m 26s on gp3 1000 MiB/s vs 5m 39s.
  • m8a.2xlarge · EBS gp3 and m8a.2xlarge · tmpfs m8a.2xlarge on EBS gp3 and on tmpfs: Rust even within run-to-run spread (1m 25s–1m 29s on EBS gp3, 1m 26s–1m 33s on tmpfs); TypeScript 30s on tmpfs vs 42s.
  • m8a.2xlarge · gp3 1000 MiB/s and m8a.2xlarge · tmpfs m8a.2xlarge on gp3 1000 MiB/s and on tmpfs: Rust even within run-to-run spread (1m 23s–1m 31s on gp3 1000 MiB/s, 1m 26s–1m 33s on tmpfs); TypeScript even within run-to-run spread (32s–39s on gp3 1000 MiB/s, 29s–33s on tmpfs).
  • m8azn.xlarge · gp3 1000 MiB/s and m8azn.xlarge · EBS gp3 m8azn.xlarge on gp3 1000 MiB/s and on EBS gp3: Rust even within run-to-run spread (1m 51s–1m 55s on gp3 1000 MiB/s, 1m 50s–1m 57s on EBS gp3); TypeScript 45s on gp3 1000 MiB/s vs 56s; Docker 6m 42s on gp3 1000 MiB/s vs 8m 13s.
  • m8i.2xlarge · EBS gp3 and m8id.2xlarge · local NVMe m8i.2xlarge (EBS gp3) and m8id.2xlarge (local NVMe) share the Xeon 6975P-C: Rust even within run-to-run spread (1m 51s–2m 00s on EBS gp3, 1m 51s–2m 02s on local NVMe); TypeScript 44s on local NVMe vs 55s; Docker 5m 49s on local NVMe vs 7m 18s.
  • m8i-flex.2xlarge · EBS gp3 and m8id.2xlarge · local NVMe m8i-flex.2xlarge (EBS gp3) and m8id.2xlarge (local NVMe) share the Xeon 6975P-C: Rust even within run-to-run spread (1m 54s–2m 06s on EBS gp3, 1m 51s–2m 02s on local NVMe); TypeScript 44s on local NVMe vs 58s; Docker 5m 49s on local NVMe vs 7m 29s.
  • m8i-flex.large · EBS gp3 and m8id.large · local NVMe m8i-flex.large (EBS gp3) and m8id.large (local NVMe) share the Xeon 6975P-C: Rust even within run-to-run spread (4m 57s–5m 27s on EBS gp3, 4m 50s–5m 07s on local NVMe); TypeScript 2m 36s on EBS gp3 vs 3m 07s.
  • m8i-flex.xlarge · EBS gp3 and m8id.xlarge · local NVMe m8i-flex.xlarge (EBS gp3) and m8id.xlarge (local NVMe) share the Xeon 6975P-C: Rust even within run-to-run spread (2m 53s–3m 02s on EBS gp3, 2m 50s–3m 00s on local NVMe); TypeScript 1m 20s on local NVMe vs 1m 28s; Docker 9m 18s on local NVMe vs 12m 15s.
  • m8i.large · EBS gp3 and m8id.large · local NVMe m8i.large (EBS gp3) and m8id.large (local NVMe) share the Xeon 6975P-C: Rust even within run-to-run spread (4m 58s–5m 35s on EBS gp3, 4m 50s–5m 07s on local NVMe); TypeScript 2m 43s on EBS gp3 vs 3m 07s.
  • m8i.xlarge · EBS gp3 and m8id.xlarge · local NVMe m8i.xlarge (EBS gp3) and m8id.xlarge (local NVMe) share the Xeon 6975P-C: Rust even within run-to-run spread (2m 56s–3m 00s on EBS gp3, 2m 50s–3m 00s on local NVMe); TypeScript 1m 20s on local NVMe vs 1m 29s; Docker 9m 18s on local NVMe vs 12m 10s.
  • m9g.2xlarge · tmpfs and m9g.2xlarge · EBS gp3 m9g.2xlarge on tmpfs and on EBS gp3: Rust even within run-to-run spread (1m 24s–1m 42s on tmpfs, 1m 25s–1m 31s on EBS gp3); TypeScript 29s on tmpfs vs 42s.
  • m9g.xlarge · EBS gp3 and m9g.xlarge · tmpfs m9g.xlarge on EBS gp3 and on tmpfs: Rust even within run-to-run spread (1m 59s–2m 05s on EBS gp3, 1m 58s–2m 06s on tmpfs); TypeScript 46s on tmpfs vs 1m 00s.
  • m9g.2xlarge · tmpfs and m9gd.2xlarge · local NVMe m9g.2xlarge (tmpfs) and m9gd.2xlarge (local NVMe) share the Neoverse-V3: Rust even within run-to-run spread (1m 24s–1m 42s on tmpfs, 1m 20s–1m 36s on local NVMe); TypeScript even within run-to-run spread (29s–32s on tmpfs, 28s–31s on local NVMe).
  • m9g.xlarge · EBS gp3 and m9gd.xlarge · local NVMe m9g.xlarge (EBS gp3) and m9gd.xlarge (local NVMe) share the Neoverse-V3: Rust even within run-to-run spread (1m 59s–2m 05s on EBS gp3, 1m 56s–2m 07s on local NVMe); TypeScript 50s on local NVMe vs 1m 00s; Docker 6m 23s on local NVMe vs 9m 10s.
  • m9g.2xlarge · EBS gp3 and m9gd.2xlarge · local NVMe m9g.2xlarge (EBS gp3) and m9gd.2xlarge (local NVMe) share the Neoverse-V3: Rust even within run-to-run spread (1m 25s–1m 31s on EBS gp3, 1m 20s–1m 36s on local NVMe); TypeScript 30s on local NVMe vs 42s; Docker 4m 33s on local NVMe vs 5m 54s.
  • m9g.large · EBS gp3 and m9gd.large · local NVMe m9g.large (EBS gp3) and m9gd.large (local NVMe) share the Neoverse-V3: Rust even within run-to-run spread (3m 01s–3m 25s on EBS gp3, 3m 01s–3m 10s on local NVMe); TypeScript within 1s of each other.
  • m9g.xlarge · tmpfs and m9gd.xlarge · local NVMe m9g.xlarge (tmpfs) and m9gd.xlarge (local NVMe) share the Neoverse-V3: Rust even within run-to-run spread (1m 58s–2m 06s on tmpfs, 1m 56s–2m 07s on local NVMe); TypeScript 46s on tmpfs vs 50s.
Also differs in RAM (7)
  • c8a.xlarge · EBS gp3 and r8a.xlarge · tmpfs c8a.xlarge (EBS gp3) and r8a.xlarge (tmpfs) share the EPYC 9R45 (RAM differs: 8 vs 32 GiB): Rust even within run-to-run spread (1m 57s–2m 09s on EBS gp3, 1m 59s–2m 14s on tmpfs); TypeScript 48s on tmpfs vs 1m 03s.
  • c8a.2xlarge · EBS gp3 and m8a.2xlarge · gp3 1000 MiB/s c8a.2xlarge (EBS gp3) and m8a.2xlarge (gp3 1000 MiB/s) share the EPYC 9R45 (RAM differs: 16 vs 32 GiB): Rust even within run-to-run spread (1m 21s–1m 32s on EBS gp3, 1m 23s–1m 31s on gp3 1000 MiB/s); TypeScript 33s on gp3 1000 MiB/s vs 47s; Docker 4m 26s on gp3 1000 MiB/s vs 7m 19s.
  • c8a.2xlarge · EBS gp3 and m8a.2xlarge · tmpfs c8a.2xlarge (EBS gp3) and m8a.2xlarge (tmpfs) share the EPYC 9R45 (RAM differs: 16 vs 32 GiB): Rust even within run-to-run spread (1m 21s–1m 32s on EBS gp3, 1m 26s–1m 33s on tmpfs); TypeScript 30s on tmpfs vs 47s.
  • c8a.2xlarge · EBS gp3 and r8a.2xlarge · tmpfs c8a.2xlarge (EBS gp3) and r8a.2xlarge (tmpfs) share the EPYC 9R45 (RAM differs: 16 vs 64 GiB): Rust even within run-to-run spread (1m 21s–1m 32s on EBS gp3, 1m 24s–1m 30s on tmpfs); TypeScript 31s on tmpfs vs 47s; Docker 3m 46s on tmpfs vs 7m 19s.
  • m8a.2xlarge · EBS gp3 and r8a.2xlarge · tmpfs m8a.2xlarge (EBS gp3) and r8a.2xlarge (tmpfs) share the EPYC 9R45 (RAM differs: 32 vs 64 GiB): Rust even within run-to-run spread (1m 25s–1m 29s on EBS gp3, 1m 24s–1m 30s on tmpfs); TypeScript 31s on tmpfs vs 42s; Docker 3m 46s on tmpfs vs 5m 39s.
  • m8a.2xlarge · gp3 1000 MiB/s and r8a.2xlarge · tmpfs m8a.2xlarge (gp3 1000 MiB/s) and r8a.2xlarge (tmpfs) share the EPYC 9R45 (RAM differs: 32 vs 64 GiB): Rust even within run-to-run spread (1m 23s–1m 31s on gp3 1000 MiB/s, 1m 24s–1m 30s on tmpfs); TypeScript even within run-to-run spread (32s–39s on gp3 1000 MiB/s, 29s–33s on tmpfs); Docker 3m 46s on tmpfs vs 4m 26s.
  • m8a.xlarge · EBS gp3 and r8a.xlarge · tmpfs m8a.xlarge (EBS gp3) and r8a.xlarge (tmpfs) share the EPYC 9R45 (RAM differs: 16 vs 32 GiB): Rust even within run-to-run spread (1m 55s–2m 11s on EBS gp3, 1m 59s–2m 14s on tmpfs); TypeScript 48s on tmpfs vs 1m 01s.

Fixed costs not in cost per build

  • Commercial Starter license $350/yearfewer than 50,000 runners a month; one fee per legal entity, every GitHub org and AWS account
  • Commercial Growth license $1,050/yearfewer than 200,000 runners a month
  • Commercial Scale license $2,100/yearfewer than 500,000 runners a month
  • Commercial Enterprise license $4,200/year500,000 or more runners a month; priority support, Slack Connect, source-code access

The license scales with runners launched a month, never with minutes.

Free license for nonprofit, open-source, educational and personal non-commercial projects; 15-day free trial on the Starter tier. EC2 and EBS are paid to AWS, with no markup. Checked 2026-09-30

Over timeone point per run · since Sep 30

Loading every run…