I have a host server with two physical processors and each processor has 8 physical cores and 16 threads allocated to it to give me a total of 16 physical cores and 32 threads. I will be running the latest version of ESXi 6
I will be setting up multiple VMs on the above host and basically I want each VM to have 4 CPU cores (virtual?) assigned to it and I like to have the load equally shared between both physical CPUs. It has to be exactly 4 cores assigned to each VM due to SQL core licensing limit.
What is the recommended setting for CPU allocation to configure and achieve the above goal?
As a best practices, you can create 8 virtual machines and assign 4 core to each machine. There is no performance issue with this configuration.
This configuration is 1:1 (Physical:Virtual) core ratio.
There is no difference between assign core or socket to machine, when you have assigned 1 socket with 4 cores to a machine performance is same as when you have assigned 4 sockets with 1 core per socket!
Just it has impact on your licensing!
If licensing is based on socket, assigning more cores to a single socket is the best choice. if licensing is based on cores, assigning 1 core to each socket is the best choice.
Hi,
Would it not make more sense to allocate a maximum of 16 vCPU's between your machines. Hyperthreading my provide give the idea of more execution pipelines but the actual capacity of compute processors is 16 (2 x 😎 in the above configuration. Sure you can overallocate but for the best performance I would recommend you create a maximum of 4 virtual machines with 4 vCPUs each. This better matches the actual physical properties of the hardware platform.
Using more than this will result in higher CPU ready and IO wait.
I'd recommend a review of Mark's blog post here for some excellent advice in this regard.
When to Overcommit vCPU:pCPU for Monster VMs - VMware vSphere Blog
Cheers
" I would recommend you create a maximum of 4 virtual machines with 4 vCPUs each"
- How exactly should I configure the "Number of Virtual Sockets" and "Number of cores per socket" settings to achieve the above? Again, the SQL is based on core licensing and I should not have more than 4 cores allocated per VM.
Hi Purathal,
Best practice would be to always use virtual sockets. It is no longer recommended to use cores per socket. You would therefore have 4 sockets. Review the following blog for some background.
Does corespersocket Affect Performance? - VMware vSphere Blog
As always you should assign according to your physical platforms NUMA topology.
Cheers