GitHub Actions CPU performance

This guide compares CPU performance and queue times across GitHub Actions runners - including official GitHub runners, self-hosted solutions, and third-party providers. Real-world benchmarks show how each option performs to help select the optimal runner.
Providers included in the benchmark
Note: I’d love to benchmark Depot (hosted on AWS), but they forbid benchmarking their platform 🤷.
GitHub Actions CPU speed and queuing times
Last updated:
Benchmarks are performed using the Passmark benchmarking tool ↗, using the CPU Single Threaded metric. The table displays the last 30 days of data, before the last updated date.
Key metrics such as the processor model, single-thread CPU speed, queue time, pricing, and the underlying infrastructure provider are compared. The CPU single-threaded rating is a crucial metric as it is the most significant factor (unless your job is massively parallel) in accelerating any of your workflows.
x64 runners
CPU Performance (p50) vs. Queue Time (p50QueueTime) - x64
Queue times (X-axis) closer to < 10s and higher CPU scores (Y-axis) are better (not considering price, reliability, privacy, etc.).
Detailed results
Provider |
CPU speed
(p50 | p90) |
Queue time (s)
(p50 | p90 | max) | Processor | Infra / ISP | Samples |
---|---|---|---|---|---|
Namespace (2x cheaper, SaaS)
| 3910 | 4054 | 14 | 17 | AMD EPYC (x86_64) | Namespacelabs (might vary) | 28 |
Ubicloud (10x cheaper, SaaS)
| 3832 | 3969 | 28 | 44 | AMD Ryzen 9 7950X3D 16-Core Processor (x86_64) | Hetzner Online | 24 |
Blacksmith (2x cheaper, SaaS)
| 3832 | 3985 | 19 | 22 | AMD EPYC (x86_64) | Hetzner Online | 28 |
Warpbuild (2x cheaper, SaaS)
| 3770 | 3871 | 33 | 42 | AMD Ryzen 9 7950X3D 16-Core Processor (x86_64) | Hetzner Online | 15 |
Buildjet (2x cheaper, SaaS)
| 3305 | 3465 | 21 | 24 | AMD Ryzen 9 5950X 16-Core Processor (x86_64) | Hetzner Online | 22 |
RunsOn (10x cheaper - self-hosted)
| 3072 | 3143 | 30 | 36 | Intel Xeon Platinum 8559C (x86_64) | Amazon.com | 31 |
RunsOn (10x cheaper - self-hosted)
| 3072 | 3077 | 26 | 57 | Intel Xeon Gold 6455B (x86_64) | Amazon.com | 31 |
Cirrus ($150/runner, SaaS)
| 2998 | 3171 | 21 | 38 | Intel Xeon Gold 5412U (x86_64) | Hetzner Online GmbH | 27 |
RunsOn (10x cheaper - self-hosted)
| 2876 | 2880 | 25 | 56 | AMD EPYC 9R14 (x86_64) | Amazon.com | 62 |
RunsOn (10x cheaper - self-hosted)
| 2852 | 2945 | 26 | 31 | Intel Xeon Platinum 8488C (x86_64) | Amazon.com | 31 |
GitHub
| 2370 | 2376 | 8 | 9 | AMD EPYC 7763 64-Core Processor (x86_64) (custom) | Microsoft Azure | 27 |
GitHub
| 2301 | 2305 | 9 | 12 | AMD EPYC 7763 64-Core Processor (x86_64) | Microsoft Azure | 28 |
AWS CodeBuild
| 2102 | 2144 | 28 | 31 | Intel Xeon Platinum 8275CL CPU @ 3.00GHz (x86_64) | Amazon.com | 65 |
Depot (2x cheaper, SaaS)
| N/A | N/A | N/A | Amazon.com | 0 |
arm64 runners
CPU Performance (p50) vs. Queue Time (p50QueueTime) - arm64
Queue times (X-axis) closer to < 10s and higher CPU scores (Y-axis) are better (not considering price, reliability, privacy, etc.).
Detailed results
Provider |
CPU speed
(p50 | p90) |
Queue time (s)
(p50 | p90 | max) | Processor | Infra / ISP | Samples |
---|---|---|---|---|---|
Warpbuild (2x cheaper, SaaS)
| 1936 | 1938 | 19 | 31 | Neoverse-V2 (aarch64) | Amazon.com | 17 |
RunsOn (10x cheaper - self-hosted)
| 1932 | 1934 | 25 | 40 | Neoverse-V2 (aarch64) | Amazon.com | 60 |
RunsOn (10x cheaper - self-hosted)
| 1542 | 1547 | 26 | 44 | (aarch64) | Amazon.com | 30 |
Cirrus ($150/runner, SaaS)
| 1325 | 1326 | 50 | 102 | Neoverse-N1 (aarch64) | Hetzner Online GmbH | 29 |
Buildjet (2x cheaper, SaaS)
| 1323 | 1325 | 34 | 37 | Neoverse-N1 (aarch64) | Hetzner Online | 29 |
GitHub
| 1316 | 1319 | 6 | 9 | Neoverse-N1 (aarch64) | Microsoft Azure | 11 |
Blacksmith (2x cheaper, SaaS)
| 1313 | 1320 | 21 | 24 | Neoverse-N1 (aarch64) | Hetzner Online | 29 |
Ubicloud (10x cheaper, SaaS)
| 1308 | 1314 | 36 | 44 | Neoverse-N1 (aarch64) | Hetzner Online | 29 |
Namespace (2x cheaper, SaaS)
| 1261 | 1271 | 16 | 17 | (aarch64) | Deft Hosting (might vary) | 29 |
Depot (2x cheaper, SaaS)
| N/A | N/A | N/A | Amazon.com | 0 |
FAQ
Who has the fastest x64 runners?
Namespace, Blacksmith, Ubicloud, Warpbuild, followed by Buildjet (though Buildjet’s and Ubicloud’s CPU models can vary).
Who has the fastest arm64 runners?
RunsOn and Warpbuild, since it uses latest AWS Graviton4 processors. Hetzner-based providers use older ARM CPUs.
Who's the cheapest?
RunsOn and Ubicloud offer the best pricing, around 10x cheaper than GitHub.
Observations
Performance
- Namespace, Blacksmith, Warpbuild, and some of Ubicloud’s runners fleet lead x64 performance with latest AMD CPUs. AWS-based providers are not as fast due to AWS being slow to adopt newer CPUs for x64 architecture. Hopefully some good news on that front in 2025?
- RunsOn and Warpbuild lead arm64 performance with Graviton4. Latest GitHub Actions Cobalt CPUs (only for some runs, and mostly for private repositories) not far behind.
- GitHub uses older CPUs, especially for x64. Their arm64 is better but limited availability.
- AWS CodeBuild instances are slower than GitHub and more expensive.
Reliability & Scaling
- GitHub queue times are very good for standard runners. Used to be minutes for larger ones, but GitHub has improved their queue system.
- AWS provides better scalability than Hetzner-based providers.
- Hetzner providers (Buildjet, Ubicloud etc) require manual requests for higher concurrency, sometimes with extra fees.
- Buildjet’s and Ubicloud’s variable CPU models impact reproducibility.
Cost
- GitHub is the most expensive option (except for public repositories).
- RunsOn and Ubicloud are ~10x cheaper than GitHub.
- AWS CodeBuild pricing isn’t competitive.
Privacy & Security
- GitHub Actions runners are managed by GitHub, and run on Azure. If your CI runners require access to private resources hosted elsewhere, you might need to expose some credentials as GitHub Actions secrets (ideally setup OIDC connections).
- RunsOn is fully self-hosted on your AWS infrastructure (with a dedicated GitHub App generated at runtime). You can also assign custom IAM policies to your runners so that you don’t need to pass any credentials around if you need access to other private AWS resources. Networking stack can also be fully customized according to your security preferences.
- AWS CodeBuild is a managed service from AWS. You need to register with a shared GitHub App. Other than that, everything stays on your AWS account.
- Namespace, Blacksmith, Cirrus, Warpbuild, Ubicloud, Depot are SaaS providers. You need to register with a shared GitHub App, and they manage the control plane entirely. Some allow you to self-host the runners in your own Cloud provider account, but the runner registration process (including the token generation, which gives access to the repository contents) are never under your control.
Missing from benchmark:
- Detailed concurrency/scaling tests. Important for high-volume CI/CD (thousands of jobs/day)
Note: this analysis is valid as of January 2025. Things change quickly in this space, so make sure you do your own research as well.