GitHub Actions runners with the best cache performance
Blacksmith macOS arm64 leads the measured results at 262.9 composite MiB/s. 26 of 26 configurations have a score. This ranks the imported tests, not full workflow runtime.
A cache needs to save quickly as well as restore quickly. This ranking combines both transfer directions on each runner's best tested cache or artifact backend. Each score uses one complete backend result, so a fast save from one service is not mixed with a fast restore from another. The leader summary is calculated from the current measurements across every tested platform.
By TechCompare · Updated
Current leaders
Results imported 2026-10-10. Pricing checked 2026-10-10. Higher is better. All operating systems and architectures are included. Prices and value use USD. RunJob's EUR rate is converted at €1 = $1.1206 (ECB, 2026-10-09).
Calculator
Ranked runner results
| RunnerRunner | CacheCache score | Cost/vCPU/minCost/vCPU/minUSD | Max vCPUMax runner vCPU |
|---|---|---|---|
| Blacksmith macOS arm64 Apple M4 Pro | 262.9 | 0.0133 | 12 |
| Avrea macOS arm64 Apple M5 Max | 251.6 | 0.01 | 16 |
| Avrea Linux arm64 Apple M5 Max | 220.8 | 0.006 | 16 |
| Latchkey Linux x64 AMD EPYC 7R13 | 168.2 | 0.0013 | 16 |
| Blacksmith Linux x64 AMD EPYC (model hidden) | 154.4 | 0.002 | 32 |
| GitHub macOS arm64 Apple M2 Pro | 145.8 | 0.0207 | 5 |
| Avrea Linux x64 AMD EPYC 4585PX 16-Core | 103.8 | 0.002 | 32 |
| StarSling Linux x64 AMD EPYC (model hidden) | 101 | 0.002 | 64 |
| GitHub Linux x64 AMD EPYC 9V74 80-Core | 100.5 | 0.003 | 96 |
| GitHub Linux x86 AMD EPYC 7763 64-Core | 96.6 | 0.003 | 96 |
| Blacksmith Linux arm64 ARM64 (model undisclosed) | 88.2 | 0.0013 | 32 |
| GitHub Linux arm64 Microsoft Cobalt 100 | 82.1 | 0.0025 | 64 |
| BuildPulse Linux x64 AMD EPYC 9R45 | 58 | 0.002 | 64 |
| RunJob Linux x64 AMD EPYC 7502 32-Core | 53.5 | 0.0013 | 48 |
| BuildPulse Linux arm64 AWS Graviton (gen undisclosed) | 52.2 | 0.0013 | 64 |
| Ubicloud Linux arm64 Ampere Altra Q80-30 | 50.8 | 0.0006 | 30 |
| Namespace Linux x64 AMD EPYC (model hidden) | 49.6 | 0.0015 | 64 |
| Ubicloud Linux x64 AMD Ryzen 9 7950X3D 16-Core | 48.5 | 0.001 | 30 |
| Namespace macOS arm64 Apple M4 Pro | 39.6 | 0.015 | 16 |
| GitHub macOS x64 Intel Core i7-8700B | 37.2 | 0.0155 | 12 |
| Namespace Linux arm64 AmpereOne family (SKU undisclosed) | 34.7 | 0.0015 | 32 |
| Blacksmith Windows x64 AMD EPYC 4565P 16-Core | 24.8 | 0.004 | 32 |
| GitHub Windows x64 AMD EPYC 7763 64-Core | 18.9 | 0.005 | 96 |
| Avrea Windows x64 AMD EPYC 4585PX 16-Core | 17.6 | 0.004 | 16 |
| GitHub Windows x86 AMD EPYC 7763 64-Core | 17.5 | 0.005 | 96 |
| GitHub Windows arm64 Cobalt 100 | 13.8 | 0.005 | 64 |
Single thread CPU: CoreMark iterations/s. Disk and cache: composite MiB/s. Internet: composite Mbps. Value: score ÷ USD cost/vCPU/min. K means thousand, M means million. Higher is better. Cache uses each runner's best tested cache or artifact backend. Limits: maximum runner vCPU. Prices and value use USD. RunJob's EUR rate is converted at €1 = $1.1206 (ECB, 2026-10-09).
Open the full GitHub Actions runner benchmark toolHow the cache score chooses a backend
For every eligible backend, save speed is payload MiB divided by save seconds and restore speed is payload MiB divided by restore seconds. Their geometric mean is the combined cache score in composite MiB/s. The default chooses the highest combined score for that runner. Both directions must come from the same backend. GitHub Actions cache, provider archive cache, and artifact service modes remain available separately in the full tool.
Verification comes before ranking
A backend must have three verified save and restore pairs with positive, finite payload size and durations. A missing or incomplete service does not receive a score. A runner can still qualify through another tested backend that meets those checks. No untested provider feature is assigned a speed from a marketing claim. Adding a backend result can change which service represents a runner, while leaving its existing measurements intact.
Why cache speed is not cache effectiveness
This test measures the transfer path under a controlled payload. Cache keys, retention, invalidation, compression, extraction, and dependency changes also affect a real workflow. An artifact upload may serve a different purpose from a reusable dependency archive. Inspect the winning backend and ensure its action is suitable for your job. If the compute rate matters, the cache value page divides this same chosen backend score by the quoted per-vCPU minute rate.
Measurement context
Cache tests use a 512 MiB random payload and restore it in a fresh runner job. That creates a reproducible transfer workload and includes the tested action's overhead. It differs from a warm local directory or a persistent volume cache hit. Archive cache services and artifact services appear together when they complete the same verified save and restore workload, with the service name retained on hover and in the full details.
Verdict
Choose a fast backend that fits your workflow's reuse pattern, then test your actual dependency cache. A large archive of many small files can compress and extract differently from this payload. A high score does not establish the best cache hit rate or the fastest package installation.
More runner benchmark scenarios
Frequently asked questions
Which runner currently leads for cache performance?
Do these runner rankings update automatically?
Are all operating systems and architectures included?
Does a missing result mean a runner scored zero?
Related tools
Data Transfer Calculator
Estimate transfer times for files over USB, WiFi, Ethernet, and more.
Use tool ➜Memory and Storage Throughput Visualizer
Visualize the massive speed difference between CPU cache, RAM, and storage.
Use tool ➜RAM Latency Calculator
Convert DDR3/DDR4/DDR5 timings (CL, tRCD, tRP, tRAS) into true latency in nanoseconds.
Use tool ➜