We have an ESXi Host, running a single VM that we need to optimize the CPU performance. This VM runs a CPU-intensive application, and the faster the CPU - the quicker the data can be processed.
I've read several articles & forum postings on physical CPU sockets, cores, vCPUs, hyperthreaded, best practices, NUMA, right-sizing etc. and I'm still slightly confused.
What would be the optimal CPU configuration for a single VM on this Host?
ESXi 5.5 U3
2x CPU Sockets Xeon E5-2670 2.6 GHz
8 Cores Each
32 Logical Processors
128 GB Ram
VM currently configured for 32 GB Ram (can bump up to 128 since no other VMs)
VM currently configured for 4 CPU Sockets, 4 Cores per Socket
From everything I've read, it seems that configuring the VM to have 2 Sockets and 8 Cores per socket would be optimal to take advantage of NUMA. Is that correct?
What about Hyperthreading enabled vs disabled in this scenario?
Firstly, understand that there's no blanket "best" configuration that anyone can offer. It highly depends on what that workload is and how it's been developed to use CPU. Just like everything else, determine a KPI and develop a test plan to determine if the changes you're making are helping or hurting performance. It's really just guesswork otherwise.
That said, it's generally preferable to create a "wide" VM and to use all sockets with cores equal to one. This will allow ESXi to place into proper NUMA nodes itself.
determine a KPI and develop a test plan to determine if the changes you're making are helping or hurting performance.
If this were in a test environment, I would do that but this VM is already in production.
it's generally preferable to create a "wide" VM and to use all sockets with cores equal to one.
Physical cores or logical processors?
What about hyper-threading enabled vs disabled in this case?