Форумы

GNU.SU - Записки нубо-линуксойда :: Форумы :: Сервисы :: Виртуализация
 
<< Предыдущая тема | Следующая тема >>
Управление памятью гостевой системы XEN
Модераторы: tastelinux, Frizze, andrey, Bender
Автор Добавил
tastelinux
Птн Май 20 2011, 02:50
andreika

ID пользователя #1
Зарегистрирован: Птн Апр 30 2010, 12:25

Сообщений: 337
В Xen Cloud Platform (так же как в Xen) существует два независимых метода управления памяти гостевой системы. Управление памятью позволяет на ходу добавлять и убавлять размер используемой памяти виртуальными машинами, перераспределяя её в самой оптимальной форме.

Первый метод позволяет внешнему наблюдателю управлять памятью. В версии XCP 0. 11 это делалось командой

xe vm-param-set uuid=vm_uuid memory-dynamic-max= memory-dynamic-min= memory-static-max= memory-static-min=


Значения говорят сами за себя. Важно выполнять соотношение static_min <= dynamic_min <= dynamic_max <= static_max. Понятно, что в тривиальном случае эти все 4 величины равны и представляют собой выставленное значение объёма памяти для виртуальной машины. Примерно так работает это в всех существующих системах виртуализации.

Библиотека и каталог сс становится, когда эти величины различаются.

Итак, что означают эти величины?

  • static_min означает объём памяти, ниже которого не может быть уменьшена доступная память виртуальной машины ни при каких условиях. Изменение этой величины может происходить только при выключении гостя (разрушении домена).

  • static_max означает то же самое, но в большую сторону. static_
  • – это железные недвижимые границы гостя, они задают объём выделяемой служебной памяти при создании домена гостевой виртуальной машины.

  • dynamic_min и dynamic_max определяют динамически изменяемую границу. Это величина лишь определяет текущие ограничения для гостя и по понятным причинам не может выходить за пределы static.


Теперь же главное: что происходит между dynamic_min и dynamic_max? Тут есть три вещи:

1) Автоматическое освобождение памяти у всех для новых гостевых систем.

2) Ручное (из скрипта) регулирование объёма свободной памяти для заданной системы

3) Добровольное освобождение памяти гостем, так называемый ballooning (надувание). О нём есть отдельная статья.

Первая и основная вещь, которую нужно понять, что в отличие от openvz, xen не признаёт и не принимает понятия «оверселл» памяти смысле «соврать гостю, что память есть, авось пронесёт». Вся память, которую обещают гостю ЕСТЬ в наличии. Другими словами, невозможно выделить 10 виртуальным машинам по гигабайту памяти на хосте с 8 Гб свободной памяти. НЕТ. НЕЛЬЗЯ. ТОЧКА.

Таким образом, если память отбирается у гостя, у неё уменьшается объём свободной памяти. И не свободной тоже, об этом нужно помнить. oom_killer вполне реальная вещь на высокозагруженных гостях в момент сокращения объёма памяти гостей.

Итак, как происходит отбор? Если на хосте инициирован запуск новой виртуальной машины, а у хоста нет нужного объёма свободной памяти, либо, в тех же условиях, была отдана команда на увеличение памяти одной из машин, то происходит уменьшение объёма памяти у всех, у кого можно уменьшить. Уменьшение происходит симметрично, т.е. не учитывается степень загруженности гостей. Увидеть это проще всего в xentop – при занятой памяти, запуск ещё одного гостя приводит к синхронному уменьшению объёма памяти у всех до момента, пока суммы отобранной памяти не становится достаточно для запуска нового гостя.

Обратите внимание: память не может отбираться ниже границы dynamic_min. Если возникает ситуация, что «отбирать больше нечего», а памяти всё ещё не хватает, то это и обрабатывается как ситуация «нет достаточно памяти». Например, в условиях такой нехватки, не запустится новый гость.

Следующее, и куда более интересное – это возможность регулировать память силком. Сколько сказали, столько сделали. В версии XCP 0.5 это делается командой
xe vm-memory-target-set vm=vmname target=
.

Примечание: по состоянию на 0.5RC1 есть специфичное поведение гостевой системы, при которой могут выполняться специфичные же условия на объём минимальной памяти, зависящей по специальной формуле от максимальной.

Этот механизм открывает отличную возможность регулировать объём свободной памяти для гостей на ходу, руководствуясь своими соображениями (например, объёмом свободной памяти в гостевой системе).

Ещё более интересной технологией является «отдача» лишней памяти из гостя – но об этом другая статья.

[ Редактирование Сбт Май 21 2011, 01:06 ]
Наверх
upravlenie pamyatju xen   xen memory   xen   linux   

 

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System