Wednesday, 24 October 2012

Now that we have the ability to assign a large number of vCPUs to a VM we need to keep in mind that more vCPUs may not actually mean better performance.

The main thing to keep in mind is that _all_ threads associated with a virtual machine must be processed at the same time. So, 12 vCPUs assigned to that VM? Then 12 threads must run through the pipeline simultaneously to be processed by the CPU or CPUs.

That is why an 8 Core single socket setup will only show a maximum number of 8 vCPUs that can be assigned to one VM (assume Hyper-Threading off).

So, okay, we have a dual socket server with a pair of 8 core CPUs that can process a total of 16 threads simultaneously.

If we go ahead and assign 10 vCPUs to that VM we may assume that we would get more processing out of that database driven application.

The catch is the simultaneous 10 threads now need to be split between CPU 0 and CPU 1 in order to be processed together.

That means that CPU cycles will be lost while the pipeline logic juggles all of the other threads running through the CPU pipeline to get those 10 done. Part of that process will be to toss the extra two threads across the QuickPath Interconnect (Intel diagram) between the CPUs.

Essentially all of this extra juggling costs CPU cycles.

If we take the same high load VM and assign 8 vCPUs, the maximum number of threads that can be processed on one physical CPU, and compare its performance to the VM with 10 vCPUs on the same physical server we can pretty much guarantee that the VM with 8 vCPUs will outperform the one with 10 vCPUs.

In the end we need to have a pretty good idea of just how a virtualization stack will behave on the various platforms we use to deploy Hyper-V standalone, Hyper-V Failover Clusters, or now Hyper-V with Live-Migration enabled.

NEW BLOG LOCATION

SUBSCRIBE

ABOUT

Our primary IT vertical is accounting firms since 1998. From accounting app support through to highly available solutions for accounting firms we've got it covered. I'm a Microsoft MVP since 2009. First on SBS and then starting in 2014 on Cluster.