Hello GoCd folks,
We have 4 Agents, 12 resources, and about 12 pipelines currently setup. During the last 3 days of iteration, we have even more pipelines running (because our release branch is also being built in parallel with master branch).
1) How does GO decide, which agent to allocate a job to.. especially when the resource needed by that job, can be serviced by two agents? Does GO wait for an agent to be free before it assigns a job to it, or does Go predict when an agent might get free, and therefore assign a job to it, even before it finishes? Can you tell me which code file contains the algorithm to decide which agent to pick?
2) Are there any pointers on what to consider when assigning resources to an agent. Because multiple pipelines usually have a mix of fast and slow jobs, and some stages depend on previous stages to complete (and hence a job can become a bottleneck, even if multiple agents are available)? A blog pointer maybe on this by someone?
3) Is there some way that GO can tell us that a particular agent is not being "optimally" used, versus another agent is always "loaded", versus a particular "job" is being starved most of the time, or a particular resource on an agent is not being requested for, and hence might be unnecessary, etc?
4) Why is the "duration" field value in Go-Agent Job Run History table different from "duration" value when you click on that particular job run. One seems to be (Scheduled to End), and other seems to be (Started to Finish). It seems weird that both are called "Duration"?
We are on Go Server v13.3.
Thank you for your help : )
Regards
Gurpreet