Let's say I have an ESXi 5.1 host which has 2 quad-core processors with Hyper Threading, for a total of 16 logical processors. If I have a very CPU-hungry VM that I want to give 8 vCPUs to, would it be better to span across NUMA nodes, or apply the numa.vcpu.preferHT=TRUE configuration to force the VM to stay on a single NUMA node and use Hyper Threading instead?
I'm interested in both obtaining optimal performance for this VM while ensuring that the other (much less CPU intensive) VMs running on this host don't get CPU starved or block this VM from accessing the CPU.
You have to understand that "hyperthreaded core" is not true core. It can do only certain things. It is difficult to assess this performance, but I'd say in common tasks you can not get more than ~20% performance from ht-core (compared to the real core). Sometimes more, othertimes none at all.
So if you are running cpu-intensive tasks (like video-encoding), it is better to let your VM (with 8 vCPU) to use both pCPUs (4 true cores of each one), even if you loose a few CPU-cycles due to NUMA.
If your monster VM must have more RAM than your NUMA node has, it's better to span..
Actually, this VM will be doing video encoding - CPU usage is infinitely huge, but RAM usage is almost negligible.
You have to understand that "hyperthreaded core" is not true core. It can do only certain things. It is difficult to assess this performance, but I'd say in common tasks you can not get more than ~20% performance from ht-core (compared to the real core). Sometimes more, othertimes none at all.
So if you are running cpu-intensive tasks (like video-encoding), it is better to let your VM (with 8 vCPU) to use both pCPUs (4 true cores of each one), even if you loose a few CPU-cycles due to NUMA.
JerryG makes a valid point, also the CPU scheduler has preference to use physical core over HT, it is also smart enough to balance you workload. If you are concerned about performance then I would recommend ratio 2:1 (vCPU-2-Core) else maintain 1:1
Thanks for the help, everyone. Given that even in the worst case scenario I'll only need to turn off the VM and adjust some configuration settings, I guess I'll just take a leap of faith and hope that ESXi will do the right thing.