quickstart →

Fastest GitHub Actions cache.

A 4 GB file saved with actions/cache and restored right away on 9 providers, 2 to 12 vCPU, x64 and arm64. The runner is half of it: where actions/cache goes is the other half.

Fastest restore, x64 at 4 vCPU 5s RunsOn r8a.xlarge · tmpfs
Fastest restore, arm64 at 4 vCPU 5s RunsOn r9g.xlarge · tmpfs
GitHub's own service 44s x64 restore on GitHub 4-core, the baseline · 31s on its 8 vCPU runner
Reroute actions/cache 4 of 9 providers; 3 with no workflow change, RunsOn with a label and the runs-on/action step

4 GB restore per provider

Each provider's fastest ranked result (3+ runs) at any sizeEach provider's fastest ranked 2 vCPU resultEach provider's fastest ranked 4 vCPU resultEach provider's fastest ranked 8 vCPU result, any action; RunsOn once per storage (EBS, local NVMe, tmpfs: the Storage pill); faded rows are provisional. Right: how long the save step took.

x649 providers · restore, lower is better
  1. RunsOn + Magic Cache4 vCPU · 32 GBtmpfsr8a.xlarge5s, 7s to save, ×1.00
  2. RunsOn + Magic Cache8 vCPU · 32 GBtuned gp3m8a.2xlarge6s, 8s to save, ×1.20
  3. RunsOn + Magic Cache8 vCPU · 64 GBlocal NVMei7i.2xlarge8s, 8s to save, ×1.60
  4. Blacksmith2 vCPU · 8 GB9s, 8s to save, ×1.80
  5. Avrea4 vCPU · 16 GB10s, 19s to save, ×2.00
  6. Namespace4 vCPU · 8 GB4x817s, 13s to save, ×3.40
  7. Warpbuild4 vCPU · 16 GB21s, 15s to save, ×4.20
  8. GitHub8 vCPU · 32 GB31s, 18s to save, ×6.20
  9. AWS CodeBuild8 vCPU · 16 GBlarge34s, 1m 58s to save, ×6.80
  10. Ubicloud8 vCPU · 32 GBstandard55s, 53s to save, ×11
  11. boat8 vCPU · 16 GB1m 11s, 48s to save, 2 runs

Faded: provisional, under 3 runs, not ranked.

Fastest x64 restore: RunsOn r8a.xlarge · tmpfs (5s), ahead of RunsOn m8a.2xlarge · EBS (6s).

arm647 providers · restore, lower is better
  1. RunsOn + Magic Cache4 vCPU · 32 GBtmpfsr9g.xlarge5s, 7s to save, ×1.00
  2. RunsOn + Magic Cache8 vCPU · 32 GBlocal NVMem9gd.2xlarge8s, 9s to save, ×1.60
  3. Avrea8 vCPU · 32 GB11s, 12s to save, ×2.10
  4. RunsOn + Magic Cache8 vCPU · 32 GBEBS gp3m9g.2xlarge · EBS gp311s, 12s to save, ×2.20
  5. Blacksmith8 vCPU · 32 GB18s, 11s to save, ×3.60
  6. Warpbuild8 vCPU · 32 GB21s, 16s to save, ×4.20
  7. Namespace4 vCPU · 16 GBApple silicon 4x1622s, 16s to save, ×4.40
  8. GitHub4 vCPU · 16 GB36s, 24s to save, ×7.20
  9. Ubicloud8 vCPU · 32 GBstandard49s, 51s to save, ×9.80

Fastest arm64 restore: RunsOn r9g.xlarge · tmpfs (5s), ahead of RunsOn m9gd.2xlarge · NVMe (8s).

x649 providers · restore, lower is better
  1. RunsOn + Magic Cache2 vCPU · 16 GBtmpfsr8a.large7s, 8s to save, ×1.00
  2. Blacksmith2 vCPU · 8 GB9s, 8s to save, ×1.29
  3. Avrea2 vCPU · 8 GB13s, 19s to save, ×1.86
  4. RunsOn + Magic Cache2 vCPU · 16 GBEBS gp3r8a.large · EBS gp317s, 16s to save, ×2.43
  5. RunsOn + Magic Cache2 vCPU · 16 GBlocal NVMei7i.large19s, 14s to save, ×2.71
  6. Namespace2 vCPU · 8 GB2x821s, 13s to save, ×3.00
  7. Warpbuild2 vCPU · 8 GB27s, 17s to save, ×3.86
  8. AWS CodeBuild2 vCPU · 3 GBsmall52s, 2m 17s to save, ×7.43
  9. Ubicloud2 vCPU · 8 GBstandard59s, 56s to save, ×8.43
  10. GitHub2 vCPU · 8 GB1m 01s, 38s to save, ×8.71
  11. boat2 vCPU · 4 GB1m 30s, 59s to save, 1 run

Faded: provisional, under 3 runs, not ranked.

Fastest x64 2 vCPU restore: RunsOn r8a.large · tmpfs (7s), ahead of Blacksmith (9s).

arm647 providers · restore, lower is better
  1. RunsOn + Magic Cache2 vCPU · 16 GBtmpfsr9g.large9s, 9s to save, ×1.00
  2. Avrea2 vCPU · 8 GB12s, 13s to save, ×1.33
  3. RunsOn + Magic Cache2 vCPU · 8 GBEBS gp3m9g.large · EBS gp319s, 16s to save, ×2.11
  4. Blacksmith2 vCPU · 6 GB23s, 22s to save, ×2.56
  5. Namespace2 vCPU · 8 GBApple silicon 2x826s, 19s to save, ×2.89
  6. Warpbuild2 vCPU · 8 GB29s, 25s to save, ×3.22
  7. RunsOn + Magic Cache2 vCPU · 8 GBlocal NVMem9gd.large52s, 35s to save, ×5.78
  8. GitHub2 vCPU · 8 GB53s, 44s to save, ×5.89
  9. Ubicloud2 vCPU · 8 GBstandard1m 04s, 56s to save, ×7.11

Fastest arm64 2 vCPU restore: RunsOn r9g.large · tmpfs (9s), ahead of Avrea (12s).

x648 providers · restore, lower is better
  1. RunsOn + Magic Cache4 vCPU · 32 GBtmpfsr8a.xlarge5s, 7s to save, ×1.00
  2. RunsOn + Magic Cache4 vCPU · 16 GBtuned gp3m8azn.xlarge7s, 9s to save, ×1.40
  3. RunsOn + Magic Cache4 vCPU · 32 GBlocal NVMei7i.xlarge9s, 8s to save, ×1.80
  4. Avrea4 vCPU · 16 GB10s, 19s to save, ×2.00
  5. Blacksmith4 vCPU · 16 GB12s, 6s to save, ×2.40
  6. Namespace4 vCPU · 8 GB4x817s, 13s to save, ×3.40
  7. Warpbuild4 vCPU · 16 GB21s, 15s to save, ×4.20
  8. AWS CodeBuild4 vCPU · 8 GBmedium35s, 2m 04s to save, ×7.00
  9. GitHub4 vCPU · 16 GB44s, 35s to save, ×8.80
  10. Ubicloud4 vCPU · 16 GBpremium56s, 1m 09s to save, ×11

Fastest x64 4 vCPU restore: RunsOn r8a.xlarge · tmpfs (5s), ahead of RunsOn m8azn.xlarge · EBS (7s).

arm647 providers · restore, lower is better
  1. RunsOn + Magic Cache4 vCPU · 32 GBtmpfsr9g.xlarge5s, 7s to save, ×1.00
  2. Avrea4 vCPU · 16 GB11s, 14s to save, ×2.20
  3. RunsOn + Magic Cache4 vCPU · 16 GBEBS gp3m9g.xlarge · EBS gp316s, 15s to save, ×3.20
  4. Blacksmith4 vCPU · 16 GB21s, 14s to save, ×4.20
  5. Namespace4 vCPU · 16 GBApple silicon 4x1622s, 16s to save, ×4.40
  6. RunsOn + Magic Cache4 vCPU · 16 GBlocal NVMem9gd.xlarge23s, 20s to save, ×4.50
  7. Warpbuild4 vCPU · 16 GB27s, 23s to save, ×5.40
  8. GitHub4 vCPU · 16 GB36s, 24s to save, ×7.20
  9. Ubicloud4 vCPU · 16 GBstandard58s, 54s to save, ×12

Fastest arm64 4 vCPU restore: RunsOn r9g.xlarge · tmpfs (5s), ahead of Avrea (11s).

x649 providers · restore, lower is better
  1. RunsOn + Magic Cache8 vCPU · 32 GBtmpfsm8a.2xlarge5s, 7s to save, ×1.00
  2. RunsOn + Magic Cache8 vCPU · 32 GBtuned gp3m8a.2xlarge6s, 8s to save, ×1.20
  3. RunsOn + Magic Cache8 vCPU · 64 GBlocal NVMei7i.2xlarge8s, 8s to save, ×1.60
  4. Avrea8 vCPU · 32 GB11s, 19s to save, ×2.20
  5. Blacksmith8 vCPU · 32 GB12s, 6s to save, ×2.40
  6. Namespace8 vCPU · 16 GB8x1617s, 13s to save, ×3.40
  7. Warpbuild8 vCPU · 32 GB26s, 13s to save, ×5.20
  8. GitHub8 vCPU · 32 GB31s, 18s to save, ×6.20
  9. AWS CodeBuild8 vCPU · 16 GBlarge34s, 1m 58s to save, ×6.80
  10. Ubicloud8 vCPU · 32 GBstandard55s, 53s to save, ×11
  11. boat8 vCPU · 16 GB1m 11s, 48s to save, 2 runs

Faded: provisional, under 3 runs, not ranked.

Fastest x64 8 vCPU restore: RunsOn m8a.2xlarge · tmpfs (5s), ahead of RunsOn m8a.2xlarge · EBS (6s).

arm646 providers · restore, lower is better
  1. RunsOn + Magic Cache8 vCPU · 32 GBtmpfsm9g.2xlarge5s, 7s to save, ×1.00
  2. RunsOn + Magic Cache8 vCPU · 32 GBlocal NVMem9gd.2xlarge8s, 9s to save, ×1.60
  3. Avrea8 vCPU · 32 GB11s, 12s to save, ×2.10
  4. RunsOn + Magic Cache8 vCPU · 32 GBEBS gp3m9g.2xlarge · EBS gp311s, 12s to save, ×2.20
  5. Blacksmith8 vCPU · 32 GB18s, 11s to save, ×3.60
  6. Warpbuild8 vCPU · 32 GB21s, 16s to save, ×4.20
  7. Namespace8 vCPU · 16 GB8x1633s, 18s to save, ×6.60
  8. Ubicloud8 vCPU · 32 GBstandard49s, 51s to save, ×9.80

Fastest arm64 8 vCPU restore: RunsOn m9g.2xlarge · tmpfs (5s), ahead of RunsOn m9gd.2xlarge · NVMe (8s).

Restore, job to job

Each provider's fastest machineEach provider's fastest 2 vCPU machineEach provider's fastest 4 vCPU machineEach provider's fastest 8 vCPU machine with two or more jobs (it may differ from the machine on the chart above). Every dot is one job.

x64% off each row's own p50
  1. AWS CodeBuild 8 vCPU · 16 GB large spread 8.8% (p10–p90) around a p50 of 34s, min 32s, max 35s, 7 samples
  2. Ubicloud 8 vCPU · 32 GB standard spread 22.2% (p10–p90) around a p50 of 55s, min 50s, max 1m 07s, 7 samples
  3. Avrea 4 vCPU · 16 GB spread 26% (p10–p90) around a p50 of 10s, min 9s, max 14s, 7 samples
  4. Namespace 8 vCPU · 16 GB 8x16 spread 32.9% (p10–p90) around a p50 of 17s, min 15s, max 26s, 7 samples
  5. boat 8 vCPU · 16 GB p50 1m 11s, min 56s, max 1m 26s, 2 samples, not ranked
  6. Blacksmith 2 vCPU · 8 GB spread 35.6% (p10–p90) around a p50 of 9s, min 9s, max 14s, 7 samples
  7. RunsOn 12 vCPU · 48 GB m8azn.3xlarge · EBS gp3 spread 41.7% (p10–p90) around a p50 of 6s, min 6s, max 10s, 6 samples
  8. Warpbuild 4 vCPU · 16 GB spread 41.9% (p10–p90) around a p50 of 21s, min 19s, max 29s, 7 samples
  9. GitHub 8 vCPU · 32 GB spread 100.6% (p10–p90) around a p50 of 31s, min 21s, max 1m 06s, 7 samples
one job p50 p10–p90 min–max
arm64% off each row's own p50
  1. Avrea 8 vCPU · 32 GB spread 14.3% (p10–p90) around a p50 of 11s, min 10s, max 12s, 6 samples
  2. RunsOn 8 vCPU · 32 GB m9g.2xlarge · EBS gp3 spread 22.7% (p10–p90) around a p50 of 11s, min 10s, max 14s, 6 samples
  3. Ubicloud 8 vCPU · 32 GB standard spread 22.9% (p10–p90) around a p50 of 49s, min 45s, max 1m 01s, 7 samples
  4. Namespace 4 vCPU · 16 GB Apple silicon 4x16 spread 32.7% (p10–p90) around a p50 of 22s, min 17s, max 26s, 7 samples
  5. GitHub 4 vCPU · 16 GB spread 42.8% (p10–p90) around a p50 of 36s, min 27s, max 49s, 7 samples
  6. Warpbuild 8 vCPU · 32 GB spread 45.7% (p10–p90) around a p50 of 21s, min 18s, max 39s, 7 samples
  7. Blacksmith 8 vCPU · 32 GB spread 107.8% (p10–p90) around a p50 of 18s, min 16s, max 36s, 7 samples
