Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

jobs/build: cut image building parallelism in half #519

Merged
merged 1 commit into from
Apr 27, 2022

Conversation

jlebon
Copy link
Member

@jlebon jlebon commented Apr 27, 2022

We're seeing issues where the pipeline sometimes hits EAGAIN on fork:

coreos/fedora-coreos-tracker#1186

This may have started happening more frequently after the recent
addition of VirtualBox.

Anyway, it's kinda silly to build that many images in parallel. There's
diminishing returns and eventually a performance cost. So let's do it in
two rounds instead. (Ideally instead it'd be a kind of task pool, but
let's not try to implement that in Groovy.)

Copy link
Member

@cgwalters cgwalters left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks sane, but I think what we really want is to have cosa buildextend -j N or so...

@dustymabe
Copy link
Member

Hmm. Let's be a bit smarter here and put the ones that are long running together. Let me look at the run history and make a suggestion.

@jlebon
Copy link
Member Author

jlebon commented Apr 27, 2022

Hmm. Let's be a bit smarter here and put the ones that are long running together. Let me look at the run history and make a suggestion.

I'm not sure it's worth trying to optimize this further vs e.g. pooling as suggested. The step itself only takes ~5 minutes which is tiny in comparison to a full pipeline run (~1h30m). It'd make adding new platforms trickier too.

@dustymabe
Copy link
Member

I'm not sure it's worth trying to optimize this further vs e.g. pooling as suggested. The step itself only takes ~5 minutes which is tiny in comparison to a full pipeline run (~1h30m). It'd make adding new platforms trickier too.

Yeah OK. I vaguely remembered the DigitalOcean one taking more than 10 minutes at one point in the past and one other one being long too and was going to try to put them in the same parallel bucket. Looking at the most recent runs it seems like the times are really too bad.

jobs/build.Jenkinsfile Outdated Show resolved Hide resolved
We're seeing issues where the pipeline sometimes hits EAGAIN on `fork`:

coreos/fedora-coreos-tracker#1186

This may have started happening more frequently after the recent
addition of VirtualBox.

Anyway, it's kinda silly to build that many images in parallel. There's
diminishing returns and eventually a performance cost. So let's do it in
two rounds instead. (Ideally instead it'd be a kind of task pool, but
let's not try to implement that in Groovy.)
Copy link
Member

@dustymabe dustymabe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@dustymabe
Copy link
Member

Thanks for working on this.

@jlebon jlebon merged commit 24c5265 into coreos:main Apr 27, 2022
@jlebon jlebon deleted the pr/unparallelize-imgs branch April 27, 2022 20:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants