How many Build Forge agents to run on a (compile) server - how often to update the manifest?
We have 1 (soon to be 2) Linux build servers. We have 3 different kinds of builds that currently use 3 different logins and each has their own agent configured with a different port and magic_login in the config file.
Overall we expect the volume of builds to increase and I am looking for the configuration with the best throughput.
Does it make sense to maintain 3 logins 3 agents etc, or will I get the same or better performance with 1 login for all 3 kind of builds and 1 agent using 1 port (or 1 login using more than 1 agent and port).
With the 2nd server coming online, I would like to have the BF selector select either server depending on current load, i.e. I need to run a manifest update regularly. Our builds run between 10 minutes and 2hrs.
Any advice on how often to refresh the manifest? Every 2 minutes? every 15 minutes?
Advice and opinions welcome!
2 answers
Comments
Since I want to start builds depending on how busy a server is, the selector needs to have up-to-date data, dynamic information. Selection Process is a very interesting read, but it doesn't go into how frequently to run the refresh.
So I was wondering whether anybody has practical experience and is willing to say "every x minutes has worked for me".
The other question I still have: is there a performance gain by using 3 agents vs. 1 agent?
Each agent has a max jobs. Using 1 agent would cause you to have to increase this number. The more jobs a single agent has the less performance you would get. Now, the threshold for this performance decrease is subject to what the agent or jobs are doing. Having 3 agents would allow you to spread the workload out and thus gain better performance. But if you have 5 jobs on one agent. It's not such a big deal, but for scalability there can be a benefit in performance to use three.
I don't agree with your statement of "If you use the collector/selector method. You don't need to refresh the manifest ever". See chapter 5.1 of Selection process. here is a quote: Some built-in variables, such as MEM_FREE, lose their efficacy if they are not updated frequently.
I plan to use CPU_LOAD (there are several options) and the same thing applies.