I measure a host load (Double Dog Dare) by the number of vCPU's , Memory Allocation, and disk usage. In a large cluster you can't see it as a vm or per host ratio . There are too many variables for consideration.
We measure vCPU assigned per Core and Memory per VM as a primary measure. If all VM guests were the same size you would get a conistent number for every host; but VM's are not the same.
Here is our concept: The VMU (VM Unit) -- Our Current VMU is 1vCPU, 1GB Ram, 100Mb nic, 20GB disk
We provision production servers 2:1 vCPU per core and Non-Prod 5:1 vCPU per core. On a 4 Socket / 4 Core with 64 GB of RAM I would expect that we could load 32 VMU's (Production) or 64 VMU's (Non-Prod) in a raw calculation.
We do however plan for a cluster failover and consider only 90% of the RAM avaliable for actual VM usage. Therefore, we would only plan for 57 VMU's on that size host for a Non-Prod configuration.
Every VM Created gets allocated a certain number of VMU's. This creates a level playing field for the different size VM's and the Hosts they are capable of running on. As stated above a single VMU would be 1,1,20.
2 VMU - 2vCPU -or- 2GB Ram -or- 40GB disk on a same size server as above would yield 16 VMU's of production status.
4VMU - 4vCPU -or- 4GB RAM -or- 80 GB Disk on a same size server as above would yield 8 VMU's of production status.
Now we take the VM Request, calculate the VMU and can allocate the VM load accordingly to the right sized farm.
Its not perfect but keeps some sense in the madness. And allows you to control the 'VM's are Cheap' comment by saying, " Sure 1 VMU is cheap, but you just asked for 24 VMU's in that project"