[Buildbot-devel] RFC: Assigning builds when load is high

Jared Grubb jared.grubb at gmail.com
Wed May 6 20:15:33 UTC 2015

Many months ago, I made a change in buildbot to enhance the way that buildslaves and builds get assigned. In particular, we added a “canStartBuild” functor that lets you adjust how these mappings happen.

There was a design decision I made that I’m starting to regret (and have disabled in my buildbot).

 - The BRD attempts to pick buildslaves that can aquire builder locks. If no buildslave qualify (ie high load), we have two choices:
    1. pick a random buildslave that would work otherwise
    2. give up and wait until a buildslave can acquire the locks needed

Currently, the BRD does #1, however, I’ve seen this cause problems when quick builds get stuck behind long builds … and so I’ll see my set of buildslaves go idle except for one, which will have a few builds on it, all stuck behind one long build. If we did #2, then the short builds would get assigned immediately as the next buildslave goes idle.

I am thinking that #2 should be the default behavior — or at least be opt-in configurable.

Note this applies to both eight and nine and is a fairly trivial patch either way.

Anyone have any thoughts or comments?


More information about the devel mailing list