Использование динамической памяти в Hyper-V R2 SP1

Опубликовано: 22 Апреля, 2023


Введение


В Windows Server 2008 R2 SP1 Microsoft предоставляет функцию динамической памяти для Hyper-V, которая обеспечивает более высокую плотность виртуальных машин на любом отдельном узле Hyper-V и динамически управляет требованиями к памяти виртуальных машин. В этой статье вы узнаете об архитектуре динамической памяти Hyper-V R2 с пакетом обновления 1 (SP1), о том, как настроить новые параметры памяти виртуальной машины и как интерпретировать новые столбцы состояния памяти в консоли диспетчера Hyper-V, которые позволяют отслеживать виртуальную память. динамическая балансировка памяти машины.



Выделение памяти в Hyper-V и Hyper-V R2


В выпусках Hyper-V и Hyper-V R2 виртуальная машина настраивается со статическим объемом памяти. Поэтому при создании виртуальной машины вы обычно задаете конфигурацию памяти, чтобы представлять максимальный объем памяти, который вы ожидаете от использования виртуальной машиной, хотя виртуальная машина может потреблять гораздо меньше памяти в течение большей части времени своего выполнения. Если Hyper-V или Hyper-V R2 не может выделить всю запрошенную память виртуальной машине при запуске, то запуск виртуальной машины завершается ошибкой, даже если при запуске требуется только часть выделенной памяти. Эта статическая модель выделения памяти оказывает прямое негативное влияние на плотность виртуальных машин, которая может быть достигнута с помощью Hyper-V и Hyper-V R2.


Динамическое выделение памяти в Hyper-V R2 SP1


В Hyper-V R2 SP1 Microsoft сохраняет вариант статического выделения памяти, но вводит новую функцию динамического выделения памяти виртуальной машины. Динамическая балансировка памяти поддерживает увеличение плотности виртуальных машин, а также регулировку памяти виртуальной машины на лету в зависимости от фактических требований к рабочей нагрузке. Динамическая память поддерживается как в Windows Server 2008 Hyper-V R2 SP1, так и в Microsoft Hyper-V Server 2008 R2 SP1. Поскольку функция динамической памяти реализована с использованием модели поставщика услуг виртуализации (VSP) и клиента службы виртуализации (VSC), она доступна только для операционных систем Windows, поддерживающих компоненты интеграции. В список поддерживаемых гостевых операционных систем входят:



  • Windows Server 2003 Enterprise и Datacenter с пакетом обновления 2 (SP2) (32- и 64-разрядные версии)
  • Windows Server 2003 R2 Enterprise и Datacenter с SP2 (32- и 64-разрядные версии)
  • Windows Server 2008 Enterprise и Datacenter (32- и 64-разрядные версии)
  • Windows Server 2008 R2 Enterprise и Datacenter (32- и 64-разрядные версии)
  • Windows Vista Ultimate и Enterprise с пакетом обновления 1 (SP1) (32- и 64-разрядные версии)
  • Windows 7 Максимальная и Корпоративная (32- и 64-разрядные версии)

Архитектура динамической памяти


Как показано на рис. 1, динамическая память реализована в родительском разделе с интерфейсом VSP пользовательского режима, который взаимодействует через VMBus с VSC режима ядра (синтетический драйвер) в дочернем разделе. При установке Windows Server 2008 R2 SP1 файлы Hyper-V, содержащие новые компоненты, показанные на рисунке, обновляются. Чтобы обновить поддерживаемую гостевую операционную систему, необходимо установить новые компоненты интеграции, поставляемые с Windows Server 2008 R2 с пакетом обновления 1 (SP1).


Изображение 27656
Рис. 1.
Архитектура динамической памяти в Hyper-V R2 SP1


Одна из основных обязанностей динамической памяти VSC — сообщать о требованиях к памяти от гостевой операционной системы обратно в родительский раздел. В родительском разделе компонент Memory Balancer оценивает требования к выделению памяти для всего набора работающих виртуальных машин, а затем выбирает схему выделения и освобождения памяти для удовлетворения потребностей виртуальной машины.


VSC динамической памяти также взаимодействует с ядром Windows гостевой операционной системы для добавления и удаления памяти. По сути, ядро Windows гостевой операционной системы через VSC информируется о том, что для использования доступна дополнительная память. Удаление памяти из виртуальной машины осуществляется с помощью механизма «раздувания». Используя «раздувание», VSC высвобождает память из гостевой операционной системы, работая с собственными алгоритмами управления памятью, чтобы вернуть свободную память в VSC, или, если свободная память недоступна, путем подкачки на виртуальный диск, чтобы предоставить VSC запрошенную память. страницы. Очищенные страницы памяти, выделенные VSC, используются родительским разделом для увеличения объема памяти, выделяемой другим виртуальным машинам. Когда страницы памяти больше не нужны другим виртуальным машинам, VSC может освободить память для гостевой операционной системы, спустив баллон памяти.


Конфигурация динамической памяти


