Each node is running 3 VMs (terminal servers) or total 9 VMs for the entire Hyper-V cluster. The CPU utilization of each VM is averaging 95-100% and many users have complained of slowness in performance. However, the CPU utilization of each parent host is only 50% for each host. In other words, all the VMs are only utilizing half of the 4 x 6 CPU cores per host, even though each VM is nearly saturated.
This is the “math”:
1) Total no. of nodes in cluster = 3
2) No. of logical processors (LP) per node = 4 x 6 CPU cores = 24
3) Ratio of virtual CPU (vCPU) to LP (for best performance) = 1:1
4) Max no. of vCPU per VM = 4
5) No. of terminal server VMs per node = 3
6) Current CPU resource utilized by all VMs per node = 4 x 3 = 12 LPs
Based on above, we calculated that our current CPU utilized by Hyper-V is just 50% per node.
Unused utilization = max no. of LP per node – utilized LP per node = 24 - 12 = 12 (or 50%). When we checked the resource monitor on each parent host, it is indeed the number. A further check with Microsoft support confirms this understanding.
Hence, my recommendation to that someone is to
1) assign more VMs per host, so that more CPU resource can be utilized; or
2) upgrade the Hyper-V hosts to Windows Server 2012 where up-to 64 vCPU can be assigned to each VM