My idea is that each user can spawn a VM, then use dist-cc to do compile using other VMs in the cloud.
Is such practice common in development environment? Would performance be much worse than just giving the users the physical machine access?
My idea is that each user can spawn a VM, then use dist-cc to do compile using other VMs in the cloud.
Is such practice common in development environment? Would performance be much worse than just giving the users the physical machine access?
Your win with VMs is in manageability and failover/HA.
You will take a performance hit by running something in a VM vs on real hardware. The hit may me small or big depending on the type of load you are generating and how the VMs are set up.
IF you are going for maximum compile farm speed, I would probably not virtualize. However, VMs can be set up to be pretty quick especially if you can get some fast disk to back them. Management overhead concerns can often win over the perf hit.
I suggest a hybrid approach: let the users stand up some number of VMs for their dev environment, and have the distcc farm be physical boxes. They are easy to set up as they only do one thing...you can have an image or use something like cfengine/Chef to set them up if they die on you. This will give the users their own space that they can use, and will give you max perf from the compiler boxes.