ADG Оставить заявку
Блог Системное администрирование 4 мин чтения

Windows Server 2008 R2 SP1 beta: тестируем Dynamic Memory для Hyper-V

Microsoft анонсировала SP1 beta для Windows Server 2008 R2 с Dynamic Memory и RemoteFX. Прогнали на тестовом кластере - VM сами отдают RAM хосту, плотность консолидации заметно выросла.

Контекст момента

Microsoft анонсирует SP1 beta для Windows Server 2008 R2 с Dynamic Memory и RemoteFX для Hyper-V

На прошлой неделе Microsoft официально анонсировала бета SP1 для Windows Server 2008 R2. Два главных пункта в списке изменений для Hyper-V - Dynamic Memory и RemoteFX. Второе нам пока неинтересно: RemoteFX про графику в VDI-сценариях, у наших клиентов на сопровождении это не приоритет. А вот Dynamic Memory - другая история. Поставили бету на тестовый кластер и провели неделю с секундомером и диспетчером задач.

Что такое Dynamic Memory и зачем оно нужно

До SP1 Hyper-V работал со статической памятью: при создании VM указываешь, скажем, 2 ГБ - и эти 2 ГБ зарезервированы за ней навсегда, вне зависимости от реальной нагрузки. VM может простаивать с 200 МБ активного использования, но хост всё равно держит 2 ГБ занятыми. При консолидации десятков виртуалок это критично: резерв суммируется, и в какой-то момент физической памяти просто не хватает, хотя реально загружены только несколько машин.

Dynamic Memory меняет логику: VM получает начальный объём RAM, но при необходимости гипервизор добавляет ей больше или, наоборот, забирает обратно на уровне хоста. Внутри гостевой ОС работает специальный драйвер (Hyper-V Integration Services), который сигнализирует о давлении памяти. Хост реагирует и перераспределяет физическую RAM между виртуалками динамически.

У VMware похожий механизм - balloon driver - существует давно. Microsoft реализовала свою версию, и интересно было посмотреть, как это работает именно на их стеке.

Стенд и методика

Тестовый кластер из двух хостов на Windows Server 2008 R2, оба с 24 ГБ RAM. Накатили SP1 beta в тестовой среде, изолированной от production. Запустили 20 VM с Windows Server 2008 R2 в гостевых, каждой назначили параметры Dynamic Memory:

  • Начальная RAM - 512 МБ
  • Максимум - 2 ГБ
  • Буфер памяти - 20% (параметр, сколько «запаса» держать сверх текущего потребления)

На VM с динамической памятью установили Integration Services из SP1 beta - без этого драйвера механизм не работает, гостевая ОС не умеет «отдавать» память обратно хосту.

Что увидели

Без нагрузки 20 VM в сумме потребляли значительно меньше RAM хоста, чем при статическом распределении - хост видел реальное потребление, а не зарезервированные максимумы. Когда на группе VM запускали нагрузку (имитировали работу файлового сервиса и компиляцию), гипервизор добавлял им память, не трогая простаивающих соседей. При снятии нагрузки VM постепенно возвращали RAM обратно - не мгновенно, с задержкой в несколько минут, но возвращали.

В нашем тестовом прогоне плотность консолидации на хост выросла примерно на 20% по сравнению со статическим резервированием при том же фактическом уровне сервиса. Цифра не абсолютная - сильно зависит от профиля нагрузки конкретных VM. Если все виртуалки работают с пиком одновременно, Dynamic Memory не поможет: нужно, чтобы нагрузка была разнесена по времени.

Один нюанс, который сразу бросился в глаза: при агрессивном изъятии памяти у нагруженной VM гостевая ОС начинала активно использовать файл подкачки, и производительность падала заметно. Параметр «буфер памяти» здесь критичен - если поставить слишком маленький, хост забирает RAM слишком агрессивно. Мы опытным путём остановились на 25-30% для серверных нагрузок.

Что с RemoteFX

Установили, посмотрели. RemoteFX добавляет виртуализацию GPU в RDP-сессии - это для сценариев, где пользователям нужна 3D-графика в VDI. Для наших текущих задач - серверная инфраструктура, без требований к GPU - неактуально. Протоколь RDP в SP1 получил и другие улучшения, они заметны в качестве картинки, но это не то, ради чего мы тестировали бету.

Что делать с этим сейчас

Beta есть beta. На production мы SP1 beta не катим - только тест. Но картина достаточно обнадёживающая, чтобы планировать переход после выхода финала. Для клиентов на Hyper-V-кластерах, у которых сервера работают с неравномерной нагрузкой (а таких большинство), Dynamic Memory - реальный способ выжать больше из того же железа.

Сравнивать напрямую с VMware memory management здесь не очень корректно: VMware использует несколько техник одновременно (ballooning, transparent page sharing, свопинг на уровне гипервизора), Hyper-V пока опирается в основном на balloon-подход через Integration Services. Что работает лучше при конкретных нагрузках - вопрос отдельного сравнительного теста, который мы, возможно, сделаем позже.

Пока вывод простой: Dynamic Memory в SP1 beta работает, и работает предсказуемо. Осталось дождаться финального релиза и провести нормальное нагрузочное тестирование на реальных профилях - тогда будет что рассказать предметно.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.