Hyper-threading is a neat feature in the latest INTEL NEHALEM series. It allows each physical core to run 2 threads simultaneously which means 4 physical cores and 8 logical cores. Having double the logical processors does not boost the performance by 100% but it just makes processors more efficient and in some cases help to achieve a gain of 20%. But it still plays a great role when deployed in Vsphere Virtual Infrastructure.
VirtulaTOD has an article on hyper-threading here.
To enable hyperthreading in vsphere first it must be enabled from the BIOS of the system on which you have the ESXi installed (Not all processors have Hyperthreading Support).
When enabled from the BIOS the hyperthreading for the esxi can be enabled from ESXi host -> Configuration -> Processors. The page shown in next screenshot shows the summary status of the processor and the status of hyperthreading.
If the hyper-threading is not enabled on the ESXi host click on the properties and a window like this appear.
NOTE:- A restart of system is required after hyper-threading is enabled. Its better to enable hyperthreading when a new ESXi host is setup.
Once the hyperthreading is enabled, it is used by all the VMs. The hyperthreading option can be set on an individual basis for a particular vm as well. Right click the VM -> Resources -> Advanced CPU
In the Advanced CPU Section there are options for
Hyperthreading core sharing mode.
There are three options :-
1.) Any – Setting to any mode allows VMs to share virtual core from other VMs as well. This is set by default
2.) None – Machine get exclusive access to the core the other thread who wants to access the core has to wait.
3.) Internal – VMs are allowed to share cores from the same physical cores.
Read this VMWARE KB article here. This is same for esxi5.
Another setting is the CPU affinity. CPU affinity is like hardcoding the cpu core to the machine. The best practice is to avoid CPU affinity and let hypervisor to choose the cores. If you want to choose the cores yourself try choosing as much cores as possible. The values are entered as 0,2,3 which means core 0,2,3 are only available for this virtual machine. If none of them are free then machines produces a CPU READY delay. This Setting is not available when the machines are part of a DRS cluster.