Когда включается Memory Ballooning в VMware vSpher?

Обновлено 20.12.2019

VmwareДобрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в России Pyatilistnik.org. В прошлый раз мы с вами разобрали, почему процесс Software Reporter Tool грузит процессор на 100%. Сегодня я хочу поговорить про память в ESXI хостах и какого вида она бывает. Мы рассмотрим, что такое Memory Ballooning, разберем когда он включается и как он вам может помочь в безвыходной ситуации, до которой все же лучше не доводить.

Что такое Memory Ballooning?

Раздувание (Memory Ballooning) VMware - это метод восстановления памяти, используемый, когда хосту ESXi не хватает памяти. Ваши виртуальные машины, сконфигурированные с некоторым количеством оперативной памяти в их виртуальном оборудовании, и будут использовать память через приложения, работающие в памяти.

В виртуализации хост ESXi не знает, что выполняется на  гостевой системе, а также гостевая ОС не знает, что она работает на виртуальной машине. Тогда как хост ESXi будет запрашивать память у гостевой операционной системы? , Вот где Memory Ballooning входит в игру. Есть общий драйвер, называемый vmmemctl.sys, который работает на виртуальной машине, которая доступна как часть VMware Tools. Когда хосту ESXi не хватает физической памяти, он использует раздувающий драйвер (vmmemctl.sys), чтобы определить, сколько памяти с виртуальных машин можно вернуть, чтобы предотвратить перестановку гипервизора. Этот драйвер затем использует часть памяти, которая, по мнению гостевой ОС, физически присутствует на виртуальной машине. Гостевая ОС затем поменяет память на диск, уменьшая нагрузку на физическую память хоста. Хост затем перераспределит эту память другим виртуальным машинам.

Memory Ballooning

Прежде чем мы углубимся, я думаю, что было бы неплохо поговорить о различных типах памяти, которые есть в ESXi. У нас есть физическая память хоста, гостевая физическая память, но также и виртуальная память, которая находится внутри каждой виртуальной машины и где работают приложения.

  • Физическая память хоста - физическая RAM каждого хоста ESXi (сервера). Это физический ресурс.
  • Гостевая физическая память - память гостевой ОС. Память, которая видна гостевой операционной системе, работающей на виртуальной машине. Допустим, вы создали виртуальную машину под названием VM1 с 4 ГБ памяти. Гостевая ОС увидит 4 ГБ памяти, которая называется гостевой физической памятью.
  • Виртуальная память - память, в которой приложение работает в виртуальной машине. Это непрерывное виртуальное адресное пространство, предоставляемое гостевой операционной системой приложениям. Это память, которая видна приложениям, работающим на виртуальной машине.

Memory Ballooning

Memory Ballooning включается когда у хост-сервера VMware ESX 6% или менее свободной памяти.  Для изъятия памяти используются виртуальные машины, у которых больше всего памяти по процессу idle memory tax. Если сравнивать Ballooning и Swapping, то последний проигрывает примерно так (база данных Oracle в виртуальной машине для OLTP-нагрузок, т.е. постоянный поток небольших транзакций):

Когда включается Memory Ballooning в VMware vSphere-01

Когда включается Memory Ballooning в VMware vSphere-01

Помните да, что максимальный размер раздувающегося баллонного процесса можно задать глобально в Advanced Settings для всего хоста VMware vSphere:

Когда включается Memory Ballooning в VMware vSphere-02

Когда включается Memory Ballooning в VMware vSphere-02

Или локально в Advanced Settings виртуальной машины (то же самое, что и добавление строчки в vmx-файл конфигурации):

sched.mem.maxmemctl = “1300″ (в мегабайтах)

Кстати, в ESX 3.5 нам давали возможность изменить порог в 6%

Когда включается Memory Ballooning в VMware vSphere-03

Когда включается Memory Ballooning в VMware vSphere-03

