Hyper-V Program Manager
When you enable dynamic memory on a virtual machine – one of the things you can configure is the memory buffer:
You may be wondering what the story behind this setting is.
First – you need to understand the core mechanism behind dynamic memory. At its heart dynamic memory is all about Hyper-V calculating an “ideal target memory value” for each running virtual machine. Hyper-V then adds and removes memory in order to get virtual machines as close to their ideal target value as possible.
This “ideal target memory value” is constantly changing as the virtual machine is running. Open a new program, the virtual machine needs more memory. Close a program and it needs less. However, it would not be a good idea to actually try and keep the virtual machine exactly at the ideal target memory value for a couple of reasons:
This is where the memory buffer comes into play. The memory buffer allows you to specify how much “extra” memory a virtual machine should be given when we are moving memory around between virtual machines. By default this value is set to 20% – but you can make easily make it lower or higher.
Some common questions I have heard about the memory buffer setting include:
"•Why would I ever set this to a low value?
The most common reason is because you have a program running inside the virtual machine that tries to use as much memory as it can get its hands on. A low memory buffer will ensure that it does not try and grab all the memory on the physical computer."
Like SQL? Anychance of more info on how we should set this on a MSSQL server? Thanks!
You are a mind reader :-)
We are working with the SQL team to come out with formal guidance around SQL + dynamic memory.