Would someone be able to explain how ESXi handles hyperthreading cores and numa in ELI10/15 manor.
Far as I understand hyperthreading on a Intel CPU, the CPU core will take two threads and attempt to run similar tasks within the CPU cycle increasing performance by reducing the overall execution time for the two process. This means you do not get twice the CPU core power but might get like 20% performance boost. Now ESXi marks the hyperthreading cores as a core, so for example my 16 CPU becomes a 32 core CPU. What I am unsure of is how ESXi handles assigned cores to VM to physical and hyperthreading cores?
For example if I have 2 VMs with 1 core each which both needed CPU time, would ESXi run which VM thread on a separate core or would it try running both thread on a single core with hyperthreading? What I trying to demine is if I should try limiting my VM virtual core allocation to the physical core count or the hyperthreading core count? (I do understand no all VMs would be executing at the same time and the ESXi cpu scheduler is designed to allow over provisioning of virtual cores).
The next area is numa, which is something I read a number of articles on and do not understand fully. What I understand is at the chipset/cpu/motherboard level on dual socket motherboards, memory sockets are connected to a single socket. This means when running a VM, you ideal want the memory allocated to it that is connected to the CPU running it threads (as it faster access). Assuming this is correct, this means ESXi when allocating RAM, will attempt to allocate RAM to a single socket RAM group and when executing a thread attempt to execute it on the CPU where memory is allocated.
What I having trouble understanding what virtual numa is and how best to optimize the numa configuration/verify its correct for each VM we have (ie a small 1core, 2gb ram server vs a 12 core, 64GB RAM server).
View Reddit by zh12a – View Source