Windows Server 2008 R2 Service Pack 1 Beta: Динамическое распределение памяти виртуальных машин Hyper-V

Итак, то, о чем так долго говорили большевики, и еще больше – чем постоянно интересовались пользователи виртуализации от Microsoft – свершилось. Очень ожидаемый механизм динамического распределения физической памяти сервера-хоста между несколькими виртуальными машинами согласно их “потребностям текущего момента” стал доступен в бета-версии пакета обновлений Windows Server 2008 R2 Service Pack 1.

Теперь можно будет не так тщательно “вымеривать” требуемые объемы памяти на физических хостах, и, самое главное, теперь “лишняя” память, которая распределена для одной виртуальной машины и не используемая в данный момент ею, будет отдаваться другой виртуальной машине, если та нуждается в дополнительной памяти для работы своих приложений. Удобно и полезно? – вполне...

Остается только вопрос – “как настраивается и работает динамическое распределение памяти в Windows Server 2008 R2 SP1”? Все очень просто:

Технические требования? – в качестве физического хоста Hyper-V должен обязательно выступать сервер под управлением Windows Server 2008 R2 SP1. В качестве гостевых виртуальных машин могут выступать как ОС с Service Pack 1, так и без него. В случае, если вы планируете использовать в качестве гостевой ОС предыдущие версии Windows Server 2008 или Windows 7 – вам обязательно надо будет обновить ОС до новой версии Integration Services, поставляющихся с клиентом Hyper-V Virtual Machine Connection. Это можно сделать из меню клиента Actions->Insert Integration Services Setup Disk и далее следовать предложениям мастера установки в обновляемой гостевой ОС. Кстати, поддержка динамического распределения памяти для гостевых ВМ под управлением Windows Server 2003 в Integration Services тоже присутствует.

Windows Server 2008 R2 SP1 Dynamic MemoryКак это работает? – очень просто! И, как понятно по названию, непосредственного участия ИТ-администратора, кроме, собственно, начальной настройки параметров памяти ВМ, не требуется. Smile В механизме динамического распределения памяти сочетаются 2 технологии – уже хорошо зарекомендовавшая себя в работе на “реальном железе” технология горячего добавления памяти, поддерживаемая ОС Windows и технология вытеснения “лишней” памяти по принципу “пузырей-баллонов” (balloon memory). Суть работы крайне прост – при старте виртуальной машине устанавливается минимальный, указанный вами, объем ОЗУ (например, 1024МБ). При этом есть второй параметр управления объемом памяти – максимальное значение памяти (пусть 8192МБ), а также предел свободной памяти в процентах у гостевой ОС в текущий момент, после которого система виртуализации Hyper-V будет стараться добавить память виртуальной машине “на ходу”. Гостевая ОС стартует и “видит” ровно столько памяти, сколько ей назначили по минимуму, т.е. 1024МБ. Как только ее процессы, подгребая под себя память, займут ее больше, чем указано в пределе по процентам – начинается динамическое добавление памяти.

Процесс добавления памяти ВМ крайне прост, если у физического хоста Hyper-V есть свободная ОЗУ – просто “откусывается” часть физической памяти “по потребностям” ВМ (т.е. может быть добавлено и 10МБ, и 500МБ) и добавляется механизмом горячего добавления памяти гостевой ОС.

Если же у физического хоста нет свободной памяти – то здесь вступает в работу вторая часть механизма динамического распределения памяти SP1 – драйвер баллоного вытеснения памяти у других, уже работающих, виртуальных машин. Здесь процесс тоже достаточно прост – используя, в дополнение к параметру процентного отношения свободной памяти у гостевых ОС, еще один параметр настройки памяти каждой виртуальной машины – а именно – приоритет использования памяти этой машиной относительно других работающих ВМ – Hyper-V определяет будущие “жертвы”, у которых имеется неиспользуемая в данный момент память и запускает в них процесс “надувания пузыря”. Фактически – это означает, что системный balloon-процесс выполняет заполнение памяти сверху до указанного предела и после Hyper-V просто передает освободившееся адрессное пространство той виртуальной машине, которая запросила расширение памяти.

Есть еще несколько нюансов в работе механизма динамического распределения памяти в Windows Server 2008 R2 Service Pack 1 – во-первых, при добавлении гостевая ОС “видит” именно столько памяти, сколько ей добавлено “на ходу”, но при освобождении памяти – эта цифра не уменьшается, поскольку ОС имеет механизмы только горячего добавления, но не удаления памяти. Т.е. допустим, в процессе работы наша гостевая ОС успела “захомячить” 6975МБ памяти из обещанных ей 8192МБ и все утилиты мониторинга будут показывать именно эту цифру. Но вдруг пришла пора делиться награбленным – и гостевую ОС через баллоный метод заставят “отдать” часть свободной памяти, пусть 2400МБ – но это не означает “снять ее физически”, а значит, все утилиты самой ОС будут показывать всё теже 6974МБ и только оснастка управления Hyper-V будет отображать реальное состояние дел в гостевой ОС и показывать 6975-2400=4575МБ используемой ОС ОЗУ.

Во-вторых – такие вот метания памяти туда-сюда делают не очень удобным параметр указания оставшейся свободной памяти в процентах – 25% от 2ГБ – это не совсем то, что 25% от 6ГБ и реакция на “окончание” памяти у гостевой ОС может быть несколько преждевременной.

И, в-третьих, самая главная нагрузка при работе динамического распределения памяти ляжет на физический хост, которому снова, как в старые добрые времена Hyper-V версии 1, придется заниматься обсчетом всего этого добра на физических процах, отбирая некоторые, пусть и в пределах десятка процентов, процессорные ресурсы на работу этих механизмов в Hyper-V. Хотя, если честно, последние Xeon x56xx своей производительностью просто пугают Winking smile

А сценарии использования и рекомендации от Microsoft по использованию динамического распределения памяти в виртуальных машинах, думаю, мы увидим в ближайшее время. Мое личное мнение – на 20-30% уплотнить серверы получится, особенно – те из ВМ, которые обеспечивают функции работы инфраструктуры.

И, в завершение всего выше сказанного – небольшая демонстрация того, как в жизни ведет себя Windows Server 2008 R2 Service Pack 1 и та его часть, которая обеспечивает механизм Dynamic Memory:

Хочу также напомнить, что если вы хотите о какой-то теме поговорить подробнее в ходе еженедельного вебкаста – добавляйте ее на голосование и голосуте на странице вебкастов украинских ИТ-клубов.

Также другие демо различных продуктов Microsoft и сопутствующих девайсов и технологий вы можете найти на моем канале youtube.

Продолжение следует – RemoteFX! … а также “что может современная Windows, если ее “встроить” в нужный гаджет при помощи Windows Embedded Standard 7 и какие интересные гаджеты сейчас есть на рынке” …

Comments

  • Anonymous
    January 01, 2003
    Спасибо. Познавательно.

  • Anonymous
    July 09, 2010
    красиво...

  • Anonymous
    July 09, 2010
    Отличная фича.

  • Anonymous
    April 18, 2011
    Давно думаю о домашнем облачке. А то домой пришел, а на ноут мощности рядом стоящего настольного компа, на котором кто-то играет в косынку или слушает музыку - не подсилу обычному программисту III курса. Вот, вижу памятью учите делиться. Шаститко, вопросы вам =) :

  1. А можно это провернуть через локальную сеть?
  2. А через Интернет?
  3. А что насчет мощностей процессоров, видеокарт, винчестеров?
  4. Почему современные игры не запускаються через стандартный удаленный рабочий стол даже через локальную сеть(модем-маршрутизато, витая пара до 100МБит)???