Недавно Duncan Epping опубликовал интересную статью о параметре Mem.MinFreePct, который есть в настройках сервера VMware ESXi из состава vSphere. По-сути, этот параметр определяет, какое количество оперативной памяти VMkernel должен держать свободным на хосте, чтобы всегда были доступные ресурсы под нужды системы, и хост не вывалился в PSOD.
В VMware vSphere 4.1 параметр Mem.MinFreePct составлял 6% и его можно было изменять с помощью следующей команды:
vsish -e set /sched/freeMemoryState/minFreePct <Percentage>
Например, вот так можно было установить Mem.MinFreePct в значение 2%:
vsish -e set /sched/freeMemoryState/minFreePct 2
Этак команда, кстати, не требует перезагрузки, но зато после перезагрузки значение Mem.MinFreePct не сохраняется. Поэтому данную команду, если требуется, нужно занести в /etc/rc.local (подробнее в KB 1033687).
Параметр этот очень важный, поскольку от него зависят пороги использования различных механизмов оптимизации памяти хоста ESXi. При этом, если памяти на хосте много (например, десятки гигабайт), то держать постоянно 6% свободной памяти может быть для кого-то расточительством. Поэтому, начиная с VMware vSphere 5.0, параметр Mem.MinFreePct является "плавающим" и устанавливается в зависимости от объема физической памяти на хосте ESXi.
Вот какие значения принимает Mem.MinFreePct в зависимости от того, сколько RAM есть на вашем физическом хост-сервере:
Процент необходимой свободной памяти
Объем памяти хоста ESXi
6%
0-4 ГБ
4%
4-12 ГБ
2%
12-28 ГБ
1%
Больше 28 ГБ
А вот какие механизмы оптимизации памяти на хосте работают, если свободной памяти становится все меньше и меньше:
Состояние свободной памяти хоста
Пороговое значение
Какие механизмы оптимизации памяти используются
High
6%
-
Soft
64% от значения MinFreePct
Balloon, Compress
Hard
32% от значения MinFreePct
Balloon, compress,swap
Low
16% от значения MinFreePct
Swap
Интересно, конечно, но как-то бесполезно. Зачем загонять хост в такие лимиты? Лучше как минимум процентов 10 всегда держать свободными и своевременно покупать новые серверы.