Wednesday, 13 January 2016

Skype for Business, SQL Server, and VMware

If you have deployed a virtualized Lync Server 2013 or Skype for Business infrastructure, and have followed the best practices, your Lync or Skype VMs will no doubt have multiple CPU cores.

If you have done this on VMware, and you let the VMware provisioning wizard automatically assign the CPUs, you may have a problem.

By default VMware will assign multiple CPU cores as multiple virtual CPU sockets, each with a single virtual core. This means that in an eight core server you have eight sockets. This fine for Lync or Skype, but represents a problem for the SQL Express installation that every front end server has, or indeed the SQL Server Standard installations you might be using for your back-end databases.

SQL Server Express is limited to "the lesser of 1 socket or 4 cores", which means that in the default VMware configuration SQL Express gets 1 core (because 1 socket has 1 core).

SQL Server Standard Edition is limited to "the lesser of 4 sockets or 16 cores", which means that if you have more than 4 virtual sockets, but only 1 virtual core per socket, SQL gets only 4 cores.

In order to give SQL Express access to more CPU resources you need to alter the virtual CPU allocation to put have fewer virtual sockets, with multiple virtual cores per socket.

To look for this issue in my VMware-based Skype for Business Environment I put together a brief script. The purpose is to report out the CPU configuration of all the servers which host a local management store replica (these servers have a local SQL Express instance), and all the back-end database servers.

Note that the script will fail to connect to Edge servers, and those should be checked manually.