This directory contains code for a custom buildbot scheduler used by Skia's buildbots.
The built-in buildbot schedulers trigger builds at each commit in the repo. In most cases, if the bots lag behind a little, multiple commits are batched into a single build. This is good for preventing the bots from falling behind during the day, but the result is that the blamelists for performance and correctness results potentially include a lot of commits, which makes regressions difficult to track down.
Additionally, the bots have large swaths of idle time during the night and on weekends, and are occasionally idle during the day. They could be using this time to run additional builds which separate the commits which were batched together in previous builds.
This build scheduler takes a different approach. It considers the commits within a time period and generates scores for commit/buildbot pairs (aka “build candidates”) which represent how much value would be obtained by running a build on each buildbot at each commit. The build candidates are stored in a sort of priority queue, sorted by their score.
Whenever a given builder is idle, the scheduler takes the highest-scoring build candidate for that builder from the queue and schedules it using the BuildBucket API.