one job p50 p10–p90 min–max
x64% off each row's own p50
  1. AWS CodeBuild 2 vCPU · 3 GB small spread 4.6% (p10–p90) around a p50 of 52s, min 50s, max 53s, 7 samples
  2. RunsOn 2 vCPU · 16 GB r8a.large · EBS gp3 spread 8.8% (p10–p90) around a p50 of 17s, min 16s, max 19s, 6 samples
  3. GitHub 2 vCPU · 8 GB spread 27.2% (p10–p90) around a p50 of 1m 01s, min 58s, max 1m 20s, 7 samples
  4. Avrea 2 vCPU · 8 GB spread 27.7% (p10–p90) around a p50 of 13s, min 10s, max 16s, 7 samples
  5. Ubicloud 2 vCPU · 8 GB standard spread 29.2% (p10–p90) around a p50 of 59s, min 53s, max 1m 18s, 7 samples
  6. Blacksmith 2 vCPU · 8 GB spread 35.6% (p10–p90) around a p50 of 9s, min 9s, max 14s, 7 samples
  7. Namespace 2 vCPU · 8 GB 2x8 spread 41.9% (p10–p90) around a p50 of 21s, min 17s, max 30s, 7 samples
  8. Warpbuild 2 vCPU · 8 GB spread 59.3% (p10–p90) around a p50 of 27s, min 24s, max 49s, 7 samples
one job p50 p10–p90 min–max
arm64% off each row's own p50
  1. Avrea 2 vCPU · 8 GB spread 6.7% (p10–p90) around a p50 of 12s, min 12s, max 14s, 7 samples
  2. GitHub 2 vCPU · 8 GB spread 10.2% (p10–p90) around a p50 of 53s, min 49s, max 58s, 7 samples
  3. Ubicloud 2 vCPU · 8 GB standard spread 19.1% (p10–p90) around a p50 of 1m 04s, min 56s, max 1m 10s, 7 samples
  4. Warpbuild 2 vCPU · 8 GB spread 28.3% (p10–p90) around a p50 of 29s, min 26s, max 39s, 7 samples
  5. RunsOn 2 vCPU · 8 GB m9g.large · EBS gp3 spread 28.9% (p10–p90) around a p50 of 19s, min 18s, max 29s, 6 samples
  6. Namespace 2 vCPU · 8 GB Apple silicon 2x8 spread 46.2% (p10–p90) around a p50 of 26s, min 19s, max 34s, 7 samples
  7. Blacksmith 2 vCPU · 6 GB spread 171.3% (p10–p90) around a p50 of 23s, min 21s, max 1m 01s, 7 samples
one job p50 p10–p90 min–max
x64% off each row's own p50
  1. AWS CodeBuild 4 vCPU · 8 GB medium spread 8.6% (p10–p90) around a p50 of 35s, min 34s, max 37s, 7 samples
  2. RunsOn 4 vCPU · 16 GB m8azn.xlarge · EBS gp3 spread 9.4% (p10–p90) around a p50 of 16s, min 15s, max 18s, 6 samples
  3. Namespace 4 vCPU · 8 GB 4x8 spread 23.5% (p10–p90) around a p50 of 17s, min 15s, max 22s, 7 samples
  4. Avrea 4 vCPU · 16 GB spread 26% (p10–p90) around a p50 of 10s, min 9s, max 14s, 7 samples
  5. Blacksmith 4 vCPU · 16 GB spread 40% (p10–p90) around a p50 of 12s, min 8s, max 14s, 7 samples
  6. Warpbuild 4 vCPU · 16 GB spread 41.9% (p10–p90) around a p50 of 21s, min 19s, max 29s, 7 samples
  7. GitHub 4 vCPU · 16 GB spread 45.5% (p10–p90) around a p50 of 44s, min 26s, max 58s, 7 samples
  8. Ubicloud 4 vCPU · 16 GB premium spread 76.8% (p10–p90) around a p50 of 56s, min 46s, max 1m 53s, 7 samples
one job p50 p10–p90 min–max
arm64% off each row's own p50
  1. Warpbuild 4 vCPU · 16 GB spread 9.6% (p10–p90) around a p50 of 27s, min 26s, max 31s, 7 samples
  2. RunsOn 4 vCPU · 16 GB m9g.xlarge · EBS gp3 spread 12.5% (p10–p90) around a p50 of 16s, min 15s, max 18s, 6 samples
  3. Avrea 4 vCPU · 16 GB spread 29.1% (p10–p90) around a p50 of 11s, min 9s, max 14s, 7 samples
  4. Ubicloud 4 vCPU · 16 GB standard spread 30% (p10–p90) around a p50 of 58s, min 51s, max 1m 15s, 7 samples
  5. Namespace 4 vCPU · 16 GB Apple silicon 4x16 spread 32.7% (p10–p90) around a p50 of 22s, min 17s, max 26s, 7 samples
  6. GitHub 4 vCPU · 16 GB spread 42.8% (p10–p90) around a p50 of 36s, min 27s, max 49s, 7 samples
  7. Blacksmith 4 vCPU · 16 GB spread 73.3% (p10–p90) around a p50 of 21s, min 19s, max 35s, 7 samples
one job p50 p10–p90 min–max
x64% off each row's own p50
  1. AWS CodeBuild 8 vCPU · 16 GB large spread 8.8% (p10–p90) around a p50 of 34s, min 32s, max 35s, 7 samples
  2. RunsOn 8 vCPU · 32 GB m8a.2xlarge · EBS gp3 spread 13.6% (p10–p90) around a p50 of 11s, min 10s, max 13s, 6 samples
  3. Ubicloud 8 vCPU · 32 GB standard spread 22.2% (p10–p90) around a p50 of 55s, min 50s, max 1m 07s, 7 samples
  4. Warpbuild 8 vCPU · 32 GB spread 31.5% (p10–p90) around a p50 of 26s, min 22s, max 32s, 7 samples
  5. Avrea 8 vCPU · 32 GB spread 32.7% (p10–p90) around a p50 of 11s, min 9s, max 15s, 7 samples
  6. Namespace 8 vCPU · 16 GB 8x16 spread 32.9% (p10–p90) around a p50 of 17s, min 15s, max 26s, 7 samples
  7. boat 8 vCPU · 16 GB p50 1m 11s, min 56s, max 1m 26s, 2 samples, not ranked
  8. Blacksmith 8 vCPU · 32 GB spread 70% (p10–p90) around a p50 of 12s, min 7s, max 16s, 7 samples
  9. GitHub 8 vCPU · 32 GB spread 100.6% (p10–p90) around a p50 of 31s, min 21s, max 1m 06s, 7 samples
one job p50 p10–p90 min–max
arm64% off each row's own p50
  1. Avrea 8 vCPU · 32 GB spread 14.3% (p10–p90) around a p50 of 11s, min 10s, max 12s, 6 samples
  2. RunsOn 8 vCPU · 32 GB m9g.2xlarge · EBS gp3 spread 22.7% (p10–p90) around a p50 of 11s, min 10s, max 14s, 6 samples
  3. Ubicloud 8 vCPU · 32 GB standard spread 22.9% (p10–p90) around a p50 of 49s, min 45s, max 1m 01s, 7 samples
  4. Namespace 8 vCPU · 16 GB 8x16 spread 32.1% (p10–p90) around a p50 of 33s, min 31s, max 50s, 7 samples
  5. Warpbuild 8 vCPU · 32 GB spread 45.7% (p10–p90) around a p50 of 21s, min 18s, max 39s, 7 samples
  6. Blacksmith 8 vCPU · 32 GB spread 107.8% (p10–p90) around a p50 of 18s, min 16s, max 36s, 7 samples
one job p50 p10–p90 min–max

Every result

Every machine and action, failures included.

Show every result102 results · x64, arm64
x64 · runnerActionRestoreSave
RunsOnr8a.xlarge · tmpfs4 vCPU · 32 GBactions/cache5s7s
RunsOnm8a.2xlarge · tmpfs8 vCPU · 32 GBactions/cache5s7s
RunsOnr8a.2xlarge · tmpfs8 vCPU · 64 GBactions/cache5s7s
RunsOnm8a.2xlarge · gp3 1000 MiB/s8 vCPU · 32 GB tuned gp3actions/cache6s8s
RunsOnm8azn.3xlarge · EBS gp312 vCPU · 48 GBactions/cache6s9s
RunsOnr8a.large · tmpfs2 vCPU · 16 GBactions/cache7s8s
RunsOnm8azn.xlarge · gp3 1000 MiB/s4 vCPU · 16 GB tuned gp3actions/cache7s9s
RunsOni7i.2xlarge · local NVMe8 vCPU · 64 GBactions/cache8s8s
RunsOni7i.xlarge · local NVMe4 vCPU · 32 GBactions/cache9s8s
RunsOnm8a.2xlarge · EBS gp38 vCPU · 32 GBactions/cache11s13s
RunsOnm8id.2xlarge · local NVMe8 vCPU · 32 GBactions/cache11s10s
RunsOnm8i.2xlarge · EBS gp38 vCPU · 32 GBactions/cache12s12s
RunsOnm8i-flex.2xlarge · EBS gp38 vCPU · 32 GBactions/cache13s12s
RunsOnm8azn.xlarge · EBS gp34 vCPU · 16 GBactions/cache16s16s
RunsOnm8a.xlarge · EBS gp34 vCPU · 16 GBactions/cache17s16s
RunsOnc8a.2xlarge · EBS gp38 vCPU · 16 GBactions/cache17s16s
RunsOnr8a.large · EBS gp32 vCPU · 16 GBactions/cache17s16s
RunsOnm8i-flex.xlarge · EBS gp34 vCPU · 16 GBactions/cache17s14s
RunsOnm8i.xlarge · EBS gp34 vCPU · 16 GBactions/cache17s14s
RunsOnc8a.xlarge · EBS gp34 vCPU · 8 GBactions/cache18s16s
RunsOnm8azn.large · EBS gp32 vCPU · 8 GBactions/cache19s16s
RunsOnm8a.large · EBS gp32 vCPU · 8 GBactions/cache19s16s
RunsOni7i.large · local NVMe2 vCPU · 16 GBactions/cache19s14s
RunsOnm8i-flex.large · EBS gp32 vCPU · 8 GBactions/cache20s15s
RunsOnm8i.large · EBS gp32 vCPU · 8 GBactions/cache21s16s
RunsOnc8a.large · EBS gp32 vCPU · 4 GBactions/cache30s35s
RunsOnm8id.xlarge · local NVMe4 vCPU · 16 GBactions/cache30s24s
RunsOnt8i.medium · EBS gp32 vCPU · 4 GBactions/cache32s34s
RunsOnm8id.large · local NVMe2 vCPU · 8 GBactions/cache1m 08s45s
actions/cache: 1 of 6 jobs failed, latest failed in set up runneractions/cache: 1 of 6 jobs failed, latest saved in 1m 24s, restore failed after 26s
Blacksmith2 vCPU · 8 GBactions/cache9s8s
Blacksmith4 vCPU · 16 GBactions/cache12s6s
Blacksmith8 vCPU · 32 GBactions/cache12s6s
Avrea4 vCPU · 16 GBactions/cache10s19s
Avrea8 vCPU · 32 GBactions/cache11s19s
Avrea2 vCPU · 8 GBactions/cache13s19s
Namespace4x84 vCPU · 8 GBactions/cache17s13s
Namespace8x168 vCPU · 16 GBactions/cache17s13s
Namespace2x82 vCPU · 8 GBactions/cache21s13s
Namespace8x328 vCPU · 32 GBactions/cache21s13s
Namespace4x164 vCPU · 16 GBactions/cache23s13s
Warpbuild4 vCPU · 16 GBactions/cache21s15s
Warpbuild8 vCPU · 32 GBactions/cache26s13s
Warpbuild2 vCPU · 8 GBactions/cache27s17s
Warpbuild2 vCPU · 8 GBWarpBuilds/cache1m 07s1m 24s
Warpbuild8 vCPU · 32 GBWarpBuilds/cache1m 07s54s
Warpbuild4 vCPU · 16 GBWarpBuilds/cache1m 12s1m 28s
GitHub8 vCPU · 32 GBactions/cache31s18s
GitHub4 vCPU · 16 GBactions/cache44s35s
GitHub2 vCPU · 8 GBactions/cache1m 01s38s
AWS CodeBuildlarge8 vCPU · 16 GBactions/cache34s1m 58s
AWS CodeBuildmedium4 vCPU · 8 GBactions/cache35s2m 04s
AWS CodeBuildsmall2 vCPU · 3 GBactions/cache52s2m 17s
Ubicloudstandard8 vCPU · 32 GBactions/cache55s53s
Ubicloudpremium4 vCPU · 16 GBactions/cache56s1m 09s
Ubicloudpremium8 vCPU · 32 GBactions/cache56s50s
Ubicloudstandard2 vCPU · 8 GBactions/cache59s56s
Ubicloudstandard4 vCPU · 16 GBactions/cache1m 01s50s
Ubicloudpremium2 vCPU · 8 GBactions/cache1m 04s58s
boat8 vCPU · 16 GBactions/cache1m 11s48s
boat2 vCPU · 4 GBactions/cache1m 30s59s
boat4 vCPU · 8 GBactions/cachefailedsaved in 53s, restore failed after 10m 03s
actions/cache: 1 of 2 jobs failed, latest saved in 2m 09s, restore failed after 1m 05s
arm64 · runnerActionRestoreSave
RunsOnr9g.xlarge · tmpfs4 vCPU · 32 GBactions/cache5s7s
RunsOnm9g.2xlarge · tmpfs8 vCPU · 32 GBactions/cache5s7s
RunsOnm9g.xlarge · tmpfs4 vCPU · 16 GBactions/cache6s7s
RunsOnm9gd.2xlarge · local NVMe8 vCPU · 32 GBactions/cache8s9s
RunsOnr9g.large · tmpfs2 vCPU · 16 GBactions/cache9s9s
RunsOnm9g.2xlarge · EBS gp38 vCPU · 32 GBactions/cache11s12s
RunsOnm9g.xlarge · EBS gp34 vCPU · 16 GBactions/cache16s15s
RunsOnc8g.2xlarge · EBS gp38 vCPU · 16 GBactions/cache16s14s
RunsOnm9g.large · EBS gp32 vCPU · 8 GBactions/cache19s16s
RunsOnc8g.xlarge · EBS gp34 vCPU · 8 GBactions/cache19s14s
RunsOnm9gd.xlarge · local NVMe4 vCPU · 16 GBactions/cache23s20s
RunsOnc8g.large · EBS gp32 vCPU · 4 GBactions/cache29s30s
RunsOnm9gd.large · local NVMe2 vCPU · 8 GBactions/cache52s35s
Avrea8 vCPU · 32 GBactions/cache11s12s
Avrea4 vCPU · 16 GBactions/cache11s14s
Avrea2 vCPU · 8 GBactions/cache12s13s
actions/cache: 1 of 7 jobs failed, latest saved in 12s, failed in restore
Blacksmith8 vCPU · 32 GBactions/cache18s11s
Blacksmith4 vCPU · 16 GBactions/cache21s14s
Blacksmith2 vCPU · 6 GBactions/cache23s22s
Warpbuild8 vCPU · 32 GBactions/cache21s16s
Warpbuild4 vCPU · 16 GBactions/cache27s23s
Warpbuildxfast (Apple M4 Pro)6 vCPU · 14 GBactions/cache27s17s
Warpbuild2 vCPU · 8 GBactions/cache29s25s
Warpbuildxfast (Apple M4 Pro)12 vCPU · 28 GBactions/cache55s14s
Warpbuild8 vCPU · 32 GBWarpBuilds/cache1m 05s53s
Warpbuild4 vCPU · 16 GBWarpBuilds/cache1m 07s1m 30s
Warpbuildxfast (Apple M4 Pro)6 vCPU · 14 GBWarpBuilds/cache1m 10s57s
Warpbuildxfast (Apple M4 Pro)12 vCPU · 28 GBWarpBuilds/cache1m 13s57s
Warpbuild2 vCPU · 8 GBWarpBuilds/cache1m 17s1m 26s
NamespaceApple silicon 4x164 vCPU · 16 GBactions/cache22s16s
NamespaceApple silicon 2x82 vCPU · 8 GBactions/cache26s19s
Namespace8x168 vCPU · 16 GBactions/cache33s18s
Namespace8x328 vCPU · 32 GBactions/cache35s20s
Namespace4x164 vCPU · 16 GBactions/cache38s24s
Namespace4x84 vCPU · 8 GBactions/cache39s23s
Namespace2x82 vCPU · 8 GBactions/cache42s36s
GitHub4 vCPU · 16 GBactions/cache36s24s
GitHub2 vCPU · 8 GBactions/cache53s44s
Ubicloudstandard8 vCPU · 32 GBactions/cache49s51s
Ubicloudstandard4 vCPU · 16 GBactions/cache58s54s
Ubicloudstandard2 vCPU · 8 GBactions/cache1m 04s56s
  • tinted: fastest providers on the arch
  • bold: fastest result
  • actions/cache: GitHub's standard action
  • owner/cache: the provider's own action
Which machines ran it2 notes
  • RunsOn ran on r8a.2xlarge, m8a.2xlarge, r8a.xlarge, r8a.large, m8azn.3xlarge, i7i.2xlarge, m8azn.xlarge, i7i.xlarge, m8id.2xlarge, m8i.2xlarge, m8i-flex.2xlarge, m8i-flex.xlarge, m8i.xlarge, c8a.2xlarge, m8a.xlarge, i7i.large, c8a.xlarge, m8azn.large, m8a.large, m8i-flex.large, m8i.large, m8id.xlarge, c8a.large, t8i.medium and m8id.large (x64) and m9g.2xlarge, r9g.xlarge, m9g.xlarge, m9gd.2xlarge, r9g.large, c8g.2xlarge, c8g.xlarge, m9g.large, m9gd.xlarge, c8g.large and m9gd.large (arm64) with Magic Cache: the extras=s3-cache label and the runs-on/action step. Its other machines have no cache run.

Where actions/cache goes

4 providers send it to their own storage, 3 with no workflow change. Namespace and Warpbuild leave it on GitHub's cache service, as GitHub's own runners do. AWS CodeBuild and boat document no rerouting.

Provider actions/cache goes to Own cache Docs
GitHub GitHub's cache service (Azure Blob) – GitHub
RunsOn rerouted S3 in your AWS account, via a label and runs-on/action – Magic Cache
Avrea rerouted a local cache proxy – Avrea
AWS CodeBuild not rerouted – –
Blacksmith rerouted Blacksmith's colocated cache useblacksmith/cache (archived) Blacksmith
boat not rerouted – boat
Namespace not rerouted GitHub's cache service (Azure Blob) Cache Volumes (not a save and restore; not measured) Namespace
Ubicloud rerouted Ubicloud's cache, stored on Cloudflare R2 – Ubicloud
Warpbuild not rerouted GitHub's cache service (Azure Blob) WarpBuilds/cache, to WarpBuild's storage WarpBuild
  • GitHub GitHub's cache service (Azure Blob)

    own cache: none · docs

  • RunsOn rerouted S3 in your AWS account, via a label and runs-on/action

    own cache: none · docs

  • Avrea rerouted a local cache proxy

    own cache: none · docs

  • AWS CodeBuild not rerouted

    own cache: none

  • Blacksmith rerouted Blacksmith's colocated cache

    own cache: useblacksmith/cache (archived) · docs

  • boat not rerouted

    own cache: none · docs

  • Namespace not rerouted GitHub's cache service (Azure Blob)

    own cache: Cache Volumes (not a save and restore; not measured) · docs

  • Ubicloud rerouted Ubicloud's cache, stored on Cloudflare R2

    own cache: none · docs

  • Warpbuild not rerouted GitHub's cache service (Azure Blob)

    own cache: WarpBuilds/cache, to WarpBuild's storage · docs

  • Warpbuild: WarpBuild's docs call GitHub's own cache "the recommended approach and is the most seamless experience for users", and keep WarpBuilds/cache for advanced use and bring-your-own-cloud. This test measures both on every WarpBuild runner.

