Skip to content Skip to footer
Disk I/O bottlenecks in GitHub Actions by jacobwg

Disk I/O bottlenecks in GitHub Actions by jacobwg

9 Comments

  • Post Author
    ValdikSS
    Posted March 28, 2025 at 3:57 pm

    `apt` installation could be easily sped-up with `eatmydata`: `dpkg` calls `fsync()` on all the unpacked files, which is very slow on HDDs, and `eatmydata` hacks it out.

  • Post Author
    suryao
    Posted March 28, 2025 at 4:08 pm

    TLDR: disk is often the bottleneck in builds. Use 'fio' to get performance of the disk.

    If you want to truly speed up builds by optimizing disk performance, there are no shortcuts to physically attaching NVMe storage with high throughput and high IOPS to your compute directly.

    That's what we do at WarpBuild[0] and we outperform Depot runners handily. This is because we do not use network attached disks which come with relatively higher latency. Our runners are also coupled with faster processors.

    I love the Depot content team though, it does a lot of heavy lifting.

    [0] https://www.warpbuild.com

  • Post Author
    miohtama
    Posted March 28, 2025 at 4:36 pm

    If you can afford, upgrade your CI runners on GitHub to paid offering. Highly recommend, less drinking coffee, more instant unit test results. Pay as you go.

  • Post Author
    jacobwg
    Posted March 28, 2025 at 4:48 pm

    A list of fun things we've done for CI runners to improve CI:

    – Configured a block-level in-memory disk accelerator / cache (fs operations at the speed of RAM!)

    – Benchmarked EC2 instance types (m7a is the best x86 today, m8g is the best arm64)

    – "Warming" the root EBS volume by accessing a set of priority blocks before the job starts to give the job full disk performance [0]

    – Launching each runner instance in a public subnet with a public IP – the runner gets full throughput from AWS to the public internet, and IP-based rate limits rarely apply (Docker Hub)

    – Configuring Docker with containerd/estargz support

    – Just generally turning kernel options and unit files off that aren't needed

    [0] https://docs.aws.amazon.com/ebs/latest/userguide/ebs-initial…

  • Post Author
    larusso
    Posted March 28, 2025 at 5:27 pm

    So I had to read to the end to realize it’s a kinda infomercial. Ok fair enough. Didn’t know what depot was though.

  • Post Author
    crmd
    Posted March 28, 2025 at 5:33 pm

    This is exactly the kind of content marketing I want to see. The IO bottleneck data and the fio scripts are useful to all. Then at the end a link to their product which I’d never heard of, in case you’re dealing with the issue at hand.

  • Post Author
    nodesocket
    Posted March 28, 2025 at 5:41 pm

    I just migrated multiple ARM64 GitHub action Docker builds from my self hosted runner (Raspberry Pi in my homeland) to Blacksmith.io and I’m really impressed with the performance so far. Only downside is no Docker layer and image cache like I had on my self hosted runner, but can’t complain on the free tier.

  • Post Author
    kayson
    Posted March 28, 2025 at 8:55 pm

    Bummer there's no free tier. I've been bashing my head against an intermittent CI failure problem on Github runners for probably a couple years now. I think it's related to the networking stack in their runner image and the fact that I'm using docker in docker to unit test a docker firewall. While I do appreciate that someone at Github did actually look at my issue, they totally missed the point. https://github.com/actions/runner-images/issues/11786

    Are there any reasonable alternatives for a really tiny FOSS project?

  • Post Author
    crohr
    Posted March 28, 2025 at 9:17 pm

    I'm maintaining a benchmark of various GitHub Actions providers regarding I/O speed [1]. Depot is not present because my account was blocked but would love to compare! The disk accelerator looks like a nice feature.

    [1]: https://runs-on.com/benchmarks/github-actions-disk-performan…

Leave a comment

In the Shadows of Innovation”

© 2025 HackTech.info. All Rights Reserved.

Sign Up to Our Newsletter

Be the first to know the latest updates

Whoops, you're not connected to Mailchimp. You need to enter a valid Mailchimp API key.