Thanks for your article, this confirms our current setup for us. However, with one major exception.
We have configured multiple vCPU with just 1 core per socket (after we had a lot of latency issues on the SQL servers).
The theory being:
If you configure two or more cores per socket, the guest can only get CPU time if that number of cores come available to the guest. This means more of a scheduling effort for the host. Especially if there are more guests doing the same.
We have reconfigured all our guests databases, build hosts, etc, to have more vCPUs with just 1 cores per socket. All complaining by devs and users stopped.
And yes, this is all dependant on the licensing model fro your SQL server. But it works for us 🙂