I already looked at this thread: Hyper-V and Hyper-threading: On or off?, but the only answer is Windows specific....
I am building a VM server (using Proxmox VE if that makes a difference) and was wondering about how hyper threading can affect virtual machines...
Specifically, if I max out the number of virtual machines, would hyper threading help, or hurt performance?
Also, the largest virtual machines will be a Terminal Server with ~30 clients (4 Cores/8 GB of RAM), and a file server if that helps.
Update: The server is a Dell R410 with a 1TB RAID 10, 32 GB of RAM and Dual Intel Xeon E5530 (I am not sure about the exact model, but it was an E55xx with 2+ Ghz)
Update: Most VMs will be on KVM.
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
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.
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.