Даже после установки Windows Server 2008 R2 с пакетом обновления 1 (SP1) при использовании диспетчера Hyper-V для создания новой виртуальной машины по умолчанию указывается выделение статической памяти. Однако, как показано на рисунке 2, если вы откроете настройки виртуальной машины в диспетчере Hyper-V, вам будет предоставлено несколько новых параметров конфигурации памяти виртуальной машины.


Изображение 27657
Рис. 2. Параметры памяти виртуальной машины в диспетчере Hyper-V


На самом деле, первый выбор, который необходимо сделать, это переключаться со статической памяти на динамическую или нет. Если вы выбираете вариант статической памяти, вы указываете установленный объем памяти для использования виртуальной машиной. Если вы выберете опцию динамической памяти, вы должны настроить параметры Startup RAM, Maximum RAM и Memory Buffer.


Опция Startup RAM определяет минимальный объем памяти, выделенный виртуальной машине и сообщаемый BIOS гостевой операционной системы. Чтобы наиболее эффективно использовать динамическую память, RAM запуска должна быть настроена так, чтобы представлять объем памяти, необходимый виртуальной машине для запуска и загрузки. Если вы настраиваете динамическую память для гостевой операционной системы, которая ее не поддерживает, то Startup RAM — это выделение памяти, назначенное виртуальной машине, и не будет попыток динамического управления памятью виртуальной машины. Параметр Startup RAM по умолчанию составляет 512 МБ.


Параметр Максимальный объем ОЗУ определяет максимальный объем памяти, который может быть выделен виртуальной машине. Даже если виртуальная машина сообщит, что ей требуется больше памяти, чем указано в настройке Максимум ОЗУ, больше ей не будет выделено. Параметр «Максимальный объем ОЗУ» по умолчанию составляет 64 ГБ.


Параметр «Буфер памяти» позволяет указать процент дополнительной памяти, выделяемой виртуальной машине, сверх того, что требуется для выполнения рабочей нагрузки. Эта дополнительная память может использоваться для кэширования файлов или использоваться по мере необходимости, когда этого требует виртуальная машина. Фактический буфер памяти для виртуальной машины может быть меньше этого параметра в зависимости от объема доступной памяти в системе. Параметр «Буфер памяти» по умолчанию составляет 20 процентов, и его следует настроить в соответствии с конкретными требованиями рабочих нагрузок виртуальных машин.


Кроме того, вы также можете указать конфигурацию приоритета памяти для виртуальной машины. Этот параметр позволяет установить приоритет распределения памяти для виртуальной машины по отношению к другим виртуальным машинам на узле, если доступной памяти недостаточно для удовлетворения всех требований к виртуальной машине. Параметр «Приоритет памяти» находится в диапазоне от «Низкий» до «Высокий», а значение по умолчанию — среднее.


Как показано на рис. 2, параметры «Буфер памяти» и «Приоритет памяти» являются единственными параметрами памяти, которые можно изменить во время работы виртуальной машины. Переключение между параметрами управления статической и динамической памятью, а также настройку параметров Startup RAM и Maximum RAM можно выполнять только при выключенной виртуальной машине.


Мониторинг динамической памяти в диспетчере Hyper-V


На рис. 3 показана консоль диспетчера Hyper-V после установки Windows Server 2008 R2 с пакетом обновления 1 (SP1) на сервер с Hyper-V. На панели «Виртуальные машины» диспетчера Hyper-V появились два новых столбца: «Текущая память» и «Доступная память». Эти два столбца позволяют просматривать текущую информацию о памяти и отслеживать, как изменяется доступность памяти, поскольку Hyper-V динамически распределяет память между виртуальными машинами.


Изображение 27658
Рис. 3. Мониторинг памяти виртуальных машин в диспетчере Hyper-V


В частности, в столбце «Текущая память» отображается память, выделенная виртуальной машине в любой конкретный момент времени. В столбце «Доступная память» отображается объем памяти, выделенный для буфера памяти, в процентах от выделенной памяти в виртуальной машине. Столбец «Доступная память» может отображать отрицательное значение, если доступной памяти недостаточно для выделения виртуальной машине на основе ее текущих требований. Гостевая операционная система виртуальной машины может использовать собственное управление памятью, чтобы справиться с этой ситуацией так же, как на физическом сервере (например, выгрузить страницу в файл подкачки).


Мониторинг динамической памяти с помощью счетчиков производительности


Windows Server 2008 R2 SP1 также включает новые счетчики производительности, которые позволяют отслеживать динамическое выделение памяти, и они содержатся в новых группах счетчиков производительности: Hyper-V Dynamic Memory Balancer и Hyper-V Dynamic Memory VM. Вы можете создавать наборы сборщиков данных для сбора данных счетчиков производительности и использовать системный монитор для просмотра данных в режиме реального времени.


Вывод


В Windows Server 2008 R2 SP1 новая функция динамической памяти предоставляет средства для увеличения плотности виртуальных машин на узле Hyper-V и более эффективного использования системной памяти за счет динамического добавления и удаления памяти из виртуальных машин в соответствии с требованиями рабочих нагрузок. Чтобы начать тестирование динамической памяти Hyper-V, загрузите бета-версию Windows Server 2008 R2 SP1, доступную здесь.