Label Throttle Plugin

Challenge: 

When slaves are really virtual machines (VMs), you may have multiple slaves that actually share the same physical resources underneath. Whenever multiple jobs are fired off, they may execute on different VMs, but the VMs are on the same underlying machine. This results in slower builds due to thrashing of the VMs.

Solution: 

The Label Throttle plugin, available with Jenkins Enterprise by CloudBees, allows you to define a limit for your builds. You can group slaves together, then assign a limit that specifies how many concurrent builds can happen on the slaves that belong to that group. In this way, Jenkins Enterprise by CloudBees avoids overloading your hypervisor host machine.

Thus, when you have a single-system hypervisor, such as VMware ESXi or VirtualBox, Jenkins might think that you have 10 slaves with two executors each, but in reality 20 concurrent builds cannot really be executed. You can only run up to, say, four. This plugin will allow you to define four (in this case) as a limit for your builds, ensuring that the VMs do not thrash. The end result: faster builds, overall.

This plugin is very complementary in combination with the VMware Auto-Scaling plugin.