TechCompare LogoTechCompare

GitHub Actions runners with the best disk performance

Blacksmith Linux x64 leads the measured results at 1,331.6 composite MiB/s. 26 of 26 configurations have a score. This ranks the imported tests, not full workflow runtime.

Checkouts, dependency trees, compiler outputs, and temporary files can keep a runner busy after its CPU work is done. This ranking combines sequential and random disk measurements from our independent tests into one fixed score. The fastest scored configurations appear first across Linux, Windows, macOS, and the tested architectures. The summary and table are rebuilt from the shared results whenever the site is built.

By TechCompare · Updated

Scored configurations
26 / 26
Every tested platform included
Ranking
Highest score first
Fixed benchmark formula

Current leaders

  1. #1

    Blacksmith Linux x64

    AMD EPYC (model hidden)

    1,331.6 composite MiB/s

    $0.002/vCPU/min

  2. #2

    Avrea Linux arm64

    Apple M5 Max

    1,239.3 composite MiB/s

    $0.006/vCPU/min

  3. #3

    Avrea macOS arm64

    Apple M5 Max

    1,022 composite MiB/s

    $0.01/vCPU/min

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

GitHub Actions runner CPU models, single thread CPU scores, disk, cache, and internet scores, and value per USD compute cost. Missing tests have no score.
RunnerDiskCost/vCPU/minUSDMax vCPU
Blacksmith Linux x64

AMD EPYC (model hidden)

1,331.6
0.00232
Avrea Linux arm64

Apple M5 Max

1,239.3
0.00616
Avrea macOS arm64

Apple M5 Max

1,022
0.0116
Namespace macOS arm64

Apple M4 Pro

948.7
0.01516
Avrea Linux x64

AMD EPYC 4585PX 16-Core

864.5
0.00232
Blacksmith Windows x64

AMD EPYC 4565P 16-Core

708.9
0.00432
GitHub macOS arm64

Apple M2 Pro

656.7
0.02075
StarSling Linux x64

AMD EPYC (model hidden)

559.1
0.00264
RunJob Linux x64

AMD EPYC 7502 32-Core

492.9
0.001348
Avrea Windows x64

AMD EPYC 4585PX 16-Core

335.3
0.00416
Blacksmith Linux arm64

ARM64 (model undisclosed)

320.8
0.001332
Namespace Linux x64

AMD EPYC (model hidden)

297.3
0.001564
Blacksmith macOS arm64

Apple M4 Pro

262.4
0.013312
Ubicloud Linux x64

AMD Ryzen 9 7950X3D 16-Core

243.7
0.00130
Namespace Linux arm64

AmpereOne family (SKU undisclosed)

197.8
0.001532
GitHub macOS x64

Intel Core i7-8700B

91.9
0.015512
GitHub Linux x86

AMD EPYC 7763 64-Core

81.2
0.00396
Ubicloud Linux arm64

Ampere Altra Q80-30

80.6
0.000630
GitHub Windows x64

AMD EPYC 7763 64-Core

76.7
0.00596
GitHub Linux arm64

Microsoft Cobalt 100

73.1
0.002564
GitHub Windows x86

AMD EPYC 7763 64-Core

68.6
0.00596
GitHub Linux x64

AMD EPYC 9V74 80-Core

67
0.00396
GitHub Windows arm64

Cobalt 100

35
0.00564
Latchkey Linux x64

AMD EPYC 7R13

28.3
0.001316
BuildPulse Linux x64

AMD EPYC 9R45

28.2
0.00264
BuildPulse Linux arm64

AWS Graviton (gen undisclosed)

20.1
0.001364

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 tool

From four measurements to one disk score

The score is the geometric mean of sequential read MiB/s, sequential write MiB/s, random read throughput, and random write throughput. Random operations transfer 4 KiB each, so their IOPS are divided by 256 to convert them to MiB/s. The result is labeled composite MiB/s. It is a summary of four workloads, not a promise that one file copies at exactly that rate. No dataset maximum or 0-to-100 scale is used.

Verified disk samples and score coverage

Disk scores use medians from fully verified samples with all four throughput components. The updated BuildPulse ARM result is included using its three completed samples, with five attempted and requested. The full tool retains those counts. Other incomplete results require acceptance before receiving a score. Unscored configurations remain after the scored runners, and a missing score is not a zero. A later complete test makes a configuration eligible automatically.

Read bandwidth and latency in context

This suite measures controlled file workloads on the tested guest. It does not establish sustained performance for every file size, filesystem, concurrency level, or free-space condition. The reported CPU, image, and exact runner tag help identify the configuration. The maximum vCPU column describes the published runner family, not a disk scaling test. If cost matters more than the highest score, compare the separate disk value ranking.

Measurement context

Sequential bandwidth and random IOPS describe different access patterns. A large archive is not the same workload as thousands of small files. The geometric mean gives equal weight to the four test components after they are expressed in the same unit. A high combined score can still include a weaker individual measurement, which is why the full tool keeps every read and write figure available.

Verdict

Use the combined disk ranking to find candidates, then inspect the component closest to your workload. For file-heavy jobs, measure the real checkout, extraction, build, and cleanup stages. Cache and internet rankings answer separate questions about transferring data onto the runner.

More runner benchmark scenarios

Frequently asked questions

Which runner currently leads for disk performance?
Blacksmith Linux x64 leads the measured results at 1,331.6 composite MiB/s. 26 of 26 configurations have a score. This ranks the imported tests, not full workflow runtime.
Do these runner rankings update automatically?
Yes. The rankings, leaders, counts, table, and structured data are calculated from the shared benchmark dataset, researched pricing, and saved exchange rate during each site build. The prebuild refreshes the ECB exchange rate and keeps the dated saved rate if the fetch fails. Importing new results or updating prices changes the next build. They do not fetch live measurements or provider prices while you browse.
Are all operating systems and architectures included?
Yes. These pages include every imported Linux, Windows, and macOS configuration, including x64, ARM64, and 32-bit x86 binaries. The full tool lets you narrow the platform or provider. Operating system, compiler, and affinity differences remain part of each measured result.
Does a missing result mean a runner scored zero?
No. Missing or unusable measurements stay unscored and appear after scored results. Value also requires a positive quoted cost per vCPU per minute. A missing test does not establish that a runner is slow.