Sql-server – SQL Server 2014 Minimum Memory configuration – VMware

sql serversql server 2014vmware

I am taking over a SQL Server 2014 environment which has been built and configured by a consultant.

They have set a minimum value for memory which I usually set to 0. According to the consultant and VMware documentation the minimum memory should be set in SQL Server when it is running on a virtual machine. I always set the Maximum leaving memory available for the OS, but do not set the minimum memory.

Any suggestions/thoughts are greatly appreciated!

Best Answer

There is no clear best practice on this. It all depends on your VMWare configuration and failover requirements.

The idea behind this is the fact that it should be preventing SQL Server from releasing memory when the VMWare balloon driver thinks it needs this.

There are several possible problems with that. One of them being the fact that the balloon driver may be requesting memory because a physical host is failing and the VM needs to be moved elsewhere (or other VM's need to be moved to the host the SQL VM resides on).

In case of disaster, what do you prefer? A slow SQL Server or no SQL Server?

The balloon driver will just request memory from other processes on the server if SQL doesn't release it (SSRS, OS, whatever) and if the OS starts paging SQL will suffer anyway.

If you have this configuration because of you are overcommitting memory it might be a better option to reserve memory for the server in VMWare to make sure SQL actually has available what has been allocated.

This setting could be a good configuration, but setting it as a default seems wrong to me. You need to thoroughly understand what it does and what the effects on VMWare are to decide if it should be configured in your environment. Have a good chat with the datacenter/VMWare folks to understand how they have things set up too.