Have enough RAM on the slave that you can run your jobs plus Jenkins + some for overhead.
(e.g. 1GB of Jenkins slave, + #executors * ( 2GB for Maven +2GB for unit tests in forked VM) + OS overhead)
Although this amount is mostly an overkill setting it too close to the threshold will slow your jobs down due to paging at best, or mean you get intermittent failures due to OOM at worst – (memory is generally cheaper that human time taken to investigate issues!) (our maven jobs can be very memory hungry so your figures will vary) (Note I recommend a single executor per slave)
The master depends more on how many jobs / reports per jobs / job history you have etc – we use 10GB (but not tomcat).
If you’re in the UK and there is any spaces left I will cover some things like this next week at the Jenkins User Event.
/James
Thanks...I unfortunately can't be in the UK for the event.
So if the amount of RAM is fixed (4GB), what is a good rule of thumb for determining what to allocate to the slave process, how many executors it can reasonably support, etc?
I realize there are a lot of other variables but any starting point and things to consider or factor in that may not be obvious could help.
Or is it just a matter or monitoring and tuning?
I would never advise more than one executor per slave :-o
At some point there will be unit test failures in a project as it has badly written unit tests that blindly assume they can use port 12345 (and it will be in use for a different job - and then fight each other). And it will be the CI systems fault and come at a time that the most awkward for you (the project is trying to release, and you are about to leave for the weekend!)
-- :: Johnathan Crawford :: Senior Software Developer Sulake | Porkkalankatu 1 | 00180 Helsinki, Finland http://www.sulake.com | tel +358 10 656 7000 | fax +358 10 656 7010