Every runner instance has 3 volumes: root, swap and temp.
The root volume contains all the software of the runner image. It is compressed to reduce EBS costs and read-only to guarantee consistency and make it tamper-proof.
The swap volume contains the swap space (default: 4
GiB) which is recreated on every boot.
The temp volume contains the temp space (default: 14
GiB) for the runner which is reformatted on every boot.
You can see details about the size of these volumes in the Set up runner section of the job output:
It’s often difficult to guess the exact size required for the temp volume. At the end of every job run, the Complete runner section of the output shows the usage of the temp volume:
If your temp volume was say 100
GiB and utilization was 38%,
you can safely slash your EBS cost in half by adjusting its size to 50
GiB for future runs with enough room to spare:
runs-on: sprinters:aws:ubuntu-latest:temp=50
By default all volumes are provisioned as gp3
with 3000
IOPS and 150
MiB/s throughput.
For I/O-intensive jobs, you can trade cost for performance by cranking up these values and scale all the way up
to 16000
IOPS and 1000
MiB/s throughput. The exact performance upper limits depend on the size of the volume.
You can also use the convenience value max
to automatically calculate the maximum number of IOPS or throughput MiB/s
for the specified volume size.
This can be specified in the label for each volume:
runs-on: sprinters:aws:ubuntu-latest:root=gp3/3000/750:swap=64/gp3/4000/max:temp=1024/gp3/max/350