Hyper Threading and Virtual Machines?

Solution 1:

In general, I leave HyperThreading ON for VM host servers (VMWare ESXi, KVM, HyperV, etc.). This applies to Intel Nehalem and newer CPUs (5500-series and greater). Additional threads available for scheduling multiple VMs.

You may also want to reevaluate the sizing of your guest systems. Typically, it's best to start small on the CPU allocation with virtual machines. Since you're talking about a terminal server, I'd actually move that to 2 virtual CPUs rather than 4 vCPUs. It's easier for the hypervisor to schedule CPU time for VMs with smaller core counts. RAM is still critical, though, so make sure to make plenty available.

See: http://omtconcepts.com/wp/?p=14

Solution 2:

It really depends. If, like you're saying, you're going to "max out", which I suppose means overallocate CPU (assign more virtual CPU cores than you have available, or exactly as many as you have available), then HT should definitely be on.

If you are not overallocating, then it is usually better to test under your specific loads - sometimes HT can actually hurt performance.


Solution 3:

There are a lot of variables that affect VM performance. HT is just one of othe variables but it also depends on how the VM are configured.

One of the variables that affect HT depends on the type of Hypervisor being used.

If you are using lightweight virtual machines like VZ, VServer, etc, then it is quite obvious that HT would bring suitable benefits as these VM aren't actually tightly isolated and are more like running multi-threaded software.

If you are using heavyweight virtual machines like KVM, Xen HVM, etc, then it is possible that HT will interfere with things e.g. when a VM is allocated two CPUs but ends up using one HT each on different cores.

So, the best thing to do is still to test your setup to see what suits you.