This section provides guidance regarding hyper-threading in VMware ESXi.

  • Hyper-threading technology (sometimes also called simultaneous multithreading, or SMT) allows a single physical processor core to behave like two logical processors, essentially allowing two independent threads to run simultaneously. Unlike having twice as many processor cores—that can roughly double performance—hyper-threading can provide anywhere from a slight to a significant increase in system performance by keeping the processor pipeline busier.

    Note:

    Some processor types are subject to a concurrent-context attack vector security vulnerability when hyper-threading is active. On VMware Cloud on AWS instances that use these processors ESXi is configured to use a special Side-Channel Aware Scheduler (SCAv1) to mitigate the vulnerability. When this scheduler is used, ESXi will only schedule processes on one thread for each core, potentially reducing CPU capacity for some workloads.

    VMC i3en.metal hosts use Cascade Lake processors; these are not subject to this security vulnerability and will thus utilize both hyper-threads on each core for optimum performance.

    VMC i3.metal hosts use Broadwell processors; these are subject to this security vulnerability and will thus utilize just one hyper-thread on each core, potentially limiting performance when a host is close to full CPU utilization.

  • When ESXi is running on a system with hyper-threading activated, it assigns adjacent CPU numbers to logical processors on the same core. Thus CPUs 0 and 1 are on the first core, CPUs 2 and 3 are on the second core, and so on.

    ESXi systems manage processor time intelligently to spread load smoothly across all physical cores in the system. If there is no work for a logical processor, it is put into a halted state that frees its execution resources and allows the virtual machine running on the other logical processor on the same core to use the full execution resources of the core.

  • Be careful when using CPU affinity on systems with hyper-threading. Because the two logical processors share most of the processor resources, pinning vCPUs, whether from different virtual machines or from a single SMP virtual machine, to both logical processors on one core (CPUs 0 and 1, for example) could cause poor performance.