Поведение хоста при нехватке памяти

  1. Вы запускаете виртуальную машину с именем «VM1» и запускаете приложение под названием Microsoft Excel на этой виртуальной машине. Microsoft Excel как приложение будет запрашивать у гостевой операционной системы Windows память. Windows предоставит память приложению и отобразит ее из  гостевой виртуальной памяти -> гостевая физическая память
  2. Когда гостевая виртуальная память отображается на гостевую физическую память, гипервизор видит запрос памяти от гостя, а гипервизор отображает гостевую физическую память -> физическую память хоста . Вы создаете отчет в приложении Microsoft Excel в течение примерно 2 часов и закрываете приложение, как только закончите с ним.
  3. Когда вы закрываете Microsoft Excel, гостевая операционная система помечает память, выделенную для Microsoft Excel, как «свободную (free)» и делает ее доступной для других приложений, работающих на гостевой ОС, но ваш гипервизор не будет знать о «списке свободной памяти (free memory list)» вашей гостевой ОС, поэтому он хранит память, отображаемую в физической памяти хоста и которая загружает память на хост ESXi.
  4. Таким образом, когда узлу ESXi не хватает памяти или состояние памяти узла ESXi установлено в «Soft», появляется VMware Memory Ballooning. Гипервизор попросит «раздувать (inflate)» драйвер, установленный внутри виртуальной машины. Так как в гостевой операционной системе работает драйвер раздувания памяти, он получит память из «свободного списка (free list)». Гипервизор обнаружит память, возвращаемую драйвером всплывающей подсказки, и освободит ее на уровне физической памяти хоста и предоставит эту физическую память другим виртуальным машинам, которые нуждаются в памяти, вместо того, чтобы скидывать ее на диск. По умолчанию драйвер Balloon (vmmemctl.sys) может восстанавливать до 65% гостевой физической памяти. Например, вашей виртуальной машине выделяется 1000 МБ памяти, ее можно восстановить до 650 МБ, используя эту технику.

Анализ статистики раздувания памяти

Вы можете проверить статистику всплывающей памяти в Esxtop, на вкладке Memory Ballooning у виртуальной машины, а также с помощью графиков производительности vCenter.

esxtop -> Нажмите m

Вы увидите счетчик «MEMCTL/MB», который показывает общую активность раздувания (22110 МБ). Значения «curr» и «target» являются накопленными значениями «MCTLSZ» и «MCTLTGT», как описано ниже.

Memory Ballooning анализ

Мы должны искать столбцы «MCTL» для просмотра активности всплывающих окон для каждой виртуальной машины:

  • «MCTL?» : Указывает, активен ли драйвер баллона «Y» или нет «N». Если инструменты VMware не установлены или не работают, это значение будет отображаться как «N»
  • «MCTLSZ» : объем (в МБ) гостевой физической памяти, который фактически возвращается драйвером
  • «MCTLTGT »: объем (в МБ) гостевой физической памяти, который будет восстановлен (целевая память). Если этот счетчик больше, чем «MCTLSZ», драйвер раздувается, вызывая восстановление большей памяти. Если «MCTLTGT» меньше, чем «MCTLSZ», то воздушный шар будет спускаться. Этот процесс дефляции работает медленно, если гость не запрашивает память.
  • «MCTLMAX» : максимальный объем гостевой физической памяти, который может восстановить драйвер. По умолчанию 65% назначенной памяти.

Вкладка распределения ресурсов

Вы можете проверить статистику «Раздувание памяти» каждой отдельной виртуальной машины на вкладке «Распределение ресурсов виртуальной машины (Resource Allocation Tab)». Это конкретное значение VM Ballooned составляет 5,08 ГБ.

Memory Ballooning анализ-2

Вкладка Performance Charts в vCenter 5.5

Вы можете сгенерировать пользовательские графики производительности в vCenter, чтобы понять статистику Memory Ballooning в памяти всех виртуальных виртуальных машин на хосте ESXi или отдельных виртуальных машинах.

Memory Ballooning анализ-3

VMware Ballooning - не единственная техника восстановления памяти. Есть также другие методы, такие как VMware Transparent Page Sharing (TPS), который является проприетарным решением для прозрачного распределения страниц памяти между виртуальными машинами и устранения избыточных копий страниц памяти. Затем происходит сжатие памяти, при котором ESXi сжимает память до необходимости замены.

В нашем коротком посте я дал вам представление о том, как работает Memory Ballooning и где смотреть метрики потребления, но необходимо изучить полную картину, как все методы управления памятью работают в инфраструктуре VMware. Сначала запускается VMware TPS, затем идет раздувание и, наконец, своп. VMware Oversubscription/Overcommit позволяют администраторам назначать виртуальной машине больше совокупной оперативной памяти, чем физически доступно внутри сервера, и, тем не менее, не снижает производительность среды и конечных пользователей из-за низкой производительности. На этом у меня все. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org,

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *