In determining which build agent is least busy, continuum will based it by the number returned by getBuildSizeOfAgent().
getBuildSizeOfAgent() will return the total number of projects in build queue and current build plus the total number of project group in prepare build queue and currently preparing build.
I have 2 build agents and Agent A is currently preparing build a multi-module project (with 20 submodules) e.g. Continuum while Agent B is currently building a single project.
When I get the build size of each agent, it will both return a number of 1. So if I tried to build a third project, it could be distributed to Agent A when clearly it should build in Agent B because there's a higher chance that it will finish earlier because it's only a single project.