Improve GitHub Actions Performance: Upgrade CPU
Published on August 1, 2025 | Written by Andreas
Speed matters! Waiting for code analysis, builds, and tests slows down developers. That’s why I’ve done some real-world performance tests of workflows orchestrated by GitHub Actions. Turns out, reducing waiting times by about 30 % is possible by switching from GitHub-hosted runners to self-hosted runners managed by HyperEnv on AWS. Read on to to learn more.
About the Benchmark
SoftEther VPN is a cross-platform multi-protocol VPN solution. Their job .github/workflows/linux.yml
installs dependencies, compiles the code, builds packages, and executes tests. For the benchmark, I’ve cloned the repository SoftEtherVPN and changed its visibility from public to private. To avoid outliers, each benchmark test was repeated 10 times.
The default machine for a Linux job of a private repository comes with 2 vCPU and 7 GB of memory when using GitHub-hosted runners. Therefore, I’ve been using comparable EC2 instance types with 2 vCPUs and 8 GB memory: m5.large
, m6i.large
, m7i.large
, and m7a.large
.
Benchmark Results
Here are the results of the benchmark. Compared to the GitHub-hosted runner a self-hosted runner executed on an m7a.large
instance managed by HyperEnv completes the job 29% faster.
Runner | Duration | Time Savings |
---|---|---|
GitHub-hosted runner | 406 sec | - |
HyperEnv (m6i.large) | 388 sec | 5% |
HyperEnv (m7i.large) | 366 sec | 10% |
HyperEnv (m7a.large) | 288 sec | 29% |
So what’s the reason for the difference? That’s a tricky question. The runners differ in terms of CPU, memory and I/O capabilities. Based on my analysis of the monitoring data, the CPU is the bottleneck in this benchmark.
Runner | CPU |
---|---|
GitHub-hosted runner | AMD EPYC 7763 |
HyperEnv (m6i.large) | Intel(R) Xeon(R) Platinum 8375C |
HyperEnv (m7i.large) | Intel(R) Xeon(R) Platinum 8488C |
HyperEnv (m7a.large) | AMD EPYC 9R14 |
The m7a.large
instance managed by HyperEnv clearly offers the most advanced CPU with the highest computing power. This explains the performance advantage of 29%.
Release HyperEnv 2.17.0
With the release 2.17.0
of HyperEnv (see release notes) we added support for the following EC2 instance types.
m6i.large
: 2 vCPU, 8 GB memorym6i.xlarge
: 4 vCPU, 16 GB memorym6i.2xlarge
: 8 vCPU, 32 GB memorym6i.4xlarge
: 16 vCPU, 64 GB memorym6i.8xlarge
: 32 vCPU, 128 GB memorym6i.12xlarge
: 48 vCPU, 192 GB memorym6i.16xlarge
: 64 vCPU, 256 GB memorym6i.24xlarge
: 96 vCPU, 384 GB memorym6i.32xlarge
: 128 vCPU, 512 GB memorym7i.large
: 2 vCPU, 8 GB memorym7i.xlarge
: 4 vCPU, 16 GB memorym7i.2xlarge
: 8 vCPU, 32 GB memorym7i.4xlarge
: 16 vCPU, 64 GB memorym7i.8xlarge
: 32 vCPU, 128 GB memorym7i.12xlarge
: 48 vCPU, 192 GB memorym7i.16xlarge
: 64 vCPU, 256 GB memorym7i.24xlarge
: 96 vCPU, 384 GB memorym7i.48xlarge
: 192 vCPU, 768 GB memorym7-iflex.large
: 2 vCPU, 8 GB memorym7-iflex.xlarge
: 4 vCPU, 16 GB memorym7-iflex.2xlarge
: 8 vCPU, 32 GB memorym7-iflex.4xlarge
: 16 vCPU, 64 GB memorym7-iflex.8xlarge
: 32 vCPU, 128 GB memorym7-iflex.12xlarge
: 48 vCPU, 192 GB memorym7-iflex.16xlarge
: 64 vCPU, 256 GB memorym7a.medium
: 1 vCPU, 4 GB memorym7a.large
: 2 vCPU, 8 GB memorym7a.xlarge
: 4 vCPU, 16 GB memorym7a.2xlarge
: 8 vCPU, 32 GB memorym7a.4xlarge
: 16 vCPU, 64 GB memorym7a.8xlarge
: 32 vCPU, 128 GB memorym7a.12xlarge
: 48 vCPU, 192 GB memorym7a.16xlarge
: 64 vCPU, 256 GB memorym7a.24xlarge
: 96 vCPU, 384 GB memorym7a.32xlarge
: 128 vCPU, 512 GB memorym7a.48xlarge
: 192 vCPU, 768 GB memory
In case you are running an older version of HyperEnv, follow our update guide to be able to benefit from increased performance.
Accelerate with HyperEnv
Speed up your GitHub Actions jobs by about 30% as well. Follow our setup guide to get started. Afterward, all you need is to modify your GitHub Actions workflows, as shown in the following listing.
Warning: The
m7a
instance family is supported in the following AWS regions only:ap-northeast-1
,ap-southeast-2
,eu-central-1
,eu-north-1
,eu-south-2
,eu-west-1
,us-east-1
,us-east-2
, andus-west-2
.
jobs:
demo:
runs-on: [hyperenv, hyperenv-config:instance=m7a.large]
steps:
- uses: actions/checkout@v4
Try HyperEnv today!