Caches not measured here

Each works differently from a save and restore, so this test leaves it out.

  • RunsOn: the ECR Docker layer cache (extras=ecr-cache) and EFS shared across jobs (extras=efs).
  • Blacksmith: sticky disks (a disk attached to the runner, not a save and restore) and its Docker layer cache.
  • Namespace: Cache Volumes (nscloud-cache-action), a disk attached to the runner rather than a save and restore.
  • Warpbuild: snapshot runners (a job starts from a saved disk image).

Transparent cache or a provider action

Keep actions/cache and pick a runner that makes it fast.

  • Warpbuild x64: WarpBuilds/cache 1m 07s–1m 12s restore, 54s–1m 28s save; actions/cache 21s–27s restore, 13s–17s save on the same 3 runners.
  • Warpbuild arm64: WarpBuilds/cache 1m 05s–1m 17s restore, 53s–1m 30s save; actions/cache 21s–55s restore, 14s–25s save on the same 5 runners.
  • A rerouted actions/cache speeds up every action built on the cache API at once: setup-node, setup-python, setup-go, Swatinem/rust-cache, Docker's type=gha cache. A provider action only speeds the steps you rewrite, on that provider's runners, and its fork lags upstream.

GitHub's cache limits

  • 10 GB per repository at no charge, entries evicted after 7 days unused; since November 2025, admins can pay for more. 4 GB took 44s to restore on GitHub's x64 runner.
  • RunsOn's Magic Cache keeps actions/cache and sends it to S3 in your AWS account: no quota, your retention, your IAM policies. It takes a label, extras=s3-cache, plus the runs-on/action step.

How it's measured

Methodology

One job per runner and action per run, 2 to 12 vCPU: save a 4 GB file, delete it, restore it, check its size. Times are the steps inside the job, medians across jobs; a failed job stays, at the step it failed.

Detailsworkload, consistency, earlier numbers
  • A 4 GB random file saved with a cache action, deleted, restored right away on the same runner, and checked to be complete: actions/cache (GitHub's cache service, or whatever the provider routes it to) and the provider's own cache action where the provider still recommends one (Blacksmith archived useblacksmith/cache: actions/cache is routed to its cache). No pause between save and restore, so a cache that isn't read-after-write consistent shows up as a failure. File generation is not timed. The size check is not counted.
  • Restore runs right after save. A cache that is not read-after-write consistent fails here; in a real job, the build silently starts cold.
  • The same machines as the all-runners table, where each runner's actions/cache restore sits next to its builds.
  • Earlier versions of this page came from a different harness on 2 vCPU runners; those numbers are not comparable and are gone.
  • Raw numbers: cache.json. Caching on RunsOn: docs. What to cache and how to key it: caching dependencies.