Overview

When slaves are set up as virtual machines and share the same underlying physical resources, Jenkins may think that there is more capacity available for builds than there really is.

For example, in such an environment, Jenkins might think that there are 10 slaves with 2 executors each, but in reality the physical machine cannot execute 20 concurrent builds without thrashing. The number is usually much lower; say, 4.[1] This is particularly the case when you have a single-system hypervisor, such as VMWare ESXi, VirtualBox, etc.

Every time a new build is to start, Jenkins schedules it to one of the available virtual slaves. However, in this particular case the underlying physical infrastructure cannot support all the virtual slaves running their respective builds concurrently.

Jenkins Enterprise allows you to define an actual limit to the number of concurrent builds that can be run on the system. One can group slaves together, then assign a limit that specifies how many concurrent builds can happen on all the slaves that belong to that group. In this way, Jenkins Enterprise avoids overloading your hypervisor host machine.[2]

The benefit of using this plugin is that builds run much faster as the underlying physical machines are not overloaded anymore.

The Label Throttle plugin was introduced in Nectar 11.04.



[1] This number of course depends on the machine’s specifications and configuration.

[2] This is very handy in combination with the Jenkins Enterprise VMWare Autoscaling plugin.