So as a followup to My SQL Server 2012 licensing blog post I wanted to follow up on what exactly is a core license good for.
When working in the physical world it’s pretty easy to figure out. However many cores there are on the physical chip is how many cores you need licenses for. If you’ve got one of the new 12 core Intel CPUs with Hyper Threading enabled you need 12 core licenses for that CPU.
When we get into the world of VMs that is where things get a little more iffy. We are no longer concerned about physical cores on the socket but now we are licensing based on the number of vCPUs which have been presented to the guest OS. If you have the same 12 core CPU that I just talked about, but you assign all 24 logical processors as vCPUs to the guest you have to license for 24 cores for that VM. For those of your doing the math, yes this means that you have to double license the cores when working in a VM.
While I’m sure that this isn’t the best news that you’ve ever heard, don’t forget that if you are running really large VMs like this you have a few options to help yourself out. First of all don’t forget that to run a 24 core SQL Server you have to be running Enterprise Edition (Standard edition only supports 16 cores in SQL Server 2012), so if you already have an Enterprise Agreement and Software Assurance you can probably license at the host level instead of at the guest level and save yourself some licensing money.
If you plan on running larger VMs running SQL Server you may also want to look at disabling Hyper Threading. You will probably be running the physical CPUs hot anyway and Hyper Threading may just get in your way anyway. This also reduces the number of cores that you can assign to the VM, which reduces your license costs for that VM.