Skip to content

Summit: Add a way to prioritise builders #90

@ermo

Description

@ermo

The context is that, actually, most recipes are not that heavy to build and are done in less a few minutes. However, some packages are known in advance to be really heavy to build.

Hence, it might be useful if we have a list of known "heavy" builds and be able to pair that with a known list of "heavy" avalanche builders, thus excluding the scheduling of heavy builds onto anything but heavy duty builders.

At the same time, if a build is not considered "heavy" (which could be captured as either a recipe property or a recipes tree property with a list of known heavy builds -- the latter being an option even without versioned repos landed), it can then be scheduled on any builder, which in turn might enable us to deliberately set up "small" builders for increased recipe build throughput when the task graph allows for it, whilst still having a few heavy builders available for the known chonkers.

So if we could then prioritise builders so the smaller builders are always tried first, then that would perhaps leave the heavy builders free for when chonkers need to be scheduled more often than not.

Example builder split:

  • 7700 8c/16t w/64 GiB RAM = small builder (priority 1, does not allow builds of heavy tasks)
  • 5900X split into 2x 6c/12t builders w/32 GiB RAM each (both priority 2, do not allow builds of heavy tasks)
  • 2x5950X 16c/32t (both priority 3, allows builds of heavy tasks)
  • 1x5950X 16c/32t (priority 4, allows builds of heavy tasks, intermittently available)

This would give us 3 small builders and 3 heavy builders in total.

The idea that the builders would always be tried in priority order and, for builders with the same priority, their configured description would be used to choose a builder in lexicographically ascending order (so aosbuild1 would come before aosbuild2 if both had the same priority).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions