I found that for a modern Windows 7 VM, to be used as a standard desktop for a user, and without using GPU acceleration, you should provide 3-4 cores per user.
However, the actual formual for this is as follows based on a live deployment I have worked on.
Initially, three servers were deployed with three cores allocated to each VM. The servers had a total of 36 physical cores between them. Using the formula from a VMWare artical
- "(Virtual Machines per Server) = ((Cores Available on Server) / (vCPUs Needed per Virtual Machine)) * (Overcommit Ratio of vCPUs per pCPU)"
I was able to work out the following. Breaking down ratios of 6,5,and 4 to 1 and how many users we could expect for each.
36 cores / 3 servers (previous) 72=(36/3)*6 60=(36/3)*5 48=(36/3)*4
There was a problem. Not all of our test users were using the system, so we did not have good measurements. When all users were migrated we ran into resource contention. The user count was around 70 users and growing. Obviously a 6:1 ratio with our current core count was not sufficient. So we installed a fourth server and was able to squeeze them all in.
48 cores / 4 servers (Current) 96=(48/3)*6 80=(48/3)*5 64=(48/3)*4
Then after more growth and 102 VMs running, a chunk of them dedicated to service accounts that don't do much, we are experiencing resource contention again. This time we will increase our density and core count to accommodate 150 user.
80 Cores / 2 servers (Future) 160=(80/3)*6 133=(80/3)*5 106=(80/3)*4
However, I would like to bump this down to a 5:1 ratio to better manage resource spikes. These are not servers with predictable usage patterns.