Back in the days when Servers still had 8GB or 16GB memory at most a setting was introduced that guaranteed the hypervisor had a certain amount of free memory to its disposal. The main purpose of this being of course stability of the system. As with any Operating System free memory is desirable to ensure it is available whenever a process requests it.. or should we say World in the case of ESXi.
These days however we hardly see environments with 8 or 16GB hosts…. No, most servers today have a minimum of 48GB and I guess the standard is 72 or 96GB. With 72GB and 96GB being the standard today one can imagine that 6% might be slightly going overboard. Especially in high density environments like VDI every single MB worth of of extra memory can and will be worth it. As such it might be beneficial to change that 6% back to 2%. This KB article has been around for a couple of weeks, and describes just that: http://kb.vmware.com/kb/1033687
Now you might wonder what happens if you change that 6% down to 2% as the memory states are closely related this is what many have published in the past:
- 6% – High
- 4% – Soft
- 2% – Hard
- 1% – Low
But is that really the case? What if I would change MinFreePct? Well I actually mentioned that in one of my previous articles. MinFreePct is defined as 6% however the other memory states are not fixed but rather a percentage of MinFreePct:
Free memory state thresholds {
soft:64 pct
hard:32 pct
low:16 pct
}
So that means that if you change the “High” watermark (6%) down to 2% the percentage that will trigger ballooning / compression / swap will also automatically change. Would I recommend changing MinFreePct? Well it depends, if you are running a high density VDI workload this might just give you that little extra you need but in most other cases I would leave it to the default. (For more on memory tuning for VDI read Andre’s article that he coincidentally published today.)
Pete says
Franks article didn’t mention what happens after you hit 2% and swap… What does it dot at 1%?
Joris Van der Schoot says
Hi, in all the examples I’ve found, the 6 % value is used for the Mem.MemMinFreePct-setting. But what if you change this value? With the 6 %, the other percentages of the ranges are 4 %, 2 % and 1 %… But what if you change the 6 % to 10 % (for example!) ? Will the other percentages change too? I assume that the 4, 2 and 1 % are an outcome of 64 % of 6 % (which is 4 %), 32 % of 6 % (which is 2 %) and 16 % of 6 % (which is 1 %)…
So changing the Mem.MemMinFreePct-setting to 10 % would, following the above assumption, result in:
Range %
4-12 GB => 6 % (64 % of 10 %)
12-28 GB => 3 % (32 % of 10 %)
remaining => 1.6 ~ 2 % (16 % of 10 %)
Is this assumption correct? Or how does it work?
Thanks on advance!
Mick Bland says
Thanks for the information.
I’m a bit confused by the Advanced Configuration setting Mem.MemMinFreePct, as it is consistently displaying as “0” when viewed through the client.
Duncan Epping says
It is not being used anymore with the latest version, we use the “sliding scale” so hence it is set to 0