SharePoint Virtualization Support and Third Party Products

I've seen this question come up a few times and I decided to do a little digging of my own to help resolve the answers once and for all.  It's important to note that whatever virtualization product you use to host your operating systems and their respective applications, that virtualization product is providing an answer for those of us that do not have the hardware configurations necessary for a complete physical implementation.  We are essentially tricking the operating systems and their applications into thinking they exist on physical machines.  With that said we have to keep in mind that if our installation of Windows Server 2012 R2 (for example) was installed on a physical server with all the hardware that typically comes with said server we would expect that the installation would run smoothly.  Now what if we installed a new piece of hardware into that server and our Windows software did not recognize it or worse yet it installed what it thought were the correct drivers but the device did not function as expected?

Would you call Microsoft to find out why the device wasn't working or would you call the vendor of the hardware piece you just installed?  You'd call the hardware vendor of course since it is up to them to provide the necessary testing needed to make sure it worked with your Microsoft product and make the correct drivers and software available for you to install.  Sound about right so far? Well this same scenario can be applied to your virtual environments.  All the virtual hardware is being provided by the vendor of the virtual software.  Microsoft's operating systems and applications, for the most part, are not cognizant of the existence of the virtual devices and treat them as if they are the real deal.  In some cases where the software or OS is aware of the virtual environment it will still treat it as physical.

So what does this have to do with my question regarding how SharePoint is supported in a virtual environment?  Well if you've seen the TechNet article on best practices you'll see part of the answer to that question. See https://support.microsoft.com/kb/2764086 as well as https://technet.microsoft.com/en-US/library/ff621103(v=office.15).aspx#ConfigMem

In that article it addresses how to setup the different virtual hardware devices such as your NIC, CPU, hard disk space and even memory.   For the most part it seems pretty standard until you get to features unique to the virtual software itself.  Which leads me to Dynamic Memory a feature you'll find in Hyper-V as well as VMware.  Even though both Hyper-V and VMware implement the use of Dynamic Memory in different ways neither of them is supported for SharePoint installations.  The reason is that this implementation of dynamic memory does not work with every SharePoint feature. For example, Distributed Cache and Search do not resize their caches when the allocated memory for a virtual machine is dynamically changed. This can cause performance degradation, especially when assigned memory is reduced. 

The official documentation on using a Microsoft product within a virtualized environment is this:https://www.windowsservercatalog.com/svvp.aspx?svvppage=svvpwizard.htm 

There are no industry standards to follow in implementing such features, and since 'by design' the operating system [whether that be Windows Server or some other OS] or application are not cognizant of such virtualization product functionality, there is no practical method of testing these virtualization product features using Microsoft-developed tests and tools. The SVVP program does not test these features or functions, and the virtualization product vendor is solely responsible for testing and supporting such features. However, unless otherwise stated in articles or documents for Windows Server operating systems or for Microsoft Server-focused applications, Microsoft does not preclude their use by customers. If a customer running a supported version of Windows Server on a validated virtualization solution experiences issues after using such third party virtualization features (such as live migration) that operate independently of Microsoft products, then the customer should contact the virtualization vendor for assistance in resolving the issue.  

Long story short?  Microsoft does not support a SharePoint 2013 installation when any form of dynamic memory is enabled within the virtual product.   Read the Microsoft documentation on the topic found here and make note of page 17.   https://download.microsoft.com/download/0/0/1/001ADCCC-A45B-47E3-8DA4-ED51E3208021/Best_Practices_for_Virtualizing_and_Managing_SharePoint_2013.pdf