В системе не хватает памяти для запуска виртуальной машины hyper v
Ситуация изменилась с выходом Windows Server 2008 R2 SP1. Hyper-V получил механизм динамического распределения памяти (Dynamic Memory), благодаря которому память может свободно перераспределяться между виртуальными машинами прямо в процессе работы. Давайте познакомимся с основными принципами работы Dynamic Memory поближе.
Принцип работы
Балансировщик вычисляет для каждой виртуальной машины некий идеальный объем памяти. Формула достаточно проста: идеальный объем равен потребляемой в текущий момент памяти плюс резерв (определенный процент от потребляемой памяти, задаваемый вручную).
Затем вычисляется значение нагрузки Memory Pressure – процентное отношение вычисленного идеального объема к объему, фактически выделенному виртуальной машине. Этот параметр показывает, как на данный момент обстоят дела с памятью на виртуальной машине: малые значения означают, что памяти достаточно, большие – что использование памяти подходит к пределу. Если же значение Memory Pressure превышает 100%, то значит памяти сильно не хватает, и виртуальная машина активно использует файл подкачки.
На основании изменений нагрузки в течение времени балансировщик вычисляет пороговые значения нагрузки – минимальное и максимальное. Если нагрузка превышает максимальное пороговое значение – то виртуальной машине добавляется память. Если же значение нагрузки опускается ниже минимального порогового значения – это означает, что излишек памяти можно отобрать.
Добавление памяти
Если нужно добавить памяти – то диспетчер памяти стека виртуализации выделяет виртуальной машине дополнительную память. DMVSC, используя технологию горячего добавления памяти (Hot Add RAM) расширяет адресное пространство виртуальной машины, после чего соответствующие виртуальные адреса сопоставляются с выделенными физическими адресами. Обратите внимание, что для работы необходима поддержка Hot Add RAM на уровне гостевой ОС.
Удаление памяти
Для удаления памяти используется механизм Memory Ballooning. Когда приходит команда на удаление памяти – DMVSC проверяет, какие области памяти на данный момент не используются. Из них отбирается объем, предназначенный для удаления, и затем эти адреса захватываются DMVSC в монопольный доступ. После этого захвата область памяти помечается как Driver Locked и становится недоступна для использования операционной системой. Как только память была захвачена — соответствующие виртуальные адреса отвязываются от физических адресов, и соответствующие ячейки памяти могут быть переданы другим виртуальным машинам. Удаление памяти происходит для системы абсолютно незаметно, вся захваченная память по-прежнему остается системе видна. В дальнейшем, если виртуальной машине нужно добавить память – соответствующее адресное пространство освобождается и связывается с выделенной областью памяти.
Настройка
После установки SP1 все гораздо веселее 🙂 В окне Memory конфигурации виртуальной машины появляется возможность выбора режима выделения памяти: Static/Dynamic. При выборе Static – память будет задаваться фиксированно, как и раньше. А вот если выбрать Dynamic, то станут доступны новые параметры настройки. При использовании Dynamic Memory объем памяти виртуальной машины определяется уже не одним параметром, а несколькими. Вот они:
Этого параметра нет в настройках и изменить его можно только через редактирование реестра. Для этого надо создать ключ типа DWORD с названием MemoryReserve в разделе реестра HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Virtualization . Значение этого ключа и определяет объем резервируемой памяти в мегабайтах. Максимальное значение – 4096 (4 Гбайт), больше устанавливать бесполезно. Даже если установить 8192 – все равно система зарезервирует только 4 Гбайт памяти.
В Windows Server 2012 в дополнение к Startup RAM (объем памяти при старте) появился параметр Minimum RAM (минимальный объем памяти). Если в Server 2008R2 эти параметры эквивалентны, то в Server 2012 они сделаны полностью независимыми друг от друга. Такой подход позволяет более гибко управлять распределением памяти. Например, для старта машине можно выделить 4ГБ памяти, а на случай бездействия задать минимум в 512МБ. Кстати, настройки Minimum RAM и Maximum RAM теперь можно крутить прямо на работающей машине.
Примечание: Если быть точным, то в Server 2008R2 технически все же есть возможность с помощью WMI/PowerShell выставить минимальное значение памяти меньше, чем стартовое. Если интересно, то вот здесь есть описание и текст скрипта.
Smart Paging
Чуть выше я писал, что если система не сможет выделить объем памяти Startup RAM, то виртуальная машина не запустится. Это не совсем так.
Возможность настроить минимальное значение динамической памяти ниже стартового позволяет нам иметь большее количество одновременно запущенных машин на узле. Это конечно здорово, но что произойдёт в случае использования машинами всей памяти, если одну из машин потребуется перезагрузить? Для перезагрузки машине требуется выделить стартовое значение памяти, которое может быть выше минимального. При этом на хосте может не быть нужного количества свободной памяти и гипервизор не сможет забрать памяти у запущенных машин, так как все они активно ее используют.
Для этого случая в Windows Server 2012 появилась технология Smart Paging, которая дает возможность при недостатке памяти для загрузки виртуальной машины использовать файл подкачки на хосте (Smart Paging file).
Smart Paging вещь неоднозначная. Хотя он и обеспечивает гарантированный запуск виртуальных машин при отсутствии доступной физической памяти, при этом значительно понижается производительность, ведь скорости доступа к диску в разы меньше, чем к оперативной памяти. Поэтому использование смарт-пейджинга сильно ограничено. Smart Paging нельзя включить принудительно, он активируется только при совпадении нескольких факторов:
1) Виртуальная машина была перезагружена;
2) На хосте отсутствует доступная физическая память, необходимая для их запуска;
3) Нет возможности забрать память у других виртуальных машин, запущенных на этом хосте;
4) Суммарный запрашиваемый всеми запущенными машинами объём памяти превышает физическую не более чем в два раза.
Smart Paging не сработает, если:
1) Виртуальная машина запускается из выключенного состояния, а не была перезагружена;
2) Не хватает памяти для уже запущенной виртуальной машины;
3) Виртуальная машина перенесена при отказе одного из узлов кластера.
Для работы виртуальные машины имеют свой собственный файл подкачки, который и используют в случае нехватки памяти. Данный подход более эффективен, чем файл подкачки на хосте, так как диспетчер памяти внутри виртуальной машины лучше знает, какие процессы можно поместить в файл подкачки, а какие должны находится в оперативной памяти. Smart Paging используется исключительно для перезагрузки виртуальных машин.
Мониторинг
Мониторинг потребления памяти виртуальной машиной нужно осуществлять из хостовой системы. Тот же Task Manager в гостевой ОС всегда будет показывать пиковое значение, а не текущее. Увидеть, сколько фактически выделено памяти из гостевой ОС невозможно, для этого нужно использовать консоль Hyper-V Manager.
Для примера возьмем виртуальную машину TestVM. Как видно из показаний Hyper-V Manager, на данный момент она потребляет всего 512 МБ (Minimum RAM).
В самой же виртуальной машине картина другая. Task Manager показывает, что машине выделено 4Гб, из которых она потребляет 3.8 Гб. И еще, обратите внимание на незаметный параметр Maximum memory, который показывает максимальный объем памяти, доступный виртуальной машине. Правда есть он только в Windows 8 и Server 2012.
Поддерживаемые операционные системы
Для использования Dynamic Memory необходима поддержка как хостовой, так и гостевой системы. Вот список операционных систем, поддерживающих Dynamic Memory.
- Microsoft Windows Server 2008 R2 Standard, Enterprise, Datacenter SP1;
- Microsoft Hyper-V Server 2008 R2 SP1;
- Microsoft Windows Server 2012 Standard, Datacenter;
- Microsoft Windows 8 Pro, Enterprise.
Гостевые системы (после установки служб интеграции):
- Windows Server 2003 Standard, Web, Enterprise, Datacenter SP2;
- Windows Server 2008 Standard, Web, Enterprise, Datacenter SP2;
- Windows Server 2008 R2 Standard, Web, Enterprise, Datacenter SP1;
- Windows XP Professional SP3;
- Windows Vista Enterprise, Ultimate SP2;
- Windows 7 Enterprise, Ultimate SP1;
- Windows 8 Pro, Enterprise.
Заключение
Технология Dynamic Memory дает возможность представить оперативную память не в виде набора микросхем, а как свободно распределяемый ресурс. Однако надо понимать, что не смотря на всю гибкость настроек Dynamic Memory не позволяет выделить ресурсов больше, чем есть физически, а всего лишь помогает распределить имеющиеся ресурсы наилучшим образом.
Ну вот и все, что я хотел рассказать о динамической памяти. Надеюсь эта статья поможет вам в нелегком деле виртуализации 🙂
Ошибка Hyper-V исчерпала память, что лишит вас возможности создавать любые новые виртуальные машины или даже не позволит вам запустить существующие созданные виртуальные машины.
Эта проблема вызвала у пользователей много стресса, и это понятно.
Очень важно решить эту проблему, особенно если вам нужно, чтобы ваша виртуальная машина работала правильно для работы.
Вот что один пользователь из форумов Microsoft Technet сказал об этой проблеме:
Попытка запустить Windows Server в Hyper-V, но из-за ошибки 0x8007000e вышла ошибка. Даже предоставил 2 ГБ ОЗУ, но все тот же MSG. С нескольких минут он работал нормально, но теперь перестал работать.
Эта проблема, очевидно, вызвана объемом памяти, необходимого Hyper-V для запуска выбранных виртуальных машин. В сегодняшней статье мы рассмотрим некоторые из лучших проверенных методов для решения этой проблемы. Читайте дальше для более подробной информации.
Ваш Hyper-V исчерпал память? Вот исправление
1. Закройте все виртуальные машины, которые вам не нужны
Это позволит правильно распределить вашу оперативную память, чтобы без проблем запустить виртуальную машину, с которой вы работаете.
2. Выберите динамическую память для виртуальной машины и убедитесь, что оптимальные требования выполнены
В процессе настройки виртуальной машины очень важно, чтобы вы выбрали параметры динамической памяти для вашей настройки. Это позволит Hyper-V распределять объем оперативной памяти, доступной для наиболее важных процессов.
Вы должны иметь в виду, что даже динамические виртуальные машины имеют минимальные требования к памяти, объем, необходимый для оптимальной работы, и максимальный объем выделенной оперативной памяти.
Посетите эту ссылку для более подробного описания этого процесса.
3. Добавьте больше оперативной памяти на хост-компьютер и добавьте память в Hyper-V
Другой вариант исправления ошибки Hyper-V Run out of memory — добавить дополнительную оперативную память на хост-компьютер Hyper-V. Это, в свою очередь, позволит вам выделить больше оперативной памяти для виртуальной машины, которую вы пытаетесь использовать.
После того, как вы добавили больше оперативной памяти на хост-компьютер, выполните следующие действия, чтобы назначить новое значение для вашей виртуальной машины:
Вывод
Мы хотели бы знать, если вы нашли это руководство полезным. Пожалуйста, не стесняйтесь поделиться этой информацией с нами, используя раздел комментариев ниже.
У меня ошибка на моем сервере: "Недостаточно памяти в системе для запуска виртуальной машины. Недостаточно памяти (0x8007000E)" при запуске виртуальных машин объемом 8 ГБ на сервере с 12 ГБ ОЗУ БЕСПЛАТНО.
Вот мои настройки.
Характеристикихоста: 32 ГБ ОЗУ - процессор E3-1240v3 - 4 ТБ жесткого диска. Numa spanning включен.
Создано:
- 6 x 2 ГБ - 1 vCore - 100 ГБ HDD.
- 2 x 4 ГБ - 1 vCore - 100 ГБ HDD - Динамическая память включена с минимальным: 3,5 ГБ. Таким образом, это 20 ГБ для виртуальных машин (не считая динамической памяти) + оставьте 2,5 ГБ для хоста, так что общий объем составляет 22,5 ГБ, и у меня все еще остается около 11,5 ГБ на сервере.
Почему я не могу запустить виртуальную машину 8 ГБ? Любой комментарий приветствуется, я искал везде и, кажется, не может дать правильный ответ.
3 ответа
Вы исчерпали память. Вы должны зарезервировать некоторые для хоста и других процессов, и 2.5G не так уж много для Windows в качестве гипервизора. То, что память свободна, не означает, что она не подлежит резидентному распределению более важным хост-процессом, и гипервы справедливо объясняют это. Обычно никогда не бывает ситуаций, когда вы хотите, чтобы одна виртуальная машина искажала память хост-ОС.
Также учтите, что у вас могут быть проблемы с выделением памяти в запрашиваемых вами объемах. Я уверен, что ваши ассигнования не должны быть такими хорошими, как сейчас, так что вы могли бы легко отнять у вас другие рабочие нагрузки для размещения вашего хоста.
Включили ли вы охват NUMA в настройках HyperV? если не включить его, держу пари, что это решит вашу проблему.
По умолчанию Windows Server включает охват NUMA, что обеспечивает максимальную гибкость, поскольку виртуальные машины (ВМ) могут получать доступ к памяти и использовать ее на любом узле NUMA. Но это может привести к снижению производительности по сравнению с принуждением виртуальных машин использовать память на том же узле NUMA, что и ядра процессора.
Отключая охват NUMA, вы гарантируете, что виртуальные машины используют ядра памяти и процессора в одном и том же узле NUMA, обеспечивая наилучшую производительность. Это должно быть изменено только один раз, если вы, как администратор, чувствуете себя комфортно с NUMA и последствиями отключения, а также если у вас есть какой-то дополнительный пакет управления, который может помочь обеспечить наилучшую конфигурацию.
Чтобы настроить охват NUMA, откройте настройки Hyper-V, выберите опцию "Объединение NUMA" и отключите ее, я уверен, она будет решена; Я боролся с проблемой в течение недели и решил ее, отключив NUMA.
Я уверен, что это будет помечено как решенное путем отключения NUMA в диспетчере Hyper-V.
В этой статье предоставляется обходное решение проблемы, которая не позволяет Windows Server 2012 виртуальной машине на основе R2. Эта проблема возникает, даже несмотря на то, что диспетчер задач указывает на достаточное количество доступной памяти.
Применяется к: Windows Server 2012 R2
Исходный номер КБ: 2962295
Симптомы
' <Virtual Machine Name> не удалось инициализировать.
Недостаточно памяти в системе для запуска виртуальной машины <Virtual Machine Name> '
Кроме того, следующее событие регистрируется в журнале Microsoft-Windows-Hyper-V-VMMS-Admin.
Имя журнала: Microsoft-Windows-Hyper-V-VMMS-Admin
ID события: 19544
Уровень: ошибка
Описание:
Не удалось запустить виртуальную машину "Имя виртуальной машины", которая требовала xxxx МБ памяти, так как только xxxx МБ был доступен в системе (Виртуальный ID <Virtual Machine ID> машины).
Причина
Когда Windows Server 2012 R2, Hyper-V динамически оставляет минимальное количество памяти, необходимое для запуска операционной системы хост и любых приложений. Размер этого резервирования зависит от нескольких факторов.
Оставшаяся память доступна виртуальным машинам. Однако это количество отличается от того, что отображается в task Manager как "доступная память". Таким образом, виртуальная машина может не запускаться, даже если Hyper-V, как представляется, имеет достаточную память в соответствии с диспетчером задач.
Чтобы точно проверить доступную память для виртуальных машин, см. в разделе Обходное решение для использования объекта производительности и имени счетчика.
Обходной путь
Чтобы запустить виртуальную машину, либо освободим достаточную память на хост, либо в зависимости от доступности в зависимости от счетчика производительности, упомянутого ниже.
Следующий счетчик производительности можно использовать для явной проверки того, сколько памяти доступно для виртуальных машин:
Hyper-V динамического балансира памяти \ доступной памяти
- Имя экземпляра — "System Balancer".
- Значение Hyper-V динамического балансиры памяти зависит от количества памяти, используемой приложением, установленным в хосте Hyper-V, и от количества, используемого \ vmwp.exe.
Счетчик показывает, сколько памяти доступно для запуска виртуальной машины. Поэтому, если вы столкнулись с этой проблемой, доступная память, показанная в диспетчере задач, не помогает. Однако доступная память, показанная в счетчике производительности, может указывать на фактическую доступную память для Hyper-V.
При размещении виртуальных рабочих нагрузок наиболее важным для общей производительности аппаратным ресурсом является, пожалуй, физическая память. Крайне важно распределять память так, чтобы каждая виртуальная машина (ВМ) располагала необходимой ей памятью, но при этом память не тратилась бы без толку. Ниже приведены несколько ключевых соображений для распределения памяти при работе с Microsoft Hyper-V.
Соображения архитектуры NUMA
Управление памятью для Hyper-V является своего рода искусством. Необходимо гарантировать, что каждой ВМ будет предоставлен адекватный объем памяти. В то же время необходимо избежать предоставления ВМ большего объема памяти, чем необходимо.
Причины этого представляются очевидными. Выделение избыточной памяти одной ВМ ограничивает объем памяти, который можно выделить другим ВМ на том же сервере. Но порой выделение ВМ чрезмерной памяти может также и снизить ее производительность.
Большинство новых серверов используют память с архитектурой неоднородного доступа (NUMA). Память NUMA разработана для улучшения производительности путем выделения памяти отдельным процессорам. Отдельные блоки выделенной памяти известны как узлы NUMA. ЦП может выполнять доступ к своему локальному узлу NUMA (памяти, непосредственно выделенной данному ЦП) быстрее, чем к прочим узлам NUMA.
Версии Hyper-V для Windows Server 2008 и 2008 R2 не поддерживают соответствие памяти узлам NUMA напрямую. Другими словами, ВМ нельзя напрямую настроить на использование определенного узла NUMA. Сообщается, что эта возможность будет существовать в версии Hyper-V для Windows Server 8. Тем не менее, возможно предпринять действия, сокращающие шансы использования нелокального узла NUMA ВМ.
Фокус в том, чтобы рассчитать размер каждого узла NUMA. Например, предположим, что наш сервер снабжен двумя восьмиядерными процессорами и 128 ГБ ОЗУ. Размер узла NUMA можно рассчитать, разделив объем памяти (128 ГБ) на число ядер ЦП (16). В данном конкретном случае размер узла NUMA будет составлять 8 ГБ.
Hyper-V пока не позволяет нам назначить определенный узел NUMA определенной ВМ. Однако, поскольку известно, что размер узлов NUMA на данном сервере составляет 8 ГБ, можно догадаться, что любая ВМ, которой выделено более 8 ГБ памяти, будет использовать память из нескольких узлов NUMA. Ограничение памяти, выделяемой ВМ, 8 ГБ или менее (в рассматриваемом случае) увеличивает шансы, что ВМ будет использовать память из единственного узла NUMA, тем самым повышая производительность.
Издержки Hyper-V
Узлы NUMA – не единственный фактор, который следует учесть при управлении памятью. При планировании способов использования памяти несущего сервера крайне важно учесть издержки, связанные с виртуализацией. В отношении этих издержек нужно учесть два основные фактора. Во-первых, родительский раздел требует выделения памяти.
Необходимо зарезервировать минимум 300 МБ для низкоуровневой оболочки и 512 МБ для несущей ОС, работающей в родительском разделе. Однако большинство рекомендаций утверждают, что для родительского раздела следует зарезервировать 2 ГБ.
Несущий раздел следует использовать только для Hyper-V (хотя в нем также можно запускать ПО инфраструктуры и безопасности, такое как агенты управления, агенты резервного копирования и брандмауэры). Следовательно, рекомендованный объем в 2 ГБ предполагает, что родительский раздел не будет использоваться для дополнительных приложений или ролей сервера.
Hyper-V не позволяет выделять напрямую несущему разделу. По сути, он использует то, что останется. Поэтому следует помнить, что 2 ГБ памяти несущего сервера следует оставить невыделенными, чтобы они были доступны родительскому разделу.
Выделение памяти гостевым машинам
Другой фактор издержек памяти, который следует учесть, — это использование ВМ небольшого объема памяти для служб интеграции и других процессов, связанных с виртуализацией. Этот объем памяти довольно незначителен, так что обычно нет нужды волноваться о выделении для него дополнительной памяти, если только не планируется предоставить каждой ВМ лишь минимально необходимую память.
ВМ с 1 ГБ ОЗУ или менее используют только около 32 МБ памяти на издержки, связанные с виртуализацией. Сюда следует добавлять 8 МБ за каждый дополнительный гигабайт ОЗУ. Например, ВМ с 2 ГБ ОЗУ будет использовать 40 МБ (32+8) памяти на издержки, связанные с виртуализацией. Аналогично, ВМ с 4 ГБ памяти будет терять таким образом 64 МБ.
Динамическая память
В Windows Server 2008 R2 с пакетом обновления 1 была представлена новая функция динамической памяти, позволявшая ВМ потреблять память динамически, в зависимости от текущей нагрузки. Это также позволяет использовать физическую память сервера сверх обычного, для использования большего числа ВМ, чем было бы возможно иначе. Несмотря на все преимущества динамической памяти, при ее использовании важно следовать некоторым правилам, чтобы избежать недостатка памяти у ВМ.
Во-первых, не во всех случаях использование динамической памяти оптимально. Включать или отключать динамическую память можно для каждой отдельной ВМ. Важно включать ее лишь для тех ВМ, которым она действительно может пригодиться.
Одним из наиболее важных соображений здесь является рабочая нагрузка ВМ. Если приложение на ВМ разработано для использования фиксированного объема памяти, лучше дать ВМ именно тот объем памяти, который нужен этому приложению, вместо использования динамической памяти.
То же касается приложений, требующих большого объема памяти. Некоторые приложения разработаны так, чтобы потреблять столько памяти, сколько возможно. Такие приложения могут быстро поглотить всю физическую память сервера, если им разрешено использовать динамическую память. ВМ, на которых работают приложения таких типов, лучше выделять фиксированный объем памяти.
Наконец, производительность сервера может пострадать, если ВМ попытается использовать память из нескольких узлов NUMA. Следовательно, если сервер использует память архитектуры NUMA и производительность является важной проблемой, может быть необходимо воздержаться от использования динамической памяти.
ОЗУ для запуска
Одной из наиболее важных для понимания концепций в области динамической памяти является ОЗУ для запуска. При использовании динамической памяти каждой ВМ необходимо назначить ее значение ОЗУ для запуска. Это значение отражает объем физической памяти, который ВМ будет первоначально использовать после загрузки. Что более важно, ОЗУ для запуска также представляет минимальный объем физической памяти, потребляемый ВМ. Использование памяти ВМ не может быть ниже значения ОЗУ для запуска.
Учитывая это, корпорация Майкрософт рекомендует избегать назначения ВМ больших объемов ОЗУ для запуска. ОЗУ для запуска лучше всего основать на ОС, используемой ВМ. Корпорация Майкрософт рекомендует использовать 512 МБ ОЗУ для запуска ВМ, использующих Windows 7, Windows Vista, Windows Server 2008 и Windows Server 2008 R2. Если ВМ будут использовать Windows Server 2003 или Windows Server 2003 R2, корпорация Майкрософт рекомендует 128 МБ ОЗУ для запуска.
Для использования ВМ динамической памяти последняя должна поддерживаться ОС, работающей на этой ВМ. Windows XP не поддерживает динамическую память. При попытке запустить Windows XP на ВМ, настроенной для использования динамической памяти, ОС может получить доступ только к ОЗУ для запуска.
Перед переходом к другим задачам конфигурации важно убедиться, что общая сумма ОЗУ для запуска, выделенная всем существующим ВМ, не превышает физический объем ОЗУ на сервере. В ином случае нужно будет либо удалить часть ВМ, либо добавить памяти.
Также может понадобиться скорректировать значение максимального объема ОЗУ. Это значение указывает верхний предел физической памяти, который может использовать ВМ. По умолчанию Hyper-V устанавливает максимальный объем ОЗУ каждой ВМ на 64 ГБ. Если некоторые ВМ не требуют столько физической памяти, может потребоваться снизить значение максимального объема ОЗУ.
Вес памяти
Вся суть идеи динамической памяти состоит в возможности более интенсивного использования памяти. Она позволяет ВМ получать доступ к памяти, которая им нужна, когда она им нужна. Большим недостатком интенсивного использования любого аппаратного ресурса является возможность его исчерпания в определенный момент. В случае динамической памяти ВМ вполне могут поглотить всю доступную физическую память и потребовать еще.
Долгосрочным решением для этой проблемы является обеспечение сервера достаточной памятью для обслуживания требований ВМ. Временным же решением является приоритизация использования памяти.
Почти на всех несущих серверах имеются ВМ, которые важнее других. Hyper-V позволяет определять приоритетность ВМ, так что в случае недостатка физической памяти память будет выделяться ВМ с более высоким приоритетом в первую очередь. Определить приоритет потребности ВМ в динамической памяти можно, корректируя ее вес памяти. ВМ с более высоким весом памяти имеют приоритет перед ВМ в меньшими весами памяти.
Другой параметр, который необходимо настроить для каждой ВМ, использующей динамическую память, – буфер памяти. Параметр буфера памяти контролирует, сколько памяти каждой ВМ следует попытаться зарезервировать в качестве буфера. Это значение выражается как процент. Например, если ВМ использует 4 ГБ выделенной памяти, а буфер памяти установлен на 50 процентов, ВМ может поглотить до 6 ГБ памяти.
Буфер памяти не гарантирует, что память в буфере будет доступна для ВМ. Он просто контролирует, сколько памяти ВМ следует попытаться запросить. Следует отметить, что поскольку буфер памяти выражается как процент, объем памяти в буфере меняется в соответствии с объемом памяти, используемой ВМ в конкретный момент времени. Все ВМ, использующие динамическую память, запускаются используя минимальный объем памяти. Они динамически корректируют использование памяти в зависимости от требований, предъявляемых к их памяти рабочими нагрузками.
Конфигурация памяти
Собственно процесс настройки использования памяти ВМ прост. Откройте диспетчер Hyper-V и щелкните правой кнопкой мыши ВМ (поскольку память каждой ВМ управляется независимо). Выберите команду «Параметры» из контекстного меню. При появлении диалогового окна «Параметры» щелкните «Память».
Hyper-V предоставляет возможность либо выделить ВМ статический объем памяти, либо использовать динамическую память (см. рис. 1). При выборе динамической памяти параметры ОЗУ для запуска, максимального объема ОЗУ, буфера памяти и веса памяти можно настроить прямо в диалоговом окне «Параметры».
Рис. 1. Выделение памяти для виртуальной машины можно скорректировать через диалоговое окно «Параметры».
Если ресурсы физической памяти несущего сервера ограничены, обычно необходим компромисс между использованием статической и динамической памяти. Статическая память обычно обеспечивает лучшую производительность в целом (при адекватном выделении памяти). Динамическая память может вызвать сложности, но она обычно допускает большую плотность ВМ.
Читайте также: