AFAIK, a multi-core per socket configuration (e.g., 1 socket, 8 cores) typically offers better performance than multiple sockets with one core each (e.g., 8 sockets, 1 core per socket). There are several reasons for it:
- NUMA efficiency: SQL Server is NUMA-aware. A lower socket count (with more cores per socket) usually means fewer NUMA nodes, reducing cross-node memory access latency and improving scalability.
- VMware CPU scheduling: vSphere has to co-schedule vCPUs of the same socket simultaneously. Fewer virtual sockets (with multiple cores per socket) reduce the complexity of vCPU scheduling and can reduce ready times (when vCPUs are ready to run but not scheduled).
- Licensing simplification: SQL Server Enterprise Edition is licensed per core, not per socket, so there's no licensing benefit to using more sockets with fewer cores.
- Hypervisor optimization: Hypervisors like VMware ESXi are optimized for multi-core socket configurations. Configuring many sockets with single cores increases CPU overhead and reduces cache locality benefits.
Multiple Sockets with one core each tend to create more NUMA nodes. This increases memory access latency, vCPU scheduling constraints, and virtual hardware overhead. It also offers no benefit in SQL Server performance or licensing.
Regarding documentation, try https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/solutions/sql-server-on-vmware-best-practices-guide.pdf and https://learn.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-vm-size
If the above response helps answer your question, remember to "Accept Answer" so that others in the community facing similar issues can easily find the solution. Your contribution is highly appreciated.
hth
